Merge from 2.5 r20991 through r21037
[blender.git] / source / blender / makesrna / intern / rna_internal_types.h
index 5e44b7f74527b935f16434c1c8ba417b9a5245db..8bae21cca2b1f622e7492b1433d86f341499c7e9 100644 (file)
@@ -32,8 +32,12 @@ struct ContainerRNA;
 struct StructRNA;
 struct PropertyRNA;
 struct PointerRNA;
+struct FunctionRNA;
+struct ReportList;
 struct CollectionPropertyIterator;
 struct bContext;
+struct IDProperty;
+struct GHash;
 
 #define RNA_MAX_ARRAY 32
 
@@ -41,6 +45,7 @@ struct bContext;
 
 typedef void (*UpdateFunc)(struct bContext *C, struct PointerRNA *ptr);
 typedef int (*EditableFunc)(struct PointerRNA *ptr);
+typedef struct IDProperty* (*IDPropertiesFunc)(struct PointerRNA *ptr, int create);
 typedef struct StructRNA *(*StructRefineFunc)(struct PointerRNA *ptr);
 typedef char *(*StructPathFunc)(struct PointerRNA *ptr);
 
@@ -63,7 +68,9 @@ 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 EnumPropertyItem *(*PropEnumItemFunc)(struct PointerRNA *ptr);
 typedef PointerRNA (*PropPointerGetFunc)(struct PointerRNA *ptr);
+typedef StructRNA* (*PropPointerTypeFunc)(struct PointerRNA *ptr);
 typedef void (*PropPointerSetFunc)(struct PointerRNA *ptr, const PointerRNA value);
 typedef void (*PropCollectionBeginFunc)(struct CollectionPropertyIterator *iter, struct PointerRNA *ptr);
 typedef void (*PropCollectionNextFunc)(struct CollectionPropertyIterator *iter);
@@ -77,6 +84,7 @@ typedef PointerRNA (*PropCollectionLookupStringFunc)(struct PointerRNA *ptr, con
 typedef struct ContainerRNA {
        void *next, *prev;
 
+       struct GHash *prophash;
        ListBase properties;
 } ContainerRNA;
 
@@ -122,6 +130,8 @@ struct PropertyRNA {
        const char *name;
        /* single line description, displayed in the tooltip for example */
        const char *description;
+       /* icon ID */
+       int icon;
 
        /* property type as it appears to the outside */
        PropertyType type;
@@ -209,6 +219,7 @@ typedef struct EnumPropertyRNA {
 
        PropEnumGetFunc get;
        PropEnumSetFunc set;
+       PropEnumItemFunc itemf;
 
        const EnumPropertyItem *item;
        int totitem;
@@ -221,6 +232,7 @@ typedef struct PointerPropertyRNA {
 
        PropPointerGetFunc get;
        PropPointerSetFunc set;
+       PropPointerTypeFunc typef;
 
        struct StructRNA *type;
 } PointerPropertyRNA;
@@ -235,6 +247,7 @@ typedef struct CollectionPropertyRNA {
        PropCollectionLengthFunc length;                                /* optional */
        PropCollectionLookupIntFunc lookupint;                  /* optional */
        PropCollectionLookupStringFunc lookupstring;    /* optional */
+       FunctionRNA *add, *remove;
 
        struct StructRNA *type;
 } CollectionPropertyRNA;
@@ -248,6 +261,7 @@ struct StructRNA {
        /* python type, this is a subtype of pyrna_struct_Type but used so each struct can have its own type
         * which is useful for subclassing RNA */
        void *py_type;
+       void *blender_type;
        
        /* unique identifier */
        const char *identifier;
@@ -258,6 +272,8 @@ struct StructRNA {
        const char *name;
        /* single line description, displayed in the tooltip for example */
        const char *description;
+       /* icon ID */
+       int icon;
        
        /* property that defines the name */
        PropertyRNA *nameproperty;
@@ -280,6 +296,13 @@ struct StructRNA {
        /* function to find path to this struct in an ID */
        StructPathFunc path; 
 
+       /* function to register/unregister subclasses */
+       StructRegisterFunc reg; 
+       StructUnregisterFunc unreg; 
+
+       /* callback to get id properties */
+       IDPropertiesFunc idproperties;
+
        /* functions of this struct */
        ListBase functions; 
 };