RNA
[blender.git] / source / blender / makesrna / RNA_types.h
index b8d1793a05c43b9dae2a80e1794e35da7683174b..33b720f9c0c009267618fd4afd8bb56ae38a4dfa 100644 (file)
 #ifndef RNA_TYPES
 #define RNA_TYPES
 
-#include "DNA_listBase.h"
-
-struct BlenderRNA;
-struct StructRNA;
-struct PropertyRNA;
-struct PointerRNA;
-struct CollectionPropertyIterator;
-struct bContext;
-
-/* Function Callbacks */
-
-typedef void (*PropNotifyFunc)(struct bContext *C, struct PointerRNA *ptr);
-typedef int (*PropBooleanGetFunc)(struct PointerRNA *ptr);
-typedef void (*PropBooleanSetFunc)(struct PointerRNA *ptr, int value);
-typedef int (*PropBooleanArrayGetFunc)(struct PointerRNA *ptr, int index);
-typedef void (*PropBooleanArraySetFunc)(struct PointerRNA *ptr, int index, int value);
-typedef int (*PropIntGetFunc)(struct PointerRNA *ptr);
-typedef void (*PropIntSetFunc)(struct PointerRNA *ptr, int value);
-typedef int (*PropIntArrayGetFunc)(struct PointerRNA *ptr, int index);
-typedef void (*PropIntArraySetFunc)(struct PointerRNA *ptr, int index, int value);
-typedef float (*PropFloatGetFunc)(struct PointerRNA *ptr);
-typedef void (*PropFloatSetFunc)(struct PointerRNA *ptr, float value);
-typedef float (*PropFloatArrayGetFunc)(struct PointerRNA *ptr, int index);
-typedef void (*PropFloatArraySetFunc)(struct PointerRNA *ptr, int index, float value);
-typedef void (*PropStringGetFunc)(struct PointerRNA *ptr, char *value);
-typedef int (*PropStringLengthFunc)(struct PointerRNA *ptr);
-typedef void (*PropStringSetFunc)(struct PointerRNA *ptr, const char *value);
-typedef int (*PropEnumGetFunc)(struct PointerRNA *ptr);
-typedef void (*PropEnumSetFunc)(struct PointerRNA *ptr, int value);
-typedef void* (*PropPointerGetFunc)(struct PointerRNA *ptr);
-typedef void (*PropPointerSetFunc)(struct PointerRNA *ptr, void *value);
-typedef struct StructRNA* (*PropPointerTypeFunc)(struct PointerRNA *ptr);
-typedef void (*PropCollectionBeginFunc)(struct CollectionPropertyIterator *iter, struct PointerRNA *ptr);
-typedef void (*PropCollectionNextFunc)(struct CollectionPropertyIterator *iter);
-typedef void (*PropCollectionEndFunc)(struct CollectionPropertyIterator *iter);
-typedef void* (*PropCollectionGetFunc)(struct CollectionPropertyIterator *iter);
-typedef struct StructRNA* (*PropCollectionTypeFunc)(struct CollectionPropertyIterator *iter);
-typedef int (*PropCollectionLengthFunc)(struct PointerRNA *ptr);
-typedef void* (*PropCollectionLookupIntFunc)(struct PointerRNA *ptr, int key, struct StructRNA **type);
-typedef void* (*PropCollectionLookupStringFunc)(struct PointerRNA *ptr, const char *key, struct StructRNA **type);
-
 /* Pointer
  *
  * RNA pointers are not a single C pointer but include the type,
@@ -135,8 +94,9 @@ typedef enum PropertyFlag {
        PROP_INVERSE_RENDER_DEPENDENCY = 64,
 #endif
 
-       /* internal flag */
-       PROP_BUILTIN = 128
+       /* internal flags */
+       PROP_BUILTIN = 128,
+       PROP_EXPORT = 256
 } PropertyFlag;
 
 typedef struct CollectionPropertyIterator {
@@ -153,128 +113,8 @@ typedef struct EnumPropertyItem {
        const char *name;
 } EnumPropertyItem;
 
-typedef struct PropertyRNA {
-       struct PropertyRNA *next, *prev;
-
-       /* C code name */
-       const char *identifier;
-       /* various options */
-       int flag;
-
-       /* user readable name */
-       const char *name;
-       /* single line description, displayed in the tooltip for example */
-       const char *description;
-
-       /* property type as it appears to the outside */
-       PropertyType type;
-       /* subtype, 'interpretation' of the property */
-       PropertySubType subtype;
-       /* if an array this is > 0, specifying the length */
-       unsigned int arraylength;
-       
-       /* callback for notifys on change */
-       PropNotifyFunc notify;
-} PropertyRNA;
-
-/* Property Types */
-
-typedef struct BooleanPropertyRNA {
-       PropertyRNA property;
-
-       PropBooleanGetFunc get;
-       PropBooleanSetFunc set;
-
-       PropBooleanArrayGetFunc getarray;
-       PropBooleanArraySetFunc setarray;
-
-       int defaultvalue;
-       const int *defaultarray;
-} BooleanPropertyRNA;
-
-typedef struct IntPropertyRNA {
-       PropertyRNA property;
-
-       PropIntGetFunc get;
-       PropIntSetFunc set;
-
-       PropIntArrayGetFunc getarray;
-       PropIntArraySetFunc setarray;
-
-       int softmin, softmax;
-       int hardmin, hardmax;
-       int step;
-
-       int defaultvalue;
-       const int *defaultarray;
-} IntPropertyRNA;
-
-typedef struct FloatPropertyRNA {
-       PropertyRNA property;
-
-       PropFloatGetFunc get;
-       PropFloatSetFunc set;
-
-       PropFloatArrayGetFunc getarray;
-       PropFloatArraySetFunc setarray;
-
-       float softmin, softmax;
-       float hardmin, hardmax;
-       float step;
-       int precision;
-
-       float defaultvalue;
-       const float *defaultarray;
-} FloatPropertyRNA;
-
-typedef struct StringPropertyRNA {
-       PropertyRNA property;
-
-       PropStringGetFunc get;
-       PropStringLengthFunc length;
-       PropStringSetFunc set;
-
-       int maxlength;  /* includes string terminator! */
-
-       const char *defaultvalue;
-} StringPropertyRNA;
-
-typedef struct EnumPropertyRNA {
-       PropertyRNA property;
-
-       PropEnumGetFunc get;
-       PropEnumSetFunc set;
-
-       const EnumPropertyItem *item;
-       int totitem;
-
-       int defaultvalue;
-} EnumPropertyRNA;
-
-typedef struct PointerPropertyRNA {
-       PropertyRNA property;
-
-       PropPointerGetFunc get;
-       PropPointerSetFunc set;
-       PropPointerTypeFunc type;       /* optional */
-
-       struct StructRNA *structtype;
-} PointerPropertyRNA;
-
-typedef struct CollectionPropertyRNA {
-       PropertyRNA property;
-
-       PropCollectionBeginFunc begin;
-       PropCollectionNextFunc next;
-       PropCollectionEndFunc end;                                              /* optional */
-       PropCollectionGetFunc get;
-       PropCollectionTypeFunc type;                                    /* optional */
-       PropCollectionLengthFunc length;                                /* optional */
-       PropCollectionLookupIntFunc lookupint;                  /* optional */
-       PropCollectionLookupStringFunc lookupstring;    /* optional */
-
-       struct StructRNA *structtype;
-} CollectionPropertyRNA;
+struct PropertyRNA;
+typedef struct PropertyRNA PropertyRNA;
 
 /* Struct */
 
@@ -283,34 +123,15 @@ typedef enum StructFlag {
        STRUCT_ID = 1
 } StructFlag;
 
-typedef struct StructRNA {
-       struct StructRNA *next, *prev;
-
-       /* C code name */
-       const char *identifier;
-       /* various options */
-       int flag;
-
-       /* user readable name */
-       const char *name;
-
-       /* property that defines the name */
-       PropertyRNA *nameproperty;
-
-       /* property to iterate over properties */
-       PropertyRNA *iteratorproperty;
-
-       /* properties of this struct */
-       ListBase properties; 
-} StructRNA;
+struct StructRNA;
+typedef struct StructRNA StructRNA;
 
 /* Blender RNA
  *
  * Root RNA data structure that lists all struct types. */
 
-typedef struct BlenderRNA {
-       ListBase structs;
-} BlenderRNA;
+struct BlenderRNA;
+typedef struct BlenderRNA BlenderRNA;
 
 #endif /* RNA_TYPES */