Blender V5.0
bpy_rna_array.cc File Reference
#include <Python.h>
#include "CLG_log.h"
#include "BLI_utildefines.h"
#include "RNA_types.hh"
#include "bpy_rna.hh"
#include "MEM_guardedalloc.h"
#include "RNA_access.hh"
#include "BPY_extern_clog.hh"
#include "../generic/py_capi_utils.hh"
#include "../mathutils/mathutils.hh"

Go to the source code of this file.

Classes

struct  ItemConvertArgData
struct  ItemConvert_FuncArg

Macros

#define USE_MATHUTILS
#define MAX_ARRAY_DIMENSION   10

Typedefs

using ItemConvertFunc = void (*)(const ItemConvertArgData *arg, PyObject *py_data, char *data)
using ItemTypeCheckFunc = int (*)(PyObject *py_data)
using RNA_SetArrayFunc = void (*)(PointerRNA *ptr, PropertyRNA *prop, const char *data)
using RNA_SetIndexFunc = void (*)(PointerRNA *ptr, PropertyRNA *prop, int index, void *data_item)

Functions

static int validate_array_type (PyObject *seq, int dim, int totdim, int dimsize[], const bool is_dynamic, ItemTypeCheckFunc check_item_type, const char *item_type_str, const char *error_prefix)
static int count_items (PyObject *seq, int dim)
static int validate_array_length (PyObject *rvalue, PointerRNA *ptr, PropertyRNA *prop, const bool prop_is_param_dyn_alloc, int lvalue_dim, int *r_totitem, const char *error_prefix)
static int validate_array (PyObject *rvalue, PointerRNA *ptr, PropertyRNA *prop, const bool prop_is_param_dyn_alloc, int lvalue_dim, ItemTypeCheckFunc check_item_type, const char *item_type_str, int *r_totitem, const char *error_prefix)
static char * copy_value_single (PyObject *item, PointerRNA *ptr, PropertyRNA *prop, char *data, uint item_size, int *index, const ItemConvert_FuncArg *convert_item, RNA_SetIndexFunc rna_set_index)
static char * copy_values (PyObject *seq, PointerRNA *ptr, PropertyRNA *prop, int dim, char *data, uint item_size, int *index, const ItemConvert_FuncArg *convert_item, RNA_SetIndexFunc rna_set_index)
static int py_to_array (PyObject *seq, PointerRNA *ptr, PropertyRNA *prop, char *param_data, ItemTypeCheckFunc check_item_type, const char *item_type_str, int item_size, const ItemConvert_FuncArg *convert_item, RNA_SetArrayFunc rna_set_array, const char *error_prefix)
static int py_to_array_index (PyObject *py, PointerRNA *ptr, PropertyRNA *prop, int lvalue_dim, int arrayoffset, int index, ItemTypeCheckFunc check_item_type, const char *item_type_str, const ItemConvert_FuncArg *convert_item, RNA_SetIndexFunc rna_set_index, const char *error_prefix)
static void py_to_float (const ItemConvertArgData *arg, PyObject *py, char *data)
static void py_to_int (const ItemConvertArgData *arg, PyObject *py, char *data)
static void py_to_bool (const ItemConvertArgData *, PyObject *py, char *data)
static int py_float_check (PyObject *py)
static int py_int_check (PyObject *py)
static int py_bool_check (PyObject *py)
static void float_set_index (PointerRNA *ptr, PropertyRNA *prop, int index, void *value)
static void int_set_index (PointerRNA *ptr, PropertyRNA *prop, int index, void *value)
static void bool_set_index (PointerRNA *ptr, PropertyRNA *prop, int index, void *value)
static void convert_item_init_float (PointerRNA *ptr, PropertyRNA *prop, ItemConvert_FuncArg *convert_item)
static void convert_item_init_int (PointerRNA *ptr, PropertyRNA *prop, ItemConvert_FuncArg *convert_item)
static void convert_item_init_bool (PointerRNA *, PropertyRNA *, ItemConvert_FuncArg *convert_item)
int pyrna_py_to_array (PointerRNA *ptr, PropertyRNA *prop, char *param_data, PyObject *py, const char *error_prefix)
int pyrna_py_to_array_index (PointerRNA *ptr, PropertyRNA *prop, int arraydim, int arrayoffset, int index, PyObject *py, const char *error_prefix)
PyObject * pyrna_array_index (PointerRNA *ptr, PropertyRNA *prop, int index)
PyObject * pyrna_py_from_array_index (BPy_PropertyArrayRNA *self, PointerRNA *ptr, PropertyRNA *prop, int index)
PyObject * pyrna_py_from_array (PointerRNA *ptr, PropertyRNA *prop)
int pyrna_array_contains_py (PointerRNA *ptr, PropertyRNA *prop, PyObject *value)

