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

Function MakeBinaryRoundFunction

cpp/src/arrow/compute/kernels/scalar_round.cc:1277–1295  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1275
1276template <template <typename, RoundMode, typename...> class Op, typename OptionsType>
1277std::shared_ptr<ScalarFunction> MakeBinaryRoundFunction(const std::string& name,
1278 FunctionDoc doc) {
1279 static const OptionsType kDefaultOptions = OptionsType::Defaults();
1280 auto func = std::make_shared<RoundFunction>(name, Arity::Binary(), std::move(doc),
1281 &kDefaultOptions);
1282 RoundKernelGenerator<Op, RoundBinaryKernel, OptionsType> kernel_generator;
1283 for (const auto& tys : {NumericTypes(), {decimal128(1, 0), decimal256(1, 0)}}) {
1284 for (const auto& ty : tys) {
1285 ArrayKernelExec exec = nullptr;
1286 KernelInit init;
1287 DCHECK_OK(VisitTypeInline(*ty, &kernel_generator, &exec, &init));
1288 DCHECK_OK(func->AddKernel(
1289 {InputType(ty->id()), Type::INT32},
1290 is_decimal(ty->id()) ? OutputType(FirstType) : OutputType(ty), exec, init));
1291 }
1292 }
1293 AddNullExec(func.get());
1294 return func;
1295}
1296
1297template <typename Op, typename FunctionImpl = RoundFloatingPointFunction>
1298std::shared_ptr<ScalarFunction> MakeUnaryRoundFunctionFloatingPoint(std::string name,

Callers

nothing calls this directly

Calls 12

decimal256Function · 0.85
VisitTypeInlineFunction · 0.85
InputTypeFunction · 0.85
OutputTypeFunction · 0.85
AddNullExecFunction · 0.85
DefaultsFunction · 0.50
BinaryFunction · 0.50
decimal128Function · 0.50
is_decimalFunction · 0.50
AddKernelMethod · 0.45
idMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected