RNA minor changes
[blender.git] / source / blender / makesrna / intern / rna_internal.h
index 7c2cb8e36be73f1a682d5ef3c6ddbf3516a8bde9..abf6c16a505319d286bb8af4d2ba3c5bbde59703 100644 (file)
 #ifndef RNA_INTERNAL_H
 #define RNA_INTERNAL_H
 
-struct StructRNA;
-struct PropertyRNA;
+#include "rna_internal_types.h"
+
+#define RNA_MAGIC ((int)~0)
+
+struct IDProperty;
 struct SDNA;
-struct ListBase;
 
 /* Data structures used during define */
 
 typedef struct PropertyDefRNA {
        struct PropertyDefRNA *next, *prev;
 
-       struct StructRNA *strct;
+       struct StructRNA *srna;
        struct PropertyRNA *prop;
 
        const char *dnastructname;
        const char *dnaname;
+       const char *dnalengthstructname;
+       const char *dnalengthname;
        const char *dnatype;
        int dnaarraylength;
 
@@ -49,7 +53,7 @@ typedef struct PropertyDefRNA {
 typedef struct StructDefRNA {
        struct StructDefRNA *next, *prev;
 
-       struct StructRNA *strct;
+       struct StructRNA *srna;
 
        const char *dnaname;
        ListBase properties;
@@ -71,14 +75,53 @@ extern BlenderDefRNA DefRNA;
 
 /* Define functions for all types */
 
+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_Main;
+extern StructRNA RNA_Mesh;
+extern StructRNA RNA_Object;
+extern StructRNA RNA_Scene;
+extern StructRNA RNA_Lamp;
+extern StructRNA RNA_Struct;
+
+void RNA_def_ID(struct StructRNA *srna);
+void RNA_def_ID_types(struct BlenderRNA *brna);
+
+void RNA_def_main(struct BlenderRNA *brna);
+void RNA_def_mesh(struct BlenderRNA *brna);
 void RNA_def_object(struct BlenderRNA *brna);
+void RNA_def_rna(struct BlenderRNA *brna);
 void RNA_def_scene(struct BlenderRNA *brna);
+void RNA_def_lamp(struct BlenderRNA *brna);
+
+/* Internal Functions */
 
-/* Standard iterator functions */
+void rna_def_builtin_properties(struct StructRNA *srna);
+
+struct IDProperty *rna_idproperty_check(struct PropertyRNA **prop, struct PointerRNA *ptr);
+
+typedef struct ListBaseIterator {
+       Link *link;
+       int flag;
+} ListBaseIterator;
 
 void rna_iterator_listbase_begin(struct CollectionPropertyIterator *iter, struct ListBase *lb);
 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;
+} ArrayIterator;
 
 void rna_iterator_array_begin(struct CollectionPropertyIterator *iter, void *ptr, int itemsize, int length);
 void rna_iterator_array_next(struct CollectionPropertyIterator *iter);