#ifndef SRC_TRACE_PROCESSOR_DB_COLUMN_UTILS_H_
#define SRC_TRACE_PROCESSOR_DB_COLUMN_UTILS_H_
#include <algorithm>
#include <cstdint>
#include <functional>
#include <limits>
#include <optional>
#include <type_traits>
#include <vector>
#include "perfetto/base/logging.h"
#include "perfetto/trace_processor/basic_types.h"
#include "src/trace_processor/containers/bit_vector.h"
#include "src/trace_processor/db/column/data_layer.h"
#include "src/trace_processor/db/column/types.h"
namespace perfetto::trace_processor::column::utils {
namespace internal {
template <typename T, typename Comparator>
SingleSearchResult SingleSearchNumeric(T left, const SqlValue& right_v) { … }
}
template <typename Comparator, typename ValType, typename DataType>
void LinearSearchWithComparator(ValType val,
const DataType* data_ptr,
Comparator comparator,
BitVector::Builder& builder) { … }
template <typename Comparator, typename ValType, typename DataType>
void IndexSearchWithComparator(ValType val,
const DataType* data_ptr,
DataLayerChain::Indices& indices,
Comparator comparator) { … }
template <typename T>
SingleSearchResult SingleSearchNumeric(FilterOp op,
T left,
const SqlValue& right_v) { … }
SearchValidationResult CompareIntColumnWithDouble(FilterOp op,
SqlValue* sql_val);
std::optional<Range> CanReturnEarly(SearchValidationResult, Range);
std::optional<Range> CanReturnEarly(SearchValidationResult,
uint32_t indices_size);
bool CanReturnEarly(SearchValidationResult res,
DataLayerChain::Indices& indices);
std::vector<uint32_t> ExtractPayloadForTesting(std::vector<Token>&);
std::vector<uint32_t> ToIndexVectorForTests(RangeOrBitVector&);
std::vector<uint32_t> ExtractPayloadForTesting(const DataLayerChain::Indices&);
}
#endif