RNA: add array get/set functions that limit the number of elements
Add the corresponding int/boolean functions for
RNA_property_float_{get/set}_array_at_most functions.
This commit is contained in:
@@ -418,8 +418,16 @@ bool RNA_property_update_check(PropertyRNA *prop);
|
||||
bool RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop);
|
||||
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value);
|
||||
void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, bool *values);
|
||||
void RNA_property_boolean_get_array_at_most(PointerRNA *ptr,
|
||||
PropertyRNA *prop,
|
||||
bool *values,
|
||||
int values_num);
|
||||
bool RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index);
|
||||
void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const bool *values);
|
||||
void RNA_property_boolean_set_array_at_most(PointerRNA *ptr,
|
||||
PropertyRNA *prop,
|
||||
const bool *values,
|
||||
int values_num);
|
||||
void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, bool value);
|
||||
bool RNA_property_boolean_get_default(PointerRNA *ptr, PropertyRNA *prop);
|
||||
void RNA_property_boolean_get_default_array(PointerRNA *ptr, PropertyRNA *prop, bool *values);
|
||||
@@ -428,10 +436,18 @@ bool RNA_property_boolean_get_default_index(PointerRNA *ptr, PropertyRNA *prop,
|
||||
int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop);
|
||||
void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value);
|
||||
void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values);
|
||||
void RNA_property_int_get_array_at_most(PointerRNA *ptr,
|
||||
PropertyRNA *prop,
|
||||
int *values,
|
||||
int values_num);
|
||||
void RNA_property_int_get_array_range(PointerRNA *ptr, PropertyRNA *prop, int values[2]);
|
||||
int RNA_property_int_get_index(PointerRNA *ptr, PropertyRNA *prop, int index);
|
||||
void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values);
|
||||
void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value);
|
||||
void RNA_property_int_set_array_at_most(PointerRNA *ptr,
|
||||
PropertyRNA *prop,
|
||||
const int *values,
|
||||
int values_num);
|
||||
int RNA_property_int_get_default(PointerRNA *ptr, PropertyRNA *prop);
|
||||
bool RNA_property_int_set_default(PropertyRNA *prop, int value);
|
||||
void RNA_property_int_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values);
|
||||
|
||||
@@ -2585,6 +2585,22 @@ void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, bool *va
|
||||
rna_property_boolean_get_default_array_values(ptr, bprop, values);
|
||||
}
|
||||
}
|
||||
void RNA_property_boolean_get_array_at_most(PointerRNA *ptr,
|
||||
PropertyRNA *prop,
|
||||
bool *values,
|
||||
int values_num)
|
||||
{
|
||||
BLI_assert(values_num >= 0);
|
||||
const int array_num = RNA_property_array_length(ptr, prop);
|
||||
if (values_num >= array_num) {
|
||||
RNA_property_boolean_get_array(ptr, prop, values);
|
||||
return;
|
||||
}
|
||||
|
||||
blender::Array<bool, RNA_STACK_ARRAY> value_buf(array_num);
|
||||
RNA_property_boolean_get_array(ptr, prop, value_buf.data());
|
||||
memcpy(values, value_buf.data(), sizeof(*values) * values_num);
|
||||
}
|
||||
|
||||
bool RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index)
|
||||
{
|
||||
@@ -2672,6 +2688,23 @@ void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const bo
|
||||
}
|
||||
}
|
||||
}
|
||||
void RNA_property_boolean_set_array_at_most(PointerRNA *ptr,
|
||||
PropertyRNA *prop,
|
||||
const bool *values,
|
||||
int values_num)
|
||||
{
|
||||
BLI_assert(values_num >= 0);
|
||||
const int array_num = RNA_property_array_length(ptr, prop);
|
||||
if (values_num >= array_num) {
|
||||
RNA_property_boolean_set_array(ptr, prop, values);
|
||||
return;
|
||||
}
|
||||
|
||||
blender::Array<bool, RNA_STACK_ARRAY> value_buf(array_num);
|
||||
RNA_property_boolean_get_array(ptr, prop, value_buf.data());
|
||||
memcpy(value_buf.data(), values, sizeof(*values) * values_num);
|
||||
RNA_property_boolean_set_array(ptr, prop, value_buf.data());
|
||||
}
|
||||
|
||||
void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, bool value)
|
||||
{
|
||||
@@ -2928,6 +2961,22 @@ void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values)
|
||||
rna_property_int_get_default_array_values(ptr, iprop, values);
|
||||
}
|
||||
}
|
||||
void RNA_property_int_get_array_at_most(PointerRNA *ptr,
|
||||
PropertyRNA *prop,
|
||||
int *values,
|
||||
int values_num)
|
||||
{
|
||||
BLI_assert(values_num >= 0);
|
||||
const int array_num = RNA_property_array_length(ptr, prop);
|
||||
if (values_num >= array_num) {
|
||||
RNA_property_int_get_array(ptr, prop, values);
|
||||
return;
|
||||
}
|
||||
|
||||
blender::Array<int, RNA_STACK_ARRAY> value_buf(array_num);
|
||||
RNA_property_int_get_array(ptr, prop, value_buf.data());
|
||||
memcpy(values, value_buf.data(), sizeof(*values) * values_num);
|
||||
}
|
||||
|
||||
void RNA_property_int_get_array_range(PointerRNA *ptr, PropertyRNA *prop, int values[2])
|
||||
{
|
||||
@@ -3031,6 +3080,23 @@ void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *v
|
||||
}
|
||||
}
|
||||
}
|
||||
void RNA_property_int_set_array_at_most(PointerRNA *ptr,
|
||||
PropertyRNA *prop,
|
||||
const int *values,
|
||||
int values_num)
|
||||
{
|
||||
BLI_assert(values_num >= 0);
|
||||
const int array_num = RNA_property_array_length(ptr, prop);
|
||||
if (values_num >= array_num) {
|
||||
RNA_property_int_set_array(ptr, prop, values);
|
||||
return;
|
||||
}
|
||||
|
||||
blender::Array<int, RNA_STACK_ARRAY> value_buf(array_num);
|
||||
RNA_property_int_get_array(ptr, prop, value_buf.data());
|
||||
memcpy(value_buf.data(), values, sizeof(*values) * values_num);
|
||||
RNA_property_int_set_array(ptr, prop, value_buf.data());
|
||||
}
|
||||
|
||||
void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user