RNA: sync API changes from 2.8
[blender.git] / source / blender / makesrna / intern / rna_access.c
index 7f5c57b1e2424089f88446e651a75877a8d4e257..af3a48882ca943439fdef42121a6fa6870bbb1c5 100644 (file)
@@ -560,7 +560,7 @@ const char *RNA_struct_translation_context(const StructRNA *type)
        return type->translation_context;
 }
 
-PropertyRNA *RNA_struct_name_property(StructRNA *type)
+PropertyRNA *RNA_struct_name_property(const StructRNA *type)
 {
        return type->nameproperty;
 }
@@ -580,6 +580,22 @@ StructRNA *RNA_struct_base(StructRNA *type)
        return type->base;
 }
 
+/**
+ * Use to find the subtype directly below a base-type.
+ *
+ * So if type were `RNA_SpotLamp`, `RNA_struct_base_of(type, &RNA_ID)` would return `&RNA_Lamp`.
+ */
+const StructRNA *RNA_struct_base_child_of(const StructRNA *type, const StructRNA *parent_type)
+{
+       while (type) {
+               if (type->base == parent_type) {
+                       return type;
+               }
+               type = type->base;
+       }
+       return NULL;
+}
+
 bool RNA_struct_is_ID(const StructRNA *type)
 {
        return (type->flag & STRUCT_ID) != 0;
@@ -710,6 +726,23 @@ bool RNA_struct_contains_property(PointerRNA *ptr, PropertyRNA *prop_test)
        return found;
 }
 
+unsigned int RNA_struct_count_properties(StructRNA *srna)
+{
+       PointerRNA struct_ptr;
+       unsigned int counter = 0;
+
+       RNA_pointer_create(NULL, srna, NULL, &struct_ptr);
+
+       RNA_STRUCT_BEGIN (&struct_ptr, prop)
+       {
+               counter++;
+               UNUSED_VARS(prop);
+       }
+       RNA_STRUCT_END;
+
+       return counter;
+}
+
 /* low level direct access to type->properties, note this ignores parent classes so should be used with care */
 const struct ListBase *RNA_struct_type_properties(StructRNA *srna)
 {
@@ -6822,6 +6855,12 @@ int RNA_function_call_direct_va_lookup(bContext *C, ReportList *reports, Pointer
        return 0;
 }
 
+const char *RNA_translate_ui_text(
+        const char *text, const char *text_ctxt, StructRNA *type, PropertyRNA *prop, int translate)
+{
+       return rna_translate_ui_text(text, text_ctxt, type, prop, translate);
+}
+
 bool RNA_property_reset(PointerRNA *ptr, PropertyRNA *prop, int index)
 {
        int len;