Cleanup: use doxygen sections in py_capi_rna.c

This commit is contained in:
Campbell Barton 2021-09-01 17:00:04 +10:00
parent 0c5f6f9fa7
commit 93c6b12df5
2 changed files with 73 additions and 55 deletions

View File

@ -37,6 +37,10 @@
#include "MEM_guardedalloc.h"
/* -------------------------------------------------------------------- */
/** \name Enum Utilities
* \{ */
/**
* Convert all items into a single comma separated string.
* Use for creating useful error messages.
@ -59,6 +63,12 @@ char *pyrna_enum_repr(const EnumPropertyItem *item)
return cstring;
}
/** \} */
/* -------------------------------------------------------------------- */
/** \name Enum Conversion Utilities
* \{ */
/**
* Same as #RNA_enum_value_from_id, but raises an exception.
*/
@ -78,47 +88,6 @@ int pyrna_enum_value_from_id(const EnumPropertyItem *item,
return 0;
}
/**
* Use with #PyArg_ParseTuple's `O&` formatting.
*/
int pyrna_enum_value_parse_string(PyObject *o, void *p)
{
const char *identifier = PyUnicode_AsUTF8(o);
if (identifier == NULL) {
PyErr_Format(PyExc_TypeError, "expected a string enum, not %.200s", Py_TYPE(o)->tp_name);
return 0;
}
struct BPy_EnumProperty_Parse *parse_data = p;
if (pyrna_enum_value_from_id(
parse_data->items, identifier, &parse_data->value, "enum identifier") == -1) {
return 0;
}
parse_data->value_orig = o;
parse_data->is_set = true;
return 1;
}
/**
* Use with #PyArg_ParseTuple's `O&` formatting.
*/
int pyrna_enum_bitfield_parse_set(PyObject *o, void *p)
{
if (!PySet_Check(o)) {
PyErr_Format(PyExc_TypeError, "expected a set, not %.200s", Py_TYPE(o)->tp_name);
return 0;
}
struct BPy_EnumProperty_Parse *parse_data = p;
if (pyrna_enum_bitfield_from_set(
parse_data->items, o, &parse_data->value, "enum identifier set") == -1) {
return 0;
}
parse_data->value_orig = o;
parse_data->is_set = true;
return 1;
}
/**
* Takes a set of strings and map it to and array of booleans.
*
@ -247,3 +216,52 @@ PyObject *pyrna_enum_bitfield_as_set(const EnumPropertyItem *items, int value)
return ret;
}
/** \} */
/* -------------------------------------------------------------------- */
/** \name Argument Parsing Helpers
* \{ */
/**
* Use with #PyArg_ParseTuple's `O&` formatting.
*/
int pyrna_enum_value_parse_string(PyObject *o, void *p)
{
const char *identifier = PyUnicode_AsUTF8(o);
if (identifier == NULL) {
PyErr_Format(PyExc_TypeError, "expected a string enum, not %.200s", Py_TYPE(o)->tp_name);
return 0;
}
struct BPy_EnumProperty_Parse *parse_data = p;
if (pyrna_enum_value_from_id(
parse_data->items, identifier, &parse_data->value, "enum identifier") == -1) {
return 0;
}
parse_data->value_orig = o;
parse_data->is_set = true;
return 1;
}
/**
* Use with #PyArg_ParseTuple's `O&` formatting.
*/
int pyrna_enum_bitfield_parse_set(PyObject *o, void *p)
{
if (!PySet_Check(o)) {
PyErr_Format(PyExc_TypeError, "expected a set, not %.200s", Py_TYPE(o)->tp_name);
return 0;
}
struct BPy_EnumProperty_Parse *parse_data = p;
if (pyrna_enum_bitfield_from_set(
parse_data->items, o, &parse_data->value, "enum identifier set") == -1) {
return 0;
}
parse_data->value_orig = o;
parse_data->is_set = true;
return 1;
}
/** \} */

View File

@ -32,6 +32,20 @@ int pyrna_enum_value_from_id(const struct EnumPropertyItem *item,
int *value,
const char *error_prefix);
unsigned int *pyrna_enum_bitmap_from_set(const struct EnumPropertyItem *items,
PyObject *value,
int type_size,
bool type_convert_sign,
int bitmap_size,
const char *error_prefix);
int pyrna_enum_bitfield_from_set(const struct EnumPropertyItem *items,
PyObject *value,
int *r_value,
const char *error_prefix);
PyObject *pyrna_enum_bitfield_as_set(const struct EnumPropertyItem *items, int value);
/**
* Data for #pyrna_enum_value_parse_string & #pyrna_enum_bitfield_parse_set parsing utilities.
* Use with #PyArg_ParseTuple's `O&` formatting.
@ -50,17 +64,3 @@ struct BPy_EnumProperty_Parse {
};
int pyrna_enum_value_parse_string(PyObject *o, void *p);
int pyrna_enum_bitfield_parse_set(PyObject *o, void *p);
unsigned int *pyrna_enum_bitmap_from_set(const struct EnumPropertyItem *items,
PyObject *value,
int type_size,
bool type_convert_sign,
int bitmap_size,
const char *error_prefix);
int pyrna_enum_bitfield_from_set(const struct EnumPropertyItem *items,
PyObject *value,
int *r_value,
const char *error_prefix);
PyObject *pyrna_enum_bitfield_as_set(const struct EnumPropertyItem *items, int value);