diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2018-02-09 14:04:29 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2018-02-09 15:34:18 +0300 |
commit | 97597ed6002211d55565d2a281da3c3fc1098ebb (patch) | |
tree | e0eb8d435ba2c8ebf7cfd30cf1c6075dbe87b704 /source/blender/makesrna | |
parent | 908ee2e0f2145cf8204501c99dc1eea431f933cd (diff) |
Doc: attempt to document RNA's FunctionFlag.
Tired of searching through code to find which is what, and how to use it
in the C callback, everytime I need anot-so-common option...
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r-- | source/blender/makesrna/RNA_types.h | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h index ce2ca01ccfe..705d3914a52 100644 --- a/source/blender/makesrna/RNA_types.h +++ b/source/blender/makesrna/RNA_types.h @@ -398,22 +398,46 @@ typedef struct ParameterDynAlloc { /* Function */ typedef enum FunctionFlag { - FUNC_NO_SELF = (1 << 0), /* for static functions */ - FUNC_USE_SELF_TYPE = (1 << 1), /* for class methods, only used when FUNC_NO_SELF is set */ + /***** Options affecting callback signature. *****/ + /* Those add additionnal parameters at the beginning of the C callback, like that: + * rna_my_func([ID *_selfid], + * [<DNA_STRUCT> *self|StructRNA *type], + * [Main *bmain], + * [bContext *C], + * [ReportList *reports], + * <other RNA-defined parameters>); + */ + /* Pass ID owning 'self' data (i.e. ptr->id.data, might be same as self in case data is an ID...). */ + FUNC_USE_SELF_ID = (1 << 11), + + /* Do not pass the object (DNA struct pointer) from which it is called, used to define static or class functions. */ + FUNC_NO_SELF = (1 << 0), + /* Pass RNA type, used to define class functions, only valid when FUNC_NO_SELF is set. */ + FUNC_USE_SELF_TYPE = (1 << 1), + + /* Pass Main, bContext and/or ReportList. */ FUNC_USE_MAIN = (1 << 2), FUNC_USE_CONTEXT = (1 << 3), FUNC_USE_REPORTS = (1 << 4), - FUNC_USE_SELF_ID = (1 << 11), - FUNC_ALLOW_WRITE = (1 << 12), - /* registering */ + + /***** Registering of python subclasses. *****/ + /* This function is part of the registerable class' interface, and can be implemented/redefined in python. */ FUNC_REGISTER = (1 << 5), + /* Subclasses can choose not to implement this function. */ FUNC_REGISTER_OPTIONAL = FUNC_REGISTER | (1 << 6), + /* If not set, the python function implementing this call is not allowed to write into data-blocks. + * Except for WindowManager and Screen currently, see rna_id_write_error() in bpy_rna.c */ + FUNC_ALLOW_WRITE = (1 << 12), - /* internal flags */ + /***** Internal flags. *****/ + /* UNUSED CURRENTLY? ??? */ FUNC_BUILTIN = (1 << 7), + /* UNUSED CURRENTLY. ??? */ FUNC_EXPORT = (1 << 8), + /* Function has been defined at runtime, not statically in RNA source code. */ FUNC_RUNTIME = (1 << 9), + /* UNUSED CURRENTLY? Function owns its identifier and description strings, and has to free them when deleted. */ FUNC_FREE_POINTERS = (1 << 10), } FunctionFlag; |