@@ -909,6 +909,47 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl
909909 result .append ("\t void _ref(const Array &p_from) const;" )
910910 result .append ("\t const Variant *ptr() const;" )
911911 result .append ("\t Variant *ptrw();" )
912+  result .append (""" 
913+ struct Iterator { 
914+ _FORCE_INLINE_ Variant &operator*() const; 
915+ _FORCE_INLINE_ Variant *operator->() const; 
916+ _FORCE_INLINE_ Iterator &operator++(); 
917+ _FORCE_INLINE_ Iterator &operator--(); 
918+ 
919+ _FORCE_INLINE_ bool operator==(const Iterator &b) const { return elem_ptr == b.elem_ptr; } 
920+ _FORCE_INLINE_ bool operator!=(const Iterator &b) const { return elem_ptr != b.elem_ptr; } 
921+ 
922+ Iterator(Variant *p_ptr) { elem_ptr = p_ptr; } 
923+ Iterator() {} 
924+ Iterator(const Iterator &p_it) { elem_ptr = p_it.elem_ptr; } 
925+ 
926+ private: 
927+ Variant *elem_ptr = nullptr; 
928+ }; 
929+ 
930+ struct ConstIterator { 
931+ _FORCE_INLINE_ const Variant &operator*() const; 
932+ _FORCE_INLINE_ const Variant *operator->() const; 
933+ _FORCE_INLINE_ ConstIterator &operator++(); 
934+ _FORCE_INLINE_ ConstIterator &operator--(); 
935+ 
936+ _FORCE_INLINE_ bool operator==(const ConstIterator &b) const { return elem_ptr == b.elem_ptr; } 
937+ _FORCE_INLINE_ bool operator!=(const ConstIterator &b) const { return elem_ptr != b.elem_ptr; } 
938+ 
939+ ConstIterator(const Variant *p_ptr) { elem_ptr = p_ptr; } 
940+ ConstIterator() {} 
941+ ConstIterator(const ConstIterator &p_it) { elem_ptr = p_it.elem_ptr; } 
942+ 
943+ private: 
944+ const Variant *elem_ptr = nullptr; 
945+ }; 
946+ 
947+ _FORCE_INLINE_ Iterator begin(); 
948+ _FORCE_INLINE_ Iterator end(); 
949+ 
950+ _FORCE_INLINE_ ConstIterator begin() const; 
951+ _FORCE_INLINE_ ConstIterator end() const; 
952+ """ )
912953
913954 if  class_name  ==  "Dictionary" :
914955 result .append ("\t const Variant &operator[](const Variant &p_key) const;" )
0 commit comments