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/makesrna/intern/rna_internal.h')
-rw-r--r--source/blender/makesrna/intern/rna_internal.h193
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 */
+
+