Detailed Description

This file deals with array access for 'BPy_PropertyArrayRNA' from bpy_rna.cc.

Definition in file bpy_rna_array.cc.

Macro Definition Documentation

◆ MAX_ARRAY_DIMENSION

#define MAX_ARRAY_DIMENSION   10

◆ USE_MATHUTILS

#define USE_MATHUTILS

Definition at line 29 of file bpy_rna_array.cc.

Typedef Documentation

◆ ItemConvertFunc

using ItemConvertFunc = void (*)(const ItemConvertArgData *arg, PyObject *py_data, char *data)

Definition at line 39 of file bpy_rna_array.cc.

◆ ItemTypeCheckFunc

using ItemTypeCheckFunc = int (*)(PyObject *py_data)

Definition at line 40 of file bpy_rna_array.cc.

◆ RNA_SetArrayFunc

using RNA_SetArrayFunc = void (*)(PointerRNA *ptr, PropertyRNA *prop, const char *data)

Definition at line 41 of file bpy_rna_array.cc.

◆ RNA_SetIndexFunc

using RNA_SetIndexFunc = void (*)(PointerRNA *ptr, PropertyRNA *prop, int index, void *data_item)

Definition at line 42 of file bpy_rna_array.cc.

Function Documentation

◆ bool_set_index()

void bool_set_index ( PointerRNA * ptr,
PropertyRNA * prop,
int index,
void * value )
static

Definition at line 703 of file bpy_rna_array.cc.

References ptr, and RNA_property_boolean_set_index().

Referenced by pyrna_py_to_array_index().

◆ convert_item_init_bool()

void convert_item_init_bool ( PointerRNA * ,
PropertyRNA * ,
ItemConvert_FuncArg * convert_item )
static

Definition at line 726 of file bpy_rna_array.cc.

References ItemConvert_FuncArg::func, and py_to_bool().

Referenced by pyrna_py_to_array(), and pyrna_py_to_array_index().

◆ convert_item_init_float()

◆ convert_item_init_int()

◆ copy_value_single()

char * copy_value_single ( PyObject * item,
PointerRNA * ptr,
PropertyRNA * prop,
char * data,
uint item_size,
int * index,
const ItemConvert_FuncArg * convert_item,
RNA_SetIndexFunc rna_set_index )
static

Definition at line 408 of file bpy_rna_array.cc.

References ItemConvert_FuncArg::arg, data, ItemConvert_FuncArg::func, i, and ptr.

Referenced by copy_values(), and py_to_array_index().

◆ copy_values()

char * copy_values ( PyObject * seq,
PointerRNA * ptr,
PropertyRNA * prop,
int dim,
char * data,
uint item_size,
int * index,
const ItemConvert_FuncArg * convert_item,
RNA_SetIndexFunc rna_set_index )
static

◆ count_items()

int count_items ( PyObject * seq,
int dim )
static

Definition at line 207 of file bpy_rna_array.cc.

References count_items(), i, and Py_DECREF().

Referenced by count_items(), and validate_array_length().

◆ float_set_index()

void float_set_index ( PointerRNA * ptr,
PropertyRNA * prop,
int index,
void * value )
static

Definition at line 693 of file bpy_rna_array.cc.

References ptr, and RNA_property_float_set_index().

Referenced by pyrna_py_to_array_index().

◆ int_set_index()

void int_set_index ( PointerRNA * ptr,
PropertyRNA * prop,
int index,
void * value )
static

Definition at line 698 of file bpy_rna_array.cc.

