MCPcopy Create free account
hub / github.com/apache/arrow / AddArraySortingKernels

Function AddArraySortingKernels

cpp/src/arrow/compute/kernels/vector_array_sort.cc:570–612  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

568
569template <template <typename...> class ExecTemplate>
570void AddArraySortingKernels(VectorKernel base, VectorFunction* func) {
571 // null type
572 base.signature = KernelSignature::Make({null()}, uint64());
573 base.exec = ExecTemplate<UInt64Type, NullType>::Exec;
574 DCHECK_OK(func->AddKernel(base));
575
576 // bool type
577 base.signature = KernelSignature::Make({boolean()}, uint64());
578 base.exec = ExecTemplate<UInt64Type, BooleanType>::Exec;
579 DCHECK_OK(func->AddKernel(base));
580
581 // duration type
582 base.signature = KernelSignature::Make({Type::DURATION}, uint64());
583 base.exec = GenerateNumeric<ExecTemplate, UInt64Type>(*int64());
584 DCHECK_OK(func->AddKernel(base));
585
586 for (const auto& ty : NumericTypes()) {
587 auto physical_type = GetPhysicalType(ty);
588 base.signature = KernelSignature::Make({ty}, uint64());
589 base.exec = GenerateNumeric<ExecTemplate, UInt64Type>(*physical_type);
590 DCHECK_OK(func->AddKernel(base));
591 }
592 for (const auto& ty : TemporalTypes()) {
593 auto physical_type = GetPhysicalType(ty);
594 base.signature = KernelSignature::Make({ty->id()}, uint64());
595 base.exec = GenerateNumeric<ExecTemplate, UInt64Type>(*physical_type);
596 DCHECK_OK(func->AddKernel(base));
597 }
598 for (const auto id : {Type::DECIMAL128, Type::DECIMAL256}) {
599 base.signature = KernelSignature::Make({id}, uint64());
600 base.exec = GenerateDecimal<ExecTemplate, UInt64Type>(id);
601 DCHECK_OK(func->AddKernel(base));
602 }
603 for (const auto& ty : BaseBinaryTypes()) {
604 auto physical_type = GetPhysicalType(ty);
605 base.signature = KernelSignature::Make({ty}, uint64());
606 base.exec = GenerateVarBinaryBase<ExecTemplate, UInt64Type>(*physical_type);
607 DCHECK_OK(func->AddKernel(base));
608 }
609 base.signature = KernelSignature::Make({Type::FIXED_SIZE_BINARY}, uint64());
610 base.exec = ExecTemplate<UInt64Type, FixedSizeBinaryType>::Exec;
611 DCHECK_OK(func->AddKernel(base));
612}
613
614template <template <typename...> class ExecTemplate>
615void AddDictArraySortingKernels(VectorKernel base, VectorFunction* func) {

Callers

nothing calls this directly

Calls 4

GetPhysicalTypeFunction · 0.85
MakeFunction · 0.50
AddKernelMethod · 0.45
idMethod · 0.45

Tested by

no test coverage detected