Squashed 'third_party/immer/' content from commit ad3e3556d
git-subtree-dir: third_party/immer git-subtree-split: ad3e3556d38bb75966dd24c61a774970a7c7957e
This commit is contained in:
commit
7f19d64164
311 changed files with 74223 additions and 0 deletions
93
immer/config.hpp
Normal file
93
immer/config.hpp
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
//
|
||||
// immer: immutable data structures for C++
|
||||
// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente
|
||||
//
|
||||
// This software is distributed under the Boost Software License, Version 1.0.
|
||||
// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#if defined(__has_cpp_attribute)
|
||||
#if __has_cpp_attribute(nodiscard)
|
||||
#define IMMER_NODISCARD [[nodiscard]]
|
||||
#endif
|
||||
#else
|
||||
#if _MSVC_LANG >= 201703L
|
||||
#define IMMER_NODISCARD [[nodiscard]]
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef IMMER_NODISCARD
|
||||
#define IMMER_NODISCARD
|
||||
#endif
|
||||
|
||||
#ifndef IMMER_TAGGED_NODE
|
||||
#ifdef NDEBUG
|
||||
#define IMMER_TAGGED_NODE 0
|
||||
#else
|
||||
#define IMMER_TAGGED_NODE 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if IMMER_TAGGED_NODE
|
||||
#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
|
||||
#else
|
||||
#define IMMER_ASSERT_TAGGED(assertion)
|
||||
#endif
|
||||
|
||||
#ifndef IMMER_DEBUG_TRACES
|
||||
#define IMMER_DEBUG_TRACES 0
|
||||
#endif
|
||||
|
||||
#ifndef IMMER_DEBUG_PRINT
|
||||
#define IMMER_DEBUG_PRINT 0
|
||||
#endif
|
||||
|
||||
#ifndef IMMER_DEBUG_DEEP_CHECK
|
||||
#define IMMER_DEBUG_DEEP_CHECK 0
|
||||
#endif
|
||||
|
||||
#if IMMER_DEBUG_TRACES || IMMER_DEBUG_PRINT
|
||||
#include <iostream>
|
||||
#include <prettyprint.hpp>
|
||||
#endif
|
||||
|
||||
#if IMMER_DEBUG_TRACES
|
||||
#define IMMER_TRACE(...) std::cout << __VA_ARGS__ << std::endl
|
||||
#else
|
||||
#define IMMER_TRACE(...)
|
||||
#endif
|
||||
#define IMMER_TRACE_F(...) \
|
||||
IMMER_TRACE(__FILE__ << ":" << __LINE__ << ": " << __VA_ARGS__)
|
||||
#define IMMER_TRACE_E(expr) IMMER_TRACE(" " << #expr << " = " << (expr))
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#define IMMER_UNREACHABLE __assume(false)
|
||||
#define IMMER_LIKELY(cond) cond
|
||||
#define IMMER_UNLIKELY(cond) cond
|
||||
#define IMMER_FORCEINLINE __forceinline
|
||||
#define IMMER_PREFETCH(p)
|
||||
#else
|
||||
#define IMMER_UNREACHABLE __builtin_unreachable()
|
||||
#define IMMER_LIKELY(cond) __builtin_expect(!!(cond), 1)
|
||||
#define IMMER_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
|
||||
#define IMMER_FORCEINLINE inline __attribute__((always_inline))
|
||||
#define IMMER_PREFETCH(p)
|
||||
// #define IMMER_PREFETCH(p) __builtin_prefetch(p)
|
||||
#endif
|
||||
|
||||
#define IMMER_DESCENT_DEEP 0
|
||||
|
||||
#ifdef NDEBUG
|
||||
#define IMMER_ENABLE_DEBUG_SIZE_HEAP 0
|
||||
#else
|
||||
#define IMMER_ENABLE_DEBUG_SIZE_HEAP 1
|
||||
#endif
|
||||
|
||||
namespace immer {
|
||||
|
||||
const auto default_bits = 5;
|
||||
const auto default_free_list_size = 1 << 10;
|
||||
|
||||
} // namespace immer
|
||||
Loading…
Add table
Add a link
Reference in a new issue