#pragma once #include #if HAVE_BOEHMGC #define GC_INCLUDE_NEW #include #include #include #endif namespace nix { struct Value; /** * A GC compatible vector that may used a reserved portion of `nItems` on the stack instead of allocating on the heap. */ #if HAVE_BOEHMGC template using SmallVector = boost::container::small_vector>; #else template using SmallVector = boost::container::small_vector; #endif /** * A vector of value pointers. See `SmallVector`. */ template using SmallValueVector = SmallVector; /** * A vector of values that must not be referenced after the vector is destroyed. * * See also `SmallValueVector`. */ template using SmallTemporaryValueVector = SmallVector; }