References ptr, and RNA_property_int_set_index().

Referenced by pyrna_py_to_array_index().

◆ py_bool_check()

int py_bool_check ( PyObject * py)
static

Definition at line 688 of file bpy_rna_array.cc.

Referenced by pyrna_py_to_array(), and pyrna_py_to_array_index().

◆ py_float_check()

int py_float_check ( PyObject * py)
static

Definition at line 676 of file bpy_rna_array.cc.

Referenced by pyrna_py_to_array(), and pyrna_py_to_array_index().

◆ py_int_check()

int py_int_check ( PyObject * py)
static

Definition at line 682 of file bpy_rna_array.cc.

Referenced by pyrna_py_to_array(), and pyrna_py_to_array_index().

◆ py_to_array()

int py_to_array ( PyObject * seq,
PointerRNA * ptr,
PropertyRNA * prop,
char * param_data,
ItemTypeCheckFunc check_item_type,
const char * item_type_str,
int item_size,
const ItemConvert_FuncArg * convert_item,
RNA_SetArrayFunc rna_set_array,
const char * error_prefix )
static

◆ py_to_array_index()

int py_to_array_index ( PyObject * py,
PointerRNA * ptr,
PropertyRNA * prop,
int lvalue_dim,
int arrayoffset,
int index,
ItemTypeCheckFunc check_item_type,
const char * item_type_str,
const ItemConvert_FuncArg * convert_item,
RNA_SetIndexFunc rna_set_index,
const char * error_prefix )
static

◆ py_to_bool()

void py_to_bool ( const ItemConvertArgData * ,
PyObject * py,
char * data )
static

Definition at line 671 of file bpy_rna_array.cc.

References data.

Referenced by convert_item_init_bool().

◆ py_to_float()

void py_to_float ( const ItemConvertArgData * arg,
PyObject * py,
char * data )
static

◆ py_to_int()

void py_to_int ( const ItemConvertArgData * arg,
PyObject * py,
char * data )
static

Definition at line 663 of file bpy_rna_array.cc.

References CLAMP, data, ItemConvertArgData::int_data, and ItemConvertArgData::range.

Referenced by convert_item_init_int().

◆ pyrna_array_contains_py()

◆ pyrna_array_index()

◆ pyrna_py_from_array()

PyObject * pyrna_py_from_array ( PointerRNA * ptr,
PropertyRNA * prop )
nodiscard

Definition at line 978 of file bpy_rna_array.cc.

References ptr, pyrna_math_object_from_array(), pyrna_prop_CreatePyObject(), and ret.

Referenced by pyrna_prop_to_py().

◆ pyrna_py_from_array_index()

PyObject * pyrna_py_from_array_index ( BPy_PropertyArrayRNA * self,
PointerRNA * ptr,
PropertyRNA * prop,
int index )
nodiscard

◆ pyrna_py_to_array()

◆ pyrna_py_to_array_index()

int pyrna_py_to_array_index ( PointerRNA * ptr,
PropertyRNA * prop,
int arraydim,
int arrayoffset,
int index,
PyObject * py,
const char * error_prefix )
nodiscard

◆ validate_array()

int validate_array ( PyObject * rvalue,
PointerRNA * ptr,
PropertyRNA * prop,
const bool prop_is_param_dyn_alloc,
int lvalue_dim,
ItemTypeCheckFunc check_item_type,
const char * item_type_str,
int * r_totitem,
const char * error_prefix )
static

◆ validate_array_length()

int validate_array_length ( PyObject * rvalue,
PointerRNA * ptr,
PropertyRNA * prop,
const bool prop_is_param_dyn_alloc,
int lvalue_dim,
int * r_totitem,
const char * error_prefix )
static

◆ validate_array_type()

int validate_array_type ( PyObject * seq,
int dim,
int totdim,
int dimsize[],
const bool is_dynamic,
ItemTypeCheckFunc check_item_type,
const char * item_type_str,
const char * error_prefix )
static

Definition at line 79 of file bpy_rna_array.cc.

References i, Py_DECREF(), and validate_array_type().

Referenced by validate_array(), and validate_array_type().