/**************************************************************************** * Copyright (c) 2017-2022 by the ArborX authors * * All rights reserved. * * * * This file is part of the ArborX library. ArborX is * * distributed under a BSD 3-clause license. For the licensing terms see * * the LICENSE file in the top-level directory. * * * * SPDX-License-Identifier: BSD-3-Clause * ****************************************************************************/ #ifndef ARBORX_TRAVERSAL_POLICY_HPP #define ARBORX_TRAVERSAL_POLICY_HPP namespace ArborX { namespace Experimental { struct TraversalPolicy { // Buffer size lets a user provide an upper bound for the number of results // per query. If the guess is accurate, it avoids performing the tree // traversals twice (the first one to count the number of results per query, // the second to actually write down the results at the right location in // the flattened array) // // The default value zero disables the buffer optimization. The sign of the // integer is used to specify the policy in the case the size insufficient. // If it is positive, the code falls back to the default behavior and // performs a second pass. If it is negative, it throws an exception. int _buffer_size = 0; // Sort predicates allows disabling predicate sorting. bool _sort_predicates = true; TraversalPolicy &setBufferSize(int buffer_size) { _buffer_size = buffer_size; return *this; } TraversalPolicy &setPredicateSorting(bool sort_predicates) { _sort_predicates = sort_predicates; return *this; } }; } // namespace Experimental } // namespace ArborX #endif