diff options
Diffstat (limited to 'source/blender/makesrna/intern/rna_internal.h')
-rw-r--r-- | source/blender/makesrna/intern/rna_internal.h | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h new file mode 100644 index 00000000000..7ac44a34ed0 --- /dev/null +++ b/source/blender/makesrna/intern/rna_internal.h @@ -0,0 +1,193 @@ +/** + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Contributor(s): Blender Foundation (2008). + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef RNA_INTERNAL_H +#define RNA_INTERNAL_H + +#include "rna_internal_types.h" + +#define RNA_MAGIC ((int)~0) + +struct IDProperty; +struct SDNA; + +/* Data structures used during define */ + +typedef struct PropertyDefRNA { + struct PropertyDefRNA *next, *prev; + + struct StructRNA *srna; + struct PropertyRNA *prop; + + /* struct */ + const char *dnastructname; + const char *dnastructfromname; + const char *dnastructfromprop; + + /* property */ + const char *dnaname; + const char *dnatype; + int dnaarraylength; + int dnapointerlevel; + + /* for finding length of array collections */ + const char *dnalengthstructname; + const char *dnalengthname; + int dnalengthfixed; + + int booleanbit, booleannegative; + int enumbitflags; +} PropertyDefRNA; + +typedef struct StructDefRNA { + struct StructDefRNA *next, *prev; + + struct StructRNA *srna; + + const char *dnaname; + + /* for derived structs to find data in some property */ + const char *dnafromname; + const char *dnafromprop; + + ListBase properties; +} StructDefRNA; + +typedef struct AllocDefRNA { + struct AllocDefRNA *next, *prev; + void *mem; +} AllocDefRNA; + +typedef struct BlenderDefRNA { + struct SDNA *sdna; + ListBase structs; + ListBase allocs; + struct StructRNA *laststruct; + int error, silent, preprocess; +} BlenderDefRNA; + +extern BlenderDefRNA DefRNA; + +/* Define functions for all types */ + +extern BlenderRNA BLENDER_RNA; + +void RNA_def_ID(struct BlenderRNA *brna); +void RNA_def_armature(struct BlenderRNA *brna); +void RNA_def_actuator(struct BlenderRNA *brna); +void RNA_def_brush(struct BlenderRNA *brna); +void RNA_def_brushclone(struct BlenderRNA *brna); +void RNA_def_camera(struct BlenderRNA *brna); +void RNA_def_color(struct BlenderRNA *brna); +void RNA_def_constraint(struct BlenderRNA *brna); +void RNA_def_controller(struct BlenderRNA *brna); +void RNA_def_curve(struct BlenderRNA *brna); +void RNA_def_gameproperty(struct BlenderRNA *brna); +void RNA_def_group(struct BlenderRNA *brna); +void RNA_def_image(struct BlenderRNA *brna); +void RNA_def_ipo(struct BlenderRNA *brna); +void RNA_def_key(struct BlenderRNA *brna); +void RNA_def_lamp(struct BlenderRNA *brna); +void RNA_def_lattice(struct BlenderRNA *brna); +void RNA_def_main(struct BlenderRNA *brna); +void RNA_def_material(struct BlenderRNA *brna); +void RNA_def_mesh(struct BlenderRNA *brna); +void RNA_def_meta(struct BlenderRNA *brna); +void RNA_def_modifier(struct BlenderRNA *brna); +void RNA_def_nodetree(struct BlenderRNA *brna); +void RNA_def_object(struct BlenderRNA *brna); +void RNA_def_packedfile(struct BlenderRNA *brna); +void RNA_def_radio(struct BlenderRNA *brna); +void RNA_def_rna(struct BlenderRNA *brna); +void RNA_def_scene(struct BlenderRNA *brna); +void RNA_def_screen(struct BlenderRNA *brna); +void RNA_def_sensor(struct BlenderRNA *brna); +void RNA_def_vfont(struct BlenderRNA *brna); +void RNA_def_wm(struct BlenderRNA *brna); +void RNA_def_world(struct BlenderRNA *brna); + +void rna_def_ipo_common(struct StructRNA *srna); +void rna_def_texmat_common(struct StructRNA *srna, const char *texspace_editable); + +/* ID Properties */ + +extern StringPropertyRNA rna_IDProperty_string; +extern IntPropertyRNA rna_IDProperty_int; +extern IntPropertyRNA rna_IDProperty_intarray; +extern FloatPropertyRNA rna_IDProperty_float; +extern FloatPropertyRNA rna_IDProperty_floatarray; +extern PointerPropertyRNA rna_IDProperty_group; +extern FloatPropertyRNA rna_IDProperty_double; +extern FloatPropertyRNA rna_IDProperty_doublearray; + +extern StructRNA RNA_IDProperty; +extern StructRNA RNA_IDPropertyGroup; + +struct IDProperty *rna_idproperties_get(struct StructRNA *type, void *data, int create); +struct IDProperty *rna_idproperty_check(struct PropertyRNA **prop, struct PointerRNA *ptr); + +/* Builtin Property Callbacks */ + +void rna_builtin_properties_begin(struct CollectionPropertyIterator *iter, struct PointerRNA *ptr); +void rna_builtin_properties_next(struct CollectionPropertyIterator *iter); +void *rna_builtin_properties_get(struct CollectionPropertyIterator *iter); +void *rna_builtin_type_get(struct PointerRNA *ptr); + +/* Iterators */ + +typedef int (*IteratorSkipFunc)(struct CollectionPropertyIterator *iter, void *data); + +typedef struct ListBaseIterator { + Link *link; + int flag; + IteratorSkipFunc skip; +} ListBaseIterator; + +void rna_iterator_listbase_begin(struct CollectionPropertyIterator *iter, struct ListBase *lb, IteratorSkipFunc skip); +void rna_iterator_listbase_next(struct CollectionPropertyIterator *iter); +void *rna_iterator_listbase_get(struct CollectionPropertyIterator *iter); +void rna_iterator_listbase_end(struct CollectionPropertyIterator *iter); + +typedef struct ArrayIterator { + char *ptr; + char *endptr; + int itemsize; + IteratorSkipFunc skip; +} ArrayIterator; + +void rna_iterator_array_begin(struct CollectionPropertyIterator *iter, void *ptr, int itemsize, int length, IteratorSkipFunc skip); +void rna_iterator_array_next(struct CollectionPropertyIterator *iter); +void *rna_iterator_array_get(struct CollectionPropertyIterator *iter); +void *rna_iterator_array_dereference_get(struct CollectionPropertyIterator *iter); +void rna_iterator_array_end(struct CollectionPropertyIterator *iter); + +/* Duplicated code since we can't link in blenlib */ + +void rna_addtail(struct ListBase *listbase, void *vlink); +void rna_freelinkN(struct ListBase *listbase, void *vlink); +void rna_freelistN(struct ListBase *listbase); + +#endif /* RNA_INTERNAL_H */ + + |