14 : type_(type), owns_value_(make_value_copy)
16 if (make_value_copy) {
18 type.copy_construct(value, copied_value);
24 builder.single_output(
"Value", type);
31 signature_.
params[0].type.data_type().single_type().destruct(
const_cast<void *
>(value_));
52 if (_other ==
nullptr) {
55 if (type_ != _other->type_) {
58 return type_.
is_equal(value_, _other->value_);
65 builder.vector_output(
"Value", type);
74 mask.foreach_index([&](
const int64_t i) { vectors.
extend(i, array_); });
79 : output_amount_(output_types.size())
82 for (
DataType data_type : input_types) {
83 builder.input(
"Input", data_type);
85 for (
DataType data_type : output_types) {
86 builder.output(
"Output", data_type);
109 builder.input(
"Input", data_type);
110 builder.output(
"Output", data_type);
119 const GVArray &inputs =
params.readonly_single_input(0,
"Input");
121 inputs.materialize_to_uninitialized(mask, outputs.data());
127 outputs.extend(mask, inputs);
uint64_t hash_or_fallback(const void *value, uint64_t fallback_hash) const
bool is_equal(const void *a, const void *b) const
void fill_construct_indices(const void *value, void *dst, const IndexMask &mask) const
const CPPType & type() const
void extend(int64_t index, const GVArray &values)
CustomMF_DefaultOutput(Span< DataType > input_types, Span< DataType > output_types)
void call(const IndexMask &mask, Params params, Context context) const override
void call(const IndexMask &mask, Params params, Context context) const override
CustomMF_GenericConstantArray(GSpan array)
CustomMF_GenericConstant(const CPPType &type, const void *value, bool make_value_copy)
~CustomMF_GenericConstant()
uint64_t hash() const override
bool equals(const MultiFunction &other) const override
void call(const IndexMask &mask, Params params, Context context) const override
CustomMF_GenericCopy(DataType data_type)
void call(const IndexMask &mask, Params params, Context context) const override
Category category() const
void set_signature(const Signature *signature)
ParamType param_type(int param_index) const
IndexRange param_indices() const
const DataType & data_type() const
void * MEM_mallocN_aligned(size_t len, size_t alignment, const char *str)
void MEM_freeN(void *vmemh)
_W64 unsigned int uintptr_t
unsigned __int64 uint64_t
Vector< ParamInfo > params