GPU Python: Use 'PyC_ParseStringEnum' to parse items
Currently the GPU module for python has different ways to handle enums. - Organizing items in `PyC_StringEnumItems` arrays and parsing them with `PyC_ParseStringEnum`. - Using dedicated functions for each type of enum (`bpygpu_ParsePrimType`, `pygpu_ParseVertCompType` and `pygpu_ParseVertFetchMode`). Although apparently more efficient (especially `pygpu_ParseVertCompType` which transforms strings into integers for simple comparison), these dedicated functions duplicate functionality, increase the complexity of the code and consequently make it less readable. Reviewed By: campbellbarton Differential Revision: https://developer.blender.org/D10456
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
|
||||
#include <Python.h>
|
||||
|
||||
#include "GPU_primitive.h"
|
||||
#include "GPU_texture.h"
|
||||
|
||||
#include "../generic/py_capi_utils.h"
|
||||
@@ -30,9 +31,23 @@
|
||||
#include "gpu_py.h" /* own include */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name GPU Module
|
||||
/** \name GPU Enums
|
||||
* \{ */
|
||||
|
||||
struct PyC_StringEnumItems bpygpu_primtype_items[] = {
|
||||
{GPU_PRIM_POINTS, "POINTS"},
|
||||
{GPU_PRIM_LINES, "LINES"},
|
||||
{GPU_PRIM_TRIS, "TRIS"},
|
||||
{GPU_PRIM_LINE_STRIP, "LINE_STRIP"},
|
||||
{GPU_PRIM_LINE_LOOP, "LINE_LOOP"},
|
||||
{GPU_PRIM_TRI_STRIP, "TRI_STRIP"},
|
||||
{GPU_PRIM_TRI_FAN, "TRI_FAN"},
|
||||
{GPU_PRIM_LINES_ADJ, "LINES_ADJ"},
|
||||
{GPU_PRIM_TRIS_ADJ, "TRIS_ADJ"},
|
||||
{GPU_PRIM_LINE_STRIP_ADJ, "LINE_STRIP_ADJ"},
|
||||
{0, NULL},
|
||||
};
|
||||
|
||||
struct PyC_StringEnumItems bpygpu_dataformat_items[] = {
|
||||
{GPU_DATA_FLOAT, "FLOAT"},
|
||||
{GPU_DATA_INT, "INT"},
|
||||
|
||||
Reference in New Issue
Block a user