Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/python/generic/py_capi_rna.c')
-rw-r--r--source/blender/python/generic/py_capi_rna.c100
1 files changed, 59 insertions, 41 deletions
diff --git a/source/blender/python/generic/py_capi_rna.c b/source/blender/python/generic/py_capi_rna.c
index f6a556a3fff..235b136ca74 100644
--- a/source/blender/python/generic/py_capi_rna.c
+++ b/source/blender/python/generic/py_capi_rna.c
@@ -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.
*/
@@ -79,47 +89,6 @@ int pyrna_enum_value_from_id(const EnumPropertyItem *item,
}
/**
- * 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.
*
* Useful when the values aren't flags.
@@ -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;
+}
+
+/** \} */