summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/debugger/debugger_marshalls.cpp8
-rw-r--r--core/debugger/remote_debugger.cpp3
-rw-r--r--core/debugger/remote_debugger_peer.cpp4
-rw-r--r--core/doc_data.cpp5
-rw-r--r--core/extension/extension_api_dump.cpp35
-rw-r--r--core/extension/gdextension.cpp11
-rw-r--r--core/io/ip.cpp16
-rw-r--r--core/io/udp_server.cpp2
-rw-r--r--core/object/class_db.cpp9
-rw-r--r--core/object/method_bind.h9
-rw-r--r--core/object/object.cpp5
-rw-r--r--core/templates/list.h56
-rw-r--r--drivers/unix/dir_access_unix.cpp2
-rw-r--r--drivers/unix/os_unix.cpp16
-rw-r--r--editor/animation_bezier_editor.cpp8
-rw-r--r--editor/animation_track_editor.cpp23
-rw-r--r--editor/connections_dialog.cpp7
-rw-r--r--editor/debugger/debug_adapter/debug_adapter_parser.cpp5
-rw-r--r--editor/debugger/debug_adapter/debug_adapter_protocol.cpp2
-rw-r--r--editor/debugger/editor_debugger_inspector.cpp6
-rw-r--r--editor/debugger/editor_debugger_tree.cpp13
-rw-r--r--editor/debugger/script_editor_debugger.cpp19
-rw-r--r--editor/doc_tools.cpp27
-rw-r--r--editor/editor_about.cpp5
-rw-r--r--editor/editor_audio_buses.cpp9
-rw-r--r--editor/editor_inspector.cpp8
-rw-r--r--editor/editor_node.cpp14
-rw-r--r--editor/editor_translation_parser.cpp16
-rw-r--r--editor/export/project_export.cpp10
-rw-r--r--editor/filesystem_dock.cpp10
-rw-r--r--editor/gui/scene_tree_editor.cpp6
-rw-r--r--editor/import/3d/resource_importer_scene.cpp6
-rw-r--r--editor/import/3d/scene_import_settings.cpp2
-rw-r--r--editor/inspector_dock.cpp6
-rw-r--r--editor/plugins/animation_player_editor_plugin.cpp6
-rw-r--r--editor/plugins/canvas_item_editor_plugin.cpp108
-rw-r--r--editor/plugins/editor_debugger_plugin.cpp10
-rw-r--r--editor/plugins/gizmos/joint_3d_gizmo_plugin.cpp2
-rw-r--r--editor/plugins/mesh_library_editor_plugin.cpp4
-rw-r--r--editor/plugins/node_3d_editor_gizmos.cpp10
-rw-r--r--editor/plugins/node_3d_editor_plugin.cpp12
-rw-r--r--editor/plugins/resource_preloader_editor_plugin.cpp4
-rw-r--r--editor/plugins/script_editor_plugin.cpp4
-rw-r--r--editor/plugins/script_text_editor.cpp8
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.cpp16
-rw-r--r--editor/plugins/text_shader_editor.cpp4
-rw-r--r--editor/plugins/version_control_editor_plugin.cpp42
-rw-r--r--editor/plugins/visual_shader_editor_plugin.cpp26
-rw-r--r--editor/pot_generator.cpp4
-rw-r--r--editor/property_selector.cpp16
-rw-r--r--editor/rename_dialog.cpp8
-rw-r--r--editor/scene_tree_dock.cpp42
-rw-r--r--editor/shader_create_dialog.cpp13
-rw-r--r--main/main.cpp541
-rw-r--r--modules/enet/enet_multiplayer_peer.cpp4
-rw-r--r--modules/gdscript/gdscript_analyzer.cpp37
-rw-r--r--modules/gdscript/gdscript_compiler.cpp6
-rw-r--r--modules/gdscript/gdscript_editor.cpp30
-rw-r--r--modules/gdscript/gdscript_utility_functions.cpp2
-rw-r--r--modules/gdscript/language_server/gdscript_extend_parser.cpp2
-rw-r--r--modules/gdscript/language_server/gdscript_workspace.cpp6
-rw-r--r--modules/gdscript/tests/gdscript_test_runner.cpp4
-rw-r--r--modules/gdscript/tests/gdscript_test_runner_suite.h18
-rw-r--r--modules/gdscript/tests/test_gdscript.cpp6
-rw-r--r--modules/mono/class_db_api_json.cpp4
-rw-r--r--modules/mono/editor/bindings_generator.cpp35
-rw-r--r--modules/multiplayer/scene_replication_config.cpp13
-rw-r--r--modules/multiplayer/scene_replication_interface.cpp2
-rw-r--r--modules/openxr/openxr_api.cpp8
-rw-r--r--modules/webrtc/webrtc_multiplayer_peer.cpp22
-rw-r--r--modules/websocket/remote_debugger_peer_websocket.cpp4
-rw-r--r--platform/android/export/export_plugin.cpp6
-rw-r--r--platform/android/java_godot_wrapper.cpp5
-rw-r--r--platform/ios/export/godot_plugin_config.cpp14
-rw-r--r--platform/linuxbsd/wayland/wayland_thread.cpp2
-rw-r--r--platform/web/os_web.cpp4
-rw-r--r--platform/windows/display_server_windows.cpp4
-rw-r--r--platform/windows/joypad_windows.cpp2
-rw-r--r--platform/windows/joypad_windows.h2
-rw-r--r--scene/2d/animated_sprite_2d.cpp2
-rw-r--r--scene/2d/tile_map_layer.cpp6
-rw-r--r--scene/3d/skeleton_3d.cpp2
-rw-r--r--scene/3d/sprite_3d.cpp2
-rw-r--r--scene/animation/animation_node_state_machine.cpp10
-rw-r--r--scene/animation/animation_tree.cpp6
-rw-r--r--scene/debugger/scene_debugger.cpp8
-rw-r--r--scene/gui/color_picker.cpp30
-rw-r--r--scene/main/node.cpp2
-rw-r--r--scene/resources/2d/skeleton/skeleton_modification_2d_physicalbones.cpp2
-rw-r--r--scene/resources/visual_shader.cpp54
-rw-r--r--scene/resources/visual_shader_particle_nodes.cpp6
-rw-r--r--servers/debugger/servers_debugger.cpp6
-rw-r--r--servers/rendering/renderer_rd/shader_rd.cpp4
-rw-r--r--servers/rendering/renderer_viewport.cpp2
-rw-r--r--servers/rendering/shader_compiler.cpp10
-rw-r--r--servers/rendering/shader_language.cpp28
-rw-r--r--servers/rendering/shader_types.cpp4
-rw-r--r--tests/core/object/test_class_db.h14
-rw-r--r--tests/core/object/test_object.h2
-rw-r--r--tests/core/os/test_os.h4
-rw-r--r--tests/core/variant/test_dictionary.h2
-rw-r--r--tests/scene/test_sprite_frames.h5
-rw-r--r--tests/test_main.cpp6
103 files changed, 875 insertions, 847 deletions
diff --git a/core/debugger/debugger_marshalls.cpp b/core/debugger/debugger_marshalls.cpp
index 3e6b7501c7..f4283e0ea9 100644
--- a/core/debugger/debugger_marshalls.cpp
+++ b/core/debugger/debugger_marshalls.cpp
@@ -38,10 +38,10 @@
Array DebuggerMarshalls::ScriptStackDump::serialize() {
Array arr;
arr.push_back(frames.size() * 3);
- for (int i = 0; i < frames.size(); i++) {
- arr.push_back(frames[i].file);
- arr.push_back(frames[i].line);
- arr.push_back(frames[i].func);
+ for (const ScriptLanguage::StackInfo &frame : frames) {
+ arr.push_back(frame.file);
+ arr.push_back(frame.line);
+ arr.push_back(frame.func);
}
return arr;
}
diff --git a/core/debugger/remote_debugger.cpp b/core/debugger/remote_debugger.cpp
index 1973663c72..bd30da3047 100644
--- a/core/debugger/remote_debugger.cpp
+++ b/core/debugger/remote_debugger.cpp
@@ -206,8 +206,7 @@ void RemoteDebugger::flush_output() {
Vector<String> joined_log_strings;
Vector<String> strings;
Vector<int> types;
- for (int i = 0; i < output_strings.size(); i++) {
- const OutputString &output_string = output_strings[i];
+ for (const OutputString &output_string : output_strings) {
if (output_string.type == MESSAGE_TYPE_ERROR) {
if (!joined_log_strings.is_empty()) {
strings.push_back(String("\n").join(joined_log_strings));
diff --git a/core/debugger/remote_debugger_peer.cpp b/core/debugger/remote_debugger_peer.cpp
index 81ee09f515..21a9014626 100644
--- a/core/debugger/remote_debugger_peer.cpp
+++ b/core/debugger/remote_debugger_peer.cpp
@@ -45,7 +45,7 @@ bool RemoteDebuggerPeerTCP::has_message() {
Array RemoteDebuggerPeerTCP::get_message() {
MutexLock lock(mutex);
ERR_FAIL_COND_V(!has_message(), Array());
- Array out = in_queue[0];
+ Array out = in_queue.front()->get();
in_queue.pop_front();
return out;
}
@@ -100,7 +100,7 @@ void RemoteDebuggerPeerTCP::_write_out() {
break; // Nothing left to send
}
mutex.lock();
- Variant var = out_queue[0];
+ Variant var = out_queue.front()->get();
out_queue.pop_front();
mutex.unlock();
int size = 0;
diff --git a/core/doc_data.cpp b/core/doc_data.cpp
index 7549ba884e..672a36c35c 100644
--- a/core/doc_data.cpp
+++ b/core/doc_data.cpp
@@ -152,9 +152,10 @@ void DocData::method_doc_from_methodinfo(DocData::MethodDoc &p_method, const Met
return_doc_from_retinfo(p_method, p_methodinfo.return_val);
- for (int i = 0; i < p_methodinfo.arguments.size(); i++) {
+ int i = 0;
+ for (List<PropertyInfo>::ConstIterator itr = p_methodinfo.arguments.begin(); itr != p_methodinfo.arguments.end(); ++itr, ++i) {
DocData::ArgumentDoc argument;
- argument_doc_from_arginfo(argument, p_methodinfo.arguments[i]);
+ argument_doc_from_arginfo(argument, *itr);
int default_arg_index = i - (p_methodinfo.arguments.size() - p_methodinfo.default_arguments.size());
if (default_arg_index >= 0) {
Variant default_arg = p_methodinfo.default_arguments[default_arg_index];
diff --git a/core/extension/extension_api_dump.cpp b/core/extension/extension_api_dump.cpp
index d7fba74365..1c9b4dc3e8 100644
--- a/core/extension/extension_api_dump.cpp
+++ b/core/extension/extension_api_dump.cpp
@@ -1018,26 +1018,34 @@ Dictionary GDExtensionAPIDump::generate_extension_api(bool p_include_docs) {
d2["is_virtual"] = true;
// virtual functions have no hash since no MethodBind is involved
bool has_return = mi.return_val.type != Variant::NIL || (mi.return_val.usage & PROPERTY_USAGE_NIL_IS_VARIANT);
- Array arguments;
- for (int i = (has_return ? -1 : 0); i < mi.arguments.size(); i++) {
- PropertyInfo pinfo = i == -1 ? mi.return_val : mi.arguments[i];
+ if (has_return) {
+ PropertyInfo pinfo = mi.return_val;
Dictionary d3;
- if (i >= 0) {
- d3["name"] = pinfo.name;
+ d3["type"] = get_property_info_type_name(pinfo);
+
+ if (mi.get_argument_meta(-1) > 0) {
+ d3["meta"] = get_type_meta_name((GodotTypeInfo::Metadata)mi.get_argument_meta(-1));
}
+ d2["return_value"] = d3;
+ }
+
+ Array arguments;
+ int i = 0;
+ for (List<PropertyInfo>::ConstIterator itr = mi.arguments.begin(); itr != mi.arguments.end(); ++itr, ++i) {
+ const PropertyInfo &pinfo = *itr;
+ Dictionary d3;
+
+ d3["name"] = pinfo.name;
+
d3["type"] = get_property_info_type_name(pinfo);
if (mi.get_argument_meta(i) > 0) {
d3["meta"] = get_type_meta_name((GodotTypeInfo::Metadata)mi.get_argument_meta(i));
}
- if (i == -1) {
- d2["return_value"] = d3;
- } else {
- arguments.push_back(d3);
- }
+ arguments.push_back(d3);
}
if (arguments.size()) {
@@ -1151,10 +1159,11 @@ Dictionary GDExtensionAPIDump::generate_extension_api(bool p_include_docs) {
Array arguments;
- for (int i = 0; i < F.arguments.size(); i++) {
+ int i = 0;
+ for (List<PropertyInfo>::ConstIterator itr = F.arguments.begin(); itr != F.arguments.end(); ++itr, ++i) {
Dictionary d3;
- d3["name"] = F.arguments[i].name;
- d3["type"] = get_property_info_type_name(F.arguments[i]);
+ d3["name"] = itr->name;
+ d3["type"] = get_property_info_type_name(*itr);
if (F.get_argument_meta(i) > 0) {
d3["meta"] = get_type_meta_name((GodotTypeInfo::Metadata)F.get_argument_meta(i));
}
diff --git a/core/extension/gdextension.cpp b/core/extension/gdextension.cpp
index b48ea97040..a26bb3e8f3 100644
--- a/core/extension/gdextension.cpp
+++ b/core/extension/gdextension.cpp
@@ -211,14 +211,14 @@ protected:
if (p_arg < 0) {
return return_value_info.type;
} else {
- return arguments_info[p_arg].type;
+ return arguments_info.get(p_arg).type;
}
}
virtual PropertyInfo _gen_argument_type_info(int p_arg) const override {
if (p_arg < 0) {
return return_value_info;
} else {
- return arguments_info[p_arg];
+ return arguments_info.get(p_arg);
}
}
@@ -232,7 +232,7 @@ public:
if (p_arg < 0) {
return return_value_metadata;
} else {
- return arguments_metadata[p_arg];
+ return arguments_metadata.get(p_arg);
}
}
#endif
@@ -319,8 +319,9 @@ public:
return false;
}
- for (uint32_t i = 0; i < p_method_info->argument_count; i++) {
- if (arguments_info[i].type != (Variant::Type)p_method_info->arguments_info[i].type) {
+ List<PropertyInfo>::ConstIterator itr = arguments_info.begin();
+ for (uint32_t i = 0; i < p_method_info->argument_count; ++itr, ++i) {
+ if (itr->type != (Variant::Type)p_method_info->arguments_info[i].type) {
return false;
}
}
diff --git a/core/io/ip.cpp b/core/io/ip.cpp
index ec86104926..f20d65bef9 100644
--- a/core/io/ip.cpp
+++ b/core/io/ip.cpp
@@ -148,8 +148,8 @@ PackedStringArray IP::resolve_hostname_addresses(const String &p_hostname, Type
resolver->mutex.unlock();
PackedStringArray result;
- for (int i = 0; i < res.size(); ++i) {
- result.push_back(String(res[i]));
+ for (const IPAddress &E : res) {
+ result.push_back(String(E));
}
return result;
}
@@ -206,9 +206,9 @@ IPAddress IP::get_resolve_item_address(ResolverID p_id) const {
List<IPAddress> res = resolver->queue[p_id].response;
- for (int i = 0; i < res.size(); ++i) {
- if (res[i].is_valid()) {
- return res[i];
+ for (const IPAddress &E : res) {
+ if (E.is_valid()) {
+ return E;
}
}
return IPAddress();
@@ -226,9 +226,9 @@ Array IP::get_resolve_item_addresses(ResolverID p_id) const {
List<IPAddress> res = resolver->queue[p_id].response;
Array result;
- for (int i = 0; i < res.size(); ++i) {
- if (res[i].is_valid()) {
- result.push_back(String(res[i]));
+ for (const IPAddress &E : res) {
+ if (E.is_valid()) {
+ result.push_back(String(E));
}
}
return result;
diff --git a/core/io/udp_server.cpp b/core/io/udp_server.cpp
index 215c6903a6..75ba784dbd 100644
--- a/core/io/udp_server.cpp
+++ b/core/io/udp_server.cpp
@@ -161,7 +161,7 @@ Ref<PacketPeerUDP> UDPServer::take_connection() {
return conn;
}
- Peer peer = pending[0];
+ Peer peer = pending.front()->get();
pending.pop_front();
peers.push_back(peer);
return peer.peer;
diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp
index 876635529c..6b84dfcee9 100644
--- a/core/object/class_db.cpp
+++ b/core/object/class_db.cpp
@@ -425,8 +425,8 @@ uint32_t ClassDB::get_api_hash(APIType p_api) {
for (const StringName &F : snames) {
MethodInfo &mi = t->signal_map[F];
hash = hash_murmur3_one_64(F.hash(), hash);
- for (int i = 0; i < mi.arguments.size(); i++) {
- hash = hash_murmur3_one_64(mi.arguments[i].type, hash);
+ for (const PropertyInfo &pi : mi.arguments) {
+ hash = hash_murmur3_one_64(pi.type, hash);
}
}
}
@@ -1856,8 +1856,9 @@ void ClassDB::add_virtual_method(const StringName &p_class, const MethodInfo &p_
if (p_arg_names.size() != mi.arguments.size()) {
WARN_PRINT("Mismatch argument name count for virtual method: " + String(p_class) + "::" + p_method.name);
} else {
- for (int i = 0; i < p_arg_names.size(); i++) {
- mi.arguments[i].name = p_arg_names[i];
+ List<PropertyInfo>::Iterator itr = mi.arguments.begin();
+ for (int i = 0; i < p_arg_names.size(); ++itr, ++i) {
+ itr->name = p_arg_names[i];
}
}
}
diff --git a/core/object/method_bind.h b/core/object/method_bind.h
index e97f4abc6a..2f9a2d1679 100644
--- a/core/object/method_bind.h
+++ b/core/object/method_bind.h
@@ -152,7 +152,7 @@ public:
if (p_arg < 0) {
return _gen_return_type_info();
} else if (p_arg < method_info.arguments.size()) {
- return method_info.arguments[p_arg];
+ return method_info.arguments.get(p_arg);
} else {
return PropertyInfo(Variant::NIL, "arg_" + itos(p_arg), PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_NIL_IS_VARIANT);
}
@@ -193,10 +193,11 @@ public:
Vector<StringName> names;
names.resize(method_info.arguments.size());
#endif
- for (int i = 0; i < method_info.arguments.size(); i++) {
- at[i + 1] = method_info.arguments[i].type;
+ int i = 0;
+ for (List<PropertyInfo>::ConstIterator itr = method_info.arguments.begin(); itr != method_info.arguments.end(); ++itr, ++i) {
+ at[i + 1] = itr->type;
#ifdef DEBUG_METHODS_ENABLED
- names.write[i] = method_info.arguments[i].name;
+ names.write[i] = itr->name;
#endif
}
diff --git a/core/object/object.cpp b/core/object/object.cpp
index b6c8a87a22..ab89f96a0d 100644
--- a/core/object/object.cpp
+++ b/core/object/object.cpp
@@ -1302,9 +1302,8 @@ TypedArray<Dictionary> Object::_get_signal_connection_list(const StringName &p_s
TypedArray<Dictionary> Object::_get_incoming_connections() const {
TypedArray<Dictionary> ret;
- int connections_amount = connections.size();
- for (int idx_conn = 0; idx_conn < connections_amount; idx_conn++) {
- ret.push_back(connections[idx_conn]);
+ for (const Object::Connection &connection : connections) {
+ ret.push_back(connection);
}
return ret;
diff --git a/core/templates/list.h b/core/templates/list.h
index b4d4beb930..6663f06c30 100644
--- a/core/templates/list.h
+++ b/core/templates/list.h
@@ -139,54 +139,58 @@ public:
typedef T ValueType;
- struct Iterator {
- _FORCE_INLINE_ T &operator*() const {
+ struct ConstIterator {
+ _FORCE_INLINE_ const T &operator*() const {
return E->get();
}
- _FORCE_INLINE_ T *operator->() const { return &E->get(); }
- _FORCE_INLINE_ Iterator &operator++() {
+ _FORCE_INLINE_ const T *operator->() const { return &E->get(); }
+ _FORCE_INLINE_ ConstIterator &operator++() {
E = E->next();
return *this;
}
- _FORCE_INLINE_ Iterator &operator--() {
+ _FORCE_INLINE_ ConstIterator &operator--() {
E = E->prev();
return *this;
}
- _FORCE_INLINE_ bool operator==(const Iterator &b) const { return E == b.E; }
- _FORCE_INLINE_ bool operator!=(const Iterator &b) const { return E != b.E; }
+ _FORCE_INLINE_ bool operator==(const ConstIterator &b) const { return E == b.E; }
+ _FORCE_INLINE_ bool operator!=(const ConstIterator &b) const { return E != b.E; }
- Iterator(Element *p_E) { E = p_E; }
- Iterator() {}
- Iterator(const Iterator &p_it) { E = p_it.E; }
+ _FORCE_INLINE_ ConstIterator(const Element *p_E) { E = p_E; }
+ _FORCE_INLINE_ ConstIterator() {}
+ _FORCE_INLINE_ ConstIterator(const ConstIterator &p_it) { E = p_it.E; }
private:
- Element *E = nullptr;
+ const Element *E = nullptr;
};
- struct ConstIterator {
- _FORCE_INLINE_ const T &operator*() const {
+ struct Iterator {
+ _FORCE_INLINE_ T &operator*() const {
return E->get();
}
- _FORCE_INLINE_ const T *operator->() const { return &E->get(); }
- _FORCE_INLINE_ ConstIterator &operator++() {
+ _FORCE_INLINE_ T *operator->() const { return &E->get(); }
+ _FORCE_INLINE_ Iterator &operator++() {
E = E->next();
return *this;
}
- _FORCE_INLINE_ ConstIterator &operator--() {
+ _FORCE_INLINE_ Iterator &operator--() {
E = E->prev();
return *this;
}
- _FORCE_INLINE_ bool operator==(const ConstIterator &b) const { return E == b.E; }
- _FORCE_INLINE_ bool operator!=(const ConstIterator &b) const { return E != b.E; }
+ _FORCE_INLINE_ bool operator==(const Iterator &b) const { return E == b.E; }
+ _FORCE_INLINE_ bool operator!=(const Iterator &b) const { return E != b.E; }
- _FORCE_INLINE_ ConstIterator(const Element *p_E) { E = p_E; }
- _FORCE_INLINE_ ConstIterator() {}
- _FORCE_INLINE_ ConstIterator(const ConstIterator &p_it) { E = p_it.E; }
+ Iterator(Element *p_E) { E = p_E; }
+ Iterator() {}
+ Iterator(const Iterator &p_it) { E = p_it.E; }
+
+ operator ConstIterator() const {
+ return ConstIterator(E);
+ }
private:
- const Element *E = nullptr;
+ Element *E = nullptr;
};
_FORCE_INLINE_ Iterator begin() {
@@ -519,7 +523,9 @@ public:
}
}
- T &operator[](int p_index) {
+ // Random access to elements, use with care,
+ // do not use for iteration.
+ T &get(int p_index) {
CRASH_BAD_INDEX(p_index, size());
Element *I = front();
@@ -532,7 +538,9 @@ public:
return I->get();
}
- const T &operator[](int p_index) const {
+ // Random access to elements, use with care,
+ // do not use for iteration.
+ const T &get(int p_index) const {
CRASH_BAD_INDEX(p_index, size());
const Element *I = front();
diff --git a/drivers/unix/dir_access_unix.cpp b/drivers/unix/dir_access_unix.cpp
index 2a85a81b91..a4208829b7 100644
--- a/drivers/unix/dir_access_unix.cpp
+++ b/drivers/unix/dir_access_unix.cpp
@@ -289,7 +289,7 @@ String DirAccessUnix::get_drive(int p_drive) {
ERR_FAIL_INDEX_V(p_drive, list.size(), "");
- return list[p_drive];
+ return list.get(p_drive);
}
int DirAccessUnix::get_current_drive() {
diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp
index 0a79c8014b..ce2553456d 100644
--- a/drivers/unix/os_unix.cpp
+++ b/drivers/unix/os_unix.cpp
@@ -546,8 +546,8 @@ Dictionary OS_Unix::execute_with_pipe(const String &p_path, const List<String> &
// The child process.
Vector<CharString> cs;
cs.push_back(p_path.utf8());
- for (int i = 0; i < p_arguments.size(); i++) {
- cs.push_back(p_arguments[i].utf8());
+ for (const String &arg : p_arguments) {
+ cs.push_back(arg.utf8());
}
Vector<char *> args;
@@ -606,8 +606,8 @@ Error OS_Unix::execute(const String &p_path, const List<String> &p_arguments, St
#else
if (r_pipe) {
String command = "\"" + p_path + "\"";
- for (int i = 0; i < p_arguments.size(); i++) {
- command += String(" \"") + p_arguments[i] + "\"";
+ for (const String &arg : p_arguments) {
+ command += String(" \"") + arg + "\"";
}
if (read_stderr) {
command += " 2>&1"; // Include stderr
@@ -647,8 +647,8 @@ Error OS_Unix::execute(const String &p_path, const List<String> &p_arguments, St
// The child process
Vector<CharString> cs;
cs.push_back(p_path.utf8());
- for (int i = 0; i < p_arguments.size(); i++) {
- cs.push_back(p_arguments[i].utf8());
+ for (const String &arg : p_arguments) {
+ cs.push_back(arg.utf8());
}
Vector<char *> args;
@@ -689,8 +689,8 @@ Error OS_Unix::create_process(const String &p_path, const List<String> &p_argume
Vector<CharString> cs;
cs.push_back(p_path.utf8());
- for (int i = 0; i < p_arguments.size(); i++) {
- cs.push_back(p_arguments[i].utf8());
+ for (const String &arg : p_arguments) {
+ cs.push_back(arg.utf8());
}
Vector<char *> args;
diff --git a/editor/animation_bezier_editor.cpp b/editor/animation_bezier_editor.cpp
index a16446aea6..af4b759c7a 100644
--- a/editor/animation_bezier_editor.cpp
+++ b/editor/animation_bezier_editor.cpp
@@ -1397,8 +1397,10 @@ void AnimationBezierTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
}
// 6-(undo) reinsert overlapped keys
- for (int i = 0; i < to_restore.size(); i++) {
- const AnimMoveRestore &amr = to_restore[i];
+ List<AnimMoveRestore>::ConstIterator restore_itr = to_restore.begin();
+ List<Animation::HandleMode>::ConstIterator handle_itr = to_restore_handle_modes.begin();
+ for (; restore_itr != to_restore.end() && handle_itr != to_restore_handle_modes.end(); ++restore_itr, ++handle_itr) {
+ const AnimMoveRestore &amr = *restore_itr;
Array key = amr.key;
undo_redo->add_undo_method(animation.ptr(), "track_insert_key", amr.track, amr.time, amr.key, 1);
undo_redo->add_undo_method(
@@ -1409,7 +1411,7 @@ void AnimationBezierTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
key[0],
Vector2(key[1], key[2]),
Vector2(key[3], key[4]),
- to_restore_handle_modes[i]);
+ *handle_itr);
}
undo_redo->add_do_method(this, "_clear_selection_for_anim", animation);
diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp
index 88e0878bd4..7dca019eff 100644
--- a/editor/animation_track_editor.cpp
+++ b/editor/animation_track_editor.cpp
@@ -694,7 +694,7 @@ void AnimationMultiTrackKeyEdit::_key_ofs_changed(const Ref<Animation> &p_anim,
}
int track = E.key;
- key_ofs_map[track][key] = to;
+ key_ofs_map[track].get(key) = to;
if (setting) {
return;
@@ -3803,8 +3803,8 @@ void AnimationTrackEditor::commit_insert_queue() {
reset_allowed = false;
} else {
bool some_resettable = false;
- for (int i = 0; i < insert_data.size(); i++) {
- if (track_type_is_resettable(insert_data[i].type)) {
+ for (const AnimationTrackEditor::InsertData &E : insert_data) {
+ if (track_type_is_resettable(E.type)) {
some_resettable = true;
break;
}
@@ -3818,21 +3818,21 @@ void AnimationTrackEditor::commit_insert_queue() {
int num_tracks = 0;
String last_track_query;
bool all_bezier = true;
- for (int i = 0; i < insert_data.size(); i++) {
- if (insert_data[i].type != Animation::TYPE_VALUE && insert_data[i].type != Animation::TYPE_BEZIER) {
+ for (const AnimationTrackEditor::InsertData &E : insert_data) {
+ if (E.type != Animation::TYPE_VALUE && E.type != Animation::TYPE_BEZIER) {
all_bezier = false;
}
- if (insert_data[i].track_idx == -1) {
+ if (E.track_idx == -1) {
++num_tracks;
- last_track_query = insert_data[i].query;
+ last_track_query = E.query;
}
- if (insert_data[i].type != Animation::TYPE_VALUE) {
+ if (E.type != Animation::TYPE_VALUE) {
continue;
}
- switch (insert_data[i].value.get_type()) {
+ switch (E.value.get_type()) {
case Variant::INT:
case Variant::FLOAT:
case Variant::VECTOR2:
@@ -5317,14 +5317,15 @@ void AnimationTrackEditor::_add_method_key(const String &p_method) {
Array params;
int first_defarg = E.arguments.size() - E.default_arguments.size();
- for (int i = 0; i < E.arguments.size(); i++) {
+ int i = 0;
+ for (List<PropertyInfo>::ConstIterator itr = E.arguments.begin(); itr != E.arguments.end(); ++itr, ++i) {
if (i >= first_defarg) {
Variant arg = E.default_arguments[i - first_defarg];
params.push_back(arg);
} else {
Callable::CallError ce;
Variant arg;
- Variant::construct(E.arguments[i].type, arg, nullptr, 0, ce);
+ Variant::construct(itr->type, arg, nullptr, 0, ce);
params.push_back(arg);
}
}
diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp
index f57e9cb5f8..7714749b66 100644
--- a/editor/connections_dialog.cpp
+++ b/editor/connections_dialog.cpp
@@ -529,12 +529,13 @@ String ConnectDialog::get_signature(const MethodInfo &p_method, PackedStringArra
signature.append(p_method.name);
signature.append("(");
- for (int i = 0; i < p_method.arguments.size(); i++) {
- if (i > 0) {
+ int i = 0;
+ for (List<PropertyInfo>::ConstIterator itr = p_method.arguments.begin(); itr != p_method.arguments.end(); ++itr, ++i) {
+ if (itr != p_method.arguments.begin()) {
signature.append(", ");
}
- const PropertyInfo &pi = p_method.arguments[i];
+ const PropertyInfo &pi = *itr;
String type_name;
switch (pi.type) {
case Variant::NIL:
diff --git a/editor/debugger/debug_adapter/debug_adapter_parser.cpp b/editor/debugger/debug_adapter/debug_adapter_parser.cpp
index b75e5c1c0d..3c0420d2f0 100644
--- a/editor/debugger/debug_adapter/debug_adapter_parser.cpp
+++ b/editor/debugger/debug_adapter/debug_adapter_parser.cpp
@@ -407,9 +407,10 @@ Dictionary DebugAdapterParser::req_scopes(const Dictionary &p_params) const {
HashMap<DAP::StackFrame, List<int>, DAP::StackFrame>::Iterator E = DebugAdapterProtocol::get_singleton()->stackframe_list.find(frame);
if (E) {
ERR_FAIL_COND_V(E->value.size() != 3, prepare_error_response(p_params, DAP::ErrorType::UNKNOWN));
- for (int i = 0; i < 3; i++) {
+ List<int>::ConstIterator itr = E->value.begin();
+ for (int i = 0; i < 3; ++itr, ++i) {
DAP::Scope scope;
- scope.variablesReference = E->value[i];
+ scope.variablesReference = *itr;
switch (i) {
case 0:
scope.name = "Locals";
diff --git a/editor/debugger/debug_adapter/debug_adapter_protocol.cpp b/editor/debugger/debug_adapter/debug_adapter_protocol.cpp
index c86ca7aaad..56cb3b6c73 100644
--- a/editor/debugger/debug_adapter/debug_adapter_protocol.cpp
+++ b/editor/debugger/debug_adapter/debug_adapter_protocol.cpp
@@ -967,7 +967,7 @@ void DebugAdapterProtocol::on_debug_stack_frame_var(const Array &p_data) {
List<int> scope_ids = stackframe_list.find(frame)->value;
ERR_FAIL_COND(scope_ids.size() != 3);
ERR_FAIL_INDEX(stack_var.type, 3);
- int var_id = scope_ids[stack_var.type];
+ int var_id = scope_ids.get(stack_var.type);
DAP::Variable variable;
diff --git a/editor/debugger/editor_debugger_inspector.cpp b/editor/debugger/editor_debugger_inspector.cpp
index b2fd84d2ed..816bd6b72c 100644
--- a/editor/debugger/editor_debugger_inspector.cpp
+++ b/editor/debugger/editor_debugger_inspector.cpp
@@ -146,9 +146,9 @@ ObjectID EditorDebuggerInspector::add_object(const Array &p_arr) {
debug_obj->prop_list.clear();
int new_props_added = 0;
HashSet<String> changed;
- for (int i = 0; i < obj.properties.size(); i++) {
- PropertyInfo &pinfo = obj.properties[i].first;
- Variant &var = obj.properties[i].second;
+ for (SceneDebuggerObject::SceneDebuggerProperty &property : obj.properties) {
+ PropertyInfo &pinfo = property.first;
+ Variant &var = property.second;
if (pinfo.type == Variant::OBJECT) {
if (var.get_type() == Variant::STRING) {
diff --git a/editor/debugger/editor_debugger_tree.cpp b/editor/debugger/editor_debugger_tree.cpp
index de2e51ee81..63053d2574 100644
--- a/editor/debugger/editor_debugger_tree.cpp
+++ b/editor/debugger/editor_debugger_tree.cpp
@@ -147,17 +147,16 @@ void EditorDebuggerTree::update_scene_tree(const SceneDebuggerTree *p_tree, int
// Nodes are in a flatten list, depth first. Use a stack of parents, avoid recursion.
List<Pair<TreeItem *, int>> parents;
- for (int i = 0; i < p_tree->nodes.size(); i++) {
+ for (const SceneDebuggerTree::RemoteNode &node : p_tree->nodes) {
TreeItem *parent = nullptr;
if (parents.size()) { // Find last parent.
- Pair<TreeItem *, int> &p = parents[0];
+ Pair<TreeItem *, int> &p = parents.front()->get();
parent = p.first;
if (!(--p.second)) { // If no child left, remove it.
parents.pop_front();
}
}
// Add this node.
- const SceneDebuggerTree::RemoteNode &node = p_tree->nodes[i];
TreeItem *item = create_item(parent);
item->set_text(0, node.name);
if (node.scene_file_path.is_empty()) {
@@ -244,8 +243,8 @@ void EditorDebuggerTree::update_scene_tree(const SceneDebuggerTree *p_tree, int
item = parent;
parent = item->get_parent();
// Check if parent expects more children.
- for (int j = 0; j < parents.size(); j++) {
- if (parents[j].first == item) {
+ for (const Pair<TreeItem *, int> &pair : parents) {
+ if (pair.first == item) {
parent = nullptr;
break; // Might have more children.
}
@@ -326,8 +325,8 @@ void EditorDebuggerTree::_item_menu_id_pressed(int p_option) {
Ref<PackedScene> sd = memnew(PackedScene);
ResourceSaver::get_recognized_extensions(sd, &extensions);
file_dialog->clear_filters();
- for (int i = 0; i < extensions.size(); i++) {
- file_dialog->add_filter("*." + extensions[i], extensions[i].to_upper());
+ for (const String &extension : extensions) {
+ file_dialog->add_filter("*." + extension, extension.to_upper());
}
String filename = get_selected_path().get_file() + "." + extensions.front()->get().to_lower();
diff --git a/editor/debugger/script_editor_debugger.cpp b/editor/debugger/script_editor_debugger.cpp
index 2b880274f8..d5cf887a4e 100644
--- a/editor/debugger/script_editor_debugger.cpp
+++ b/editor/debugger/script_editor_debugger.cpp
@@ -440,13 +440,14 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, uint64_t p_thread
Array stack_dump_info;
- for (int i = 0; i < stack.frames.size(); i++) {
+ int i = 0;
+ for (List<ScriptLanguage::StackInfo>::Iterator itr = stack.frames.begin(); itr != stack.frames.end(); ++itr, ++i) {
TreeItem *s = stack_dump->create_item(r);
Dictionary d;
d["frame"] = i;
- d["file"] = stack.frames[i].file;
- d["function"] = stack.frames[i].func;
- d["line"] = stack.frames[i].line;
+ d["file"] = itr->file;
+ d["function"] = itr->func;
+ d["line"] = itr->line;
stack_dump_info.push_back(d);
s->set_metadata(0, d);
@@ -725,20 +726,20 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, uint64_t p_thread
metric.categories.push_back(frame_time);
}
- for (int i = 0; i < frame.servers.size(); i++) {
- const ServersDebugger::ServerInfo &srv = frame.servers[i];
+ for (const ServersDebugger::ServerInfo &srv : frame.servers) {
EditorProfiler::Metric::Category c;
const String name = srv.name;
c.name = EditorPropertyNameProcessor::get_singleton()->process_name(name, EditorPropertyNameProcessor::STYLE_CAPITALIZED);
c.items.resize(srv.functions.size());
c.total_time = 0;
c.signature = "categ::" + name;
- for (int j = 0; j < srv.functions.size(); j++) {
+ int j = 0;
+ for (List<ServersDebugger::ServerFunctionInfo>::ConstIterator itr = srv.functions.begin(); itr != srv.functions.end(); ++itr, ++j) {
EditorProfiler::Metric::Category::Item item;
item.calls = 1;
item.line = 0;
- item.name = srv.functions[j].name;
- item.self = srv.functions[j].time;
+ item.name = itr->name;
+ item.self = itr->time;
item.total = item.self;
item.signature = "categ::" + name + "::" + item.name;
item.name = EditorPropertyNameProcessor::get_singleton()->process_name(item.name, EditorPropertyNameProcessor::STYLE_CAPITALIZED);
diff --git a/editor/doc_tools.cpp b/editor/doc_tools.cpp
index db45478d21..d3875709ee 100644
--- a/editor/doc_tools.cpp
+++ b/editor/doc_tools.cpp
@@ -476,10 +476,10 @@ void DocTools::generate(BitField<GenerateFlags> p_flags) {
ResourceImporter *resimp = Object::cast_to<ResourceImporter>(ClassDB::instantiate(name));
List<ResourceImporter::ImportOption> options;
resimp->get_import_options("", &options);
- for (int i = 0; i < options.size(); i++) {
- const PropertyInfo &prop = options[i].option;
+ for (const ResourceImporter::ImportOption &option : options) {
+ const PropertyInfo &prop = option.option;
properties.push_back(prop);
- import_options_default[prop.name] = options[i].default_value;
+ import_options_default[prop.name] = option.default_value;
}
own_properties = properties;
memdelete(resimp);
@@ -665,8 +665,8 @@ void DocTools::generate(BitField<GenerateFlags> p_flags) {
for (List<MethodInfo>::Element *EV = signal_list.front(); EV; EV = EV->next()) {
DocData::MethodDoc signal;
signal.name = EV->get().name;
- for (int i = 0; i < EV->get().arguments.size(); i++) {
- const PropertyInfo &arginfo = EV->get().arguments[i];
+ for (List<PropertyInfo>::Element *EA = EV->get().arguments.front(); EA; EA = EA->next()) {
+ const PropertyInfo &arginfo = EA->get();
DocData::ArgumentDoc argument;
DocData::argument_doc_from_arginfo(argument, arginfo);
@@ -857,10 +857,11 @@ void DocTools::generate(BitField<GenerateFlags> p_flags) {
method.name = mi.name;
- for (int j = 0; j < mi.arguments.size(); j++) {
- PropertyInfo arginfo = mi.arguments[j];
+ int j = 0;
+ for (List<PropertyInfo>::ConstIterator itr = mi.arguments.begin(); itr != mi.arguments.end(); ++itr, ++j) {
+ PropertyInfo arginfo = *itr;
DocData::ArgumentDoc ad;
- DocData::argument_doc_from_arginfo(ad, mi.arguments[j]);
+ DocData::argument_doc_from_arginfo(ad, arginfo);
ad.name = arginfo.name;
int darg_idx = mi.default_arguments.size() - mi.arguments.size() + j;
@@ -1047,9 +1048,10 @@ void DocTools::generate(BitField<GenerateFlags> p_flags) {
DocData::return_doc_from_retinfo(md, mi.return_val);
- for (int j = 0; j < mi.arguments.size(); j++) {
+ int j = 0;
+ for (List<PropertyInfo>::ConstIterator itr = mi.arguments.begin(); itr != mi.arguments.end(); ++itr, ++j) {
DocData::ArgumentDoc ad;
- DocData::argument_doc_from_arginfo(ad, mi.arguments[j]);
+ DocData::argument_doc_from_arginfo(ad, *itr);
int darg_idx = j - (mi.arguments.size() - mi.default_arguments.size());
if (darg_idx >= 0) {
@@ -1091,9 +1093,10 @@ void DocTools::generate(BitField<GenerateFlags> p_flags) {
DocData::return_doc_from_retinfo(atd, ai.return_val);
- for (int j = 0; j < ai.arguments.size(); j++) {
+ int j = 0;
+ for (List<PropertyInfo>::ConstIterator itr = ai.arguments.begin(); itr != ai.arguments.end(); ++itr, ++j) {
DocData::ArgumentDoc ad;
- DocData::argument_doc_from_arginfo(ad, ai.arguments[j]);
+ DocData::argument_doc_from_arginfo(ad, *itr);
int darg_idx = j - (ai.arguments.size() - ai.default_arguments.size());
if (darg_idx >= 0) {
diff --git a/editor/editor_about.cpp b/editor/editor_about.cpp
index af0419a81a..af4631a539 100644
--- a/editor/editor_about.cpp
+++ b/editor/editor_about.cpp
@@ -107,13 +107,14 @@ ScrollContainer *EditorAbout::_populate_list(const String &p_name, const List<St
Ref<StyleBoxEmpty> empty_stylebox = memnew(StyleBoxEmpty);
- for (int i = 0; i < p_sections.size(); i++) {
+ int i = 0;
+ for (List<String>::ConstIterator itr = p_sections.begin(); itr != p_sections.end(); ++itr, ++i) {
bool single_column = p_single_column_flags & (1 << i);
const char *const *names_ptr = p_src[i];
if (*names_ptr) {
Label *lbl = memnew(Label);
lbl->set_theme_type_variation("HeaderSmall");
- lbl->set_text(p_sections[i]);
+ lbl->set_text(*itr);
vbc->add_child(lbl);
ItemList *il = memnew(ItemList);
diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp
index 658bc33ddc..e20d046e00 100644
--- a/editor/editor_audio_buses.cpp
+++ b/editor/editor_audio_buses.cpp
@@ -1426,9 +1426,9 @@ Size2 EditorAudioMeterNotches::get_minimum_size() const {
float width = 0;
float height = top_padding + btm_padding;
- for (int i = 0; i < notches.size(); i++) {
- if (notches[i].render_db_value) {
- width = MAX(width, font->get_string_size(String::num(Math::abs(notches[i].db_value)) + "dB", HORIZONTAL_ALIGNMENT_LEFT, -1, font_size).x);
+ for (const EditorAudioMeterNotches::AudioNotch &notch : notches) {
+ if (notch.render_db_value) {
+ width = MAX(width, font->get_string_size(String::num(Math::abs(notch.db_value)) + "dB", HORIZONTAL_ALIGNMENT_LEFT, -1, font_size).x);
height += font_height;
}
}
@@ -1462,8 +1462,7 @@ void EditorAudioMeterNotches::_notification(int p_what) {
void EditorAudioMeterNotches::_draw_audio_notches() {
float font_height = theme_cache.font->get_height(theme_cache.font_size);
- for (int i = 0; i < notches.size(); i++) {
- AudioNotch n = notches[i];
+ for (const AudioNotch &n : notches) {
draw_line(Vector2(0, (1.0f - n.relative_position) * (get_size().y - btm_padding - top_padding) + top_padding),
Vector2(line_length * EDSCALE, (1.0f - n.relative_position) * (get_size().y - btm_padding - top_padding) + top_padding),
theme_cache.notch_color,
diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp
index 845ca9b26d..dd9805085b 100644
--- a/editor/editor_inspector.cpp
+++ b/editor/editor_inspector.cpp
@@ -2563,16 +2563,16 @@ EditorProperty *EditorInspector::instantiate_property_editor(Object *p_object, c
for (int i = inspector_plugin_count - 1; i >= 0; i--) {
inspector_plugins[i]->parse_property(p_object, p_type, p_path, p_hint, p_hint_text, p_usage, p_wide);
if (inspector_plugins[i]->added_editors.size()) {
- for (int j = 1; j < inspector_plugins[i]->added_editors.size(); j++) { //only keep first one
- memdelete(inspector_plugins[i]->added_editors[j].property_editor);
+ for (List<EditorInspectorPlugin::AddedEditor>::Element *E = inspector_plugins[i]->added_editors.front()->next(); E; E = E->next()) { //only keep first one
+ memdelete(E->get().property_editor);
}
- EditorProperty *prop = Object::cast_to<EditorProperty>(inspector_plugins[i]->added_editors[0].property_editor);
+ EditorProperty *prop = Object::cast_to<EditorProperty>(inspector_plugins[i]->added_editors.front()->get().property_editor);
if (prop) {
inspector_plugins[i]->added_editors.clear();
return prop;
} else {
- memdelete(inspector_plugins[i]->added_editors[0].property_editor);
+ memdelete(inspector_plugins[i]->added_editors.front()->get().property_editor);
inspector_plugins[i]->added_editors.clear();
}
}
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 5bb9aa91d2..33b46b82bc 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -2603,8 +2603,8 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
List<String> extensions;
ResourceLoader::get_recognized_extensions_for_type("PackedScene", &extensions);
file->clear_filters();
- for (int i = 0; i < extensions.size(); i++) {
- file->add_filter("*." + extensions[i], extensions[i].to_upper());
+ for (const String &extension : extensions) {
+ file->add_filter("*." + extension, extension.to_upper());
}
Node *scene = editor_data.get_edited_scene_root();
@@ -2722,8 +2722,8 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
Ref<PackedScene> sd = memnew(PackedScene);
ResourceSaver::get_recognized_extensions(sd, &extensions);
file->clear_filters();
- for (int i = 0; i < extensions.size(); i++) {
- file->add_filter("*." + extensions[i], extensions[i].to_upper());
+ for (const String &extension : extensions) {
+ file->add_filter("*." + extension, extension.to_upper());
}
if (!scene->get_scene_file_path().is_empty()) {
@@ -3054,14 +3054,14 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
List<String> extensions;
ResourceLoader::get_recognized_extensions_for_type("PackedScene", &extensions);
file->clear_filters();
- for (int i = 0; i < extensions.size(); i++) {
- file->add_filter("*." + extensions[i], extensions[i].to_upper());
+ for (const String &extension : extensions) {
+ file->add_filter("*." + extension, extension.to_upper());
}
Node *scene = editor_data.get_edited_scene_root();
if (scene) {
file->set_current_path(scene->get_scene_file_path());
- };
+ }
file->set_title(TTR("Pick a Main Scene"));
file->popup_file_dialog();
diff --git a/editor/editor_translation_parser.cpp b/editor/editor_translation_parser.cpp
index 813d7c486f..8a77ce4a82 100644
--- a/editor/editor_translation_parser.cpp
+++ b/editor/editor_translation_parser.cpp
@@ -93,8 +93,8 @@ void EditorTranslationParser::get_recognized_extensions(List<String> *r_extensio
custom_parsers[i]->get_recognized_extensions(&temp);
}
// Remove duplicates.
- for (int i = 0; i < temp.size(); i++) {
- extensions.insert(temp[i]);
+ for (const String &E : temp) {
+ extensions.insert(E);
}
for (const String &E : extensions) {
r_extensions->push_back(E);
@@ -104,8 +104,8 @@ void EditorTranslationParser::get_recognized_extensions(List<String> *r_extensio
bool EditorTranslationParser::can_parse(const String &p_extension) const {
List<String> extensions;
get_recognized_extensions(&extensions);
- for (int i = 0; i < extensions.size(); i++) {
- if (p_extension == extensions[i]) {
+ for (const String &extension : extensions) {
+ if (p_extension == extension) {
return true;
}
}
@@ -117,8 +117,8 @@ Ref<EditorTranslationParserPlugin> EditorTranslationParser::get_parser(const Str
for (int i = 0; i < custom_parsers.size(); i++) {
List<String> temp;
custom_parsers[i]->get_recognized_extensions(&temp);
- for (int j = 0; j < temp.size(); j++) {
- if (temp[j] == p_extension) {
+ for (const String &E : temp) {
+ if (E == p_extension) {
return custom_parsers[i];
}
}
@@ -127,8 +127,8 @@ Ref<EditorTranslationParserPlugin> EditorTranslationParser::get_parser(const Str
for (int i = 0; i < standard_parsers.size(); i++) {
List<String> temp;
standard_parsers[i]->get_recognized_extensions(&temp);
- for (int j = 0; j < temp.size(); j++) {
- if (temp[j] == p_extension) {
+ for (const String &E : temp) {
+ if (E == p_extension) {
return standard_parsers[i];
}
}
diff --git a/editor/export/project_export.cpp b/editor/export/project_export.cpp
index c995e590f1..1da75ff88f 100644
--- a/editor/export/project_export.cpp
+++ b/editor/export/project_export.cpp
@@ -270,8 +270,8 @@ void ProjectExportDialog::_edit_preset(int p_index) {
List<String> extension_list = current->get_platform()->get_binary_extensions(current);
Vector<String> extension_vector;
- for (int i = 0; i < extension_list.size(); i++) {
- extension_vector.push_back("*." + extension_list[i]);
+ for (const String &extension : extension_list) {
+ extension_vector.push_back("*." + extension);
}
export_path->setup(extension_vector, false, true);
@@ -1089,16 +1089,16 @@ void ProjectExportDialog::_export_project() {
export_project->clear_filters();
List<String> extension_list = platform->get_binary_extensions(current);
- for (int i = 0; i < extension_list.size(); i++) {
+ for (const String &extension : extension_list) {
// TRANSLATORS: This is the name of a project export file format. %s will be replaced by the platform name.
- export_project->add_filter("*." + extension_list[i], vformat(TTR("%s Export"), platform->get_name()));
+ export_project->add_filter("*." + extension, vformat(TTR("%s Export"), platform->get_name()));
}
if (!current->get_export_path().is_empty()) {
export_project->set_current_path(current->get_export_path());
} else {
if (extension_list.size() >= 1) {
- export_project->set_current_file(default_filename + "." + extension_list[0]);
+ export_project->set_current_file(default_filename + "." + extension_list.front()->get());
} else {
export_project->set_current_file(default_filename);
}
diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp
index ac4991755b..674b20480d 100644
--- a/editor/filesystem_dock.cpp
+++ b/editor/filesystem_dock.cpp
@@ -2268,11 +2268,11 @@ void FileSystemDock::_file_option(int p_option, const Vector<String> &p_selected
}
const bool is_directory = fpath.ends_with("/");
- for (int i = 0; i < terminal_emulator_args.size(); i++) {
+ for (String &terminal_emulator_arg : terminal_emulator_args) {
if (is_directory) {
- terminal_emulator_args[i] = terminal_emulator_args[i].replace("{directory}", ProjectSettings::get_singleton()->globalize_path(fpath));
+ terminal_emulator_arg = terminal_emulator_arg.replace("{directory}", ProjectSettings::get_singleton()->globalize_path(fpath));
} else {
- terminal_emulator_args[i] = terminal_emulator_args[i].replace("{directory}", ProjectSettings::get_singleton()->globalize_path(fpath).get_base_dir());
+ terminal_emulator_arg = terminal_emulator_arg.replace("{directory}", ProjectSettings::get_singleton()->globalize_path(fpath).get_base_dir());
}
}
@@ -2288,8 +2288,8 @@ void FileSystemDock::_file_option(int p_option, const Vector<String> &p_selected
const Error err = OS::get_singleton()->create_process(chosen_terminal_emulator, terminal_emulator_args, nullptr, true);
if (err != OK) {
String args_string;
- for (int i = 0; i < terminal_emulator_args.size(); i++) {
- args_string += terminal_emulator_args[i];
+ for (const String &terminal_emulator_arg : terminal_emulator_args) {
+ args_string += terminal_emulator_arg;
}
ERR_PRINT_ED(vformat(TTR("Couldn't run external terminal program (error code %d): %s %s\nCheck `filesystem/external_programs/terminal_emulator` and `filesystem/external_programs/terminal_emulator_flags` in the Editor Settings."), err, chosen_terminal_emulator, args_string));
}
diff --git a/editor/gui/scene_tree_editor.cpp b/editor/gui/scene_tree_editor.cpp
index 361ae2a945..7d2a3c1e24 100644
--- a/editor/gui/scene_tree_editor.cpp
+++ b/editor/gui/scene_tree_editor.cpp
@@ -755,11 +755,11 @@ bool SceneTreeEditor::_item_matches_all_terms(TreeItem *p_item, const PackedStri
node->get_groups(&group_info_list);
bool term_in_groups = false;
- for (int j = 0; j < group_info_list.size(); j++) {
- if (!group_info_list[j].persistent) {
+ for (const Node::GroupInfo &group_info : group_info_list) {
+ if (!group_info.persistent) {
continue; // Ignore internal groups.
}
- if (String(group_info_list[j].name).to_lower().contains(argument)) {
+ if (String(group_info.name).to_lower().contains(argument)) {
term_in_groups = true;
break;
}
diff --git a/editor/import/3d/resource_importer_scene.cpp b/editor/import/3d/resource_importer_scene.cpp
index bb833b1b2c..707be84381 100644
--- a/editor/import/3d/resource_importer_scene.cpp
+++ b/editor/import/3d/resource_importer_scene.cpp
@@ -1392,7 +1392,7 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<
List<StringName> anim_list;
anim_player->get_animation_list(&anim_list);
if (anim_list.size() == 1) {
- selected_animation_name = anim_list[0];
+ selected_animation_name = anim_list.front()->get();
}
rest_animation = anim_player->get_animation(selected_animation_name);
if (rest_animation.is_valid()) {
@@ -1408,7 +1408,7 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<
List<StringName> anim_list;
library->get_animation_list(&anim_list);
if (anim_list.size() == 1) {
- selected_animation_name = String(anim_list[0]);
+ selected_animation_name = String(anim_list.front()->get());
}
rest_animation = library->get_animation(selected_animation_name);
}
@@ -2203,7 +2203,7 @@ bool ResourceImporterScene::get_internal_option_visibility(InternalImportCategor
List<StringName> anim_list;
library->get_animation_list(&anim_list);
if (anim_list.size() == 1) {
- selected_animation_name = String(anim_list[0]);
+ selected_animation_name = String(anim_list.front()->get());
}
if (library->has_animation(selected_animation_name)) {
anim = library->get_animation(selected_animation_name);
diff --git a/editor/import/3d/scene_import_settings.cpp b/editor/import/3d/scene_import_settings.cpp
index 325525be1b..08e52ddbe1 100644
--- a/editor/import/3d/scene_import_settings.cpp
+++ b/editor/import/3d/scene_import_settings.cpp
@@ -144,7 +144,7 @@ class SceneImportSettingsData : public Object {
List<StringName> anim_names;
library->get_animation_list(&anim_names);
if (anim_names.size() == 1) {
- (*settings)["rest_pose/selected_animation"] = String(anim_names[0]);
+ (*settings)["rest_pose/selected_animation"] = String(anim_names.front()->get());
}
for (StringName anim_name : anim_names) {
hint_string += "," + anim_name; // Include preceding, as a catch-all.
diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp
index 55fc52e1db..b0750ac0ff 100644
--- a/editor/inspector_dock.cpp
+++ b/editor/inspector_dock.cpp
@@ -213,7 +213,7 @@ void InspectorDock::_menu_option_confirm(int p_option, bool p_confirmed) {
current->get_method_list(&methods);
ERR_FAIL_INDEX(idx, methods.size());
- String name = methods[idx].name;
+ String name = methods.get(idx).name;
current->call(name);
}
@@ -232,8 +232,8 @@ void InspectorDock::_load_resource(const String &p_type) {
ResourceLoader::get_recognized_extensions_for_type(p_type, &extensions);
load_resource_dialog->clear_filters();
- for (int i = 0; i < extensions.size(); i++) {
- load_resource_dialog->add_filter("*." + extensions[i], extensions[i].to_upper());
+ for (const String &extension : extensions) {
+ load_resource_dialog->add_filter("*." + extension, extension.to_upper());
}
const Vector<String> textfile_ext = ((String)(EDITOR_GET("docks/filesystem/textfile_extensions"))).split(",", false);
diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp
index 3399f265fc..8de00dfcd1 100644
--- a/editor/plugins/animation_player_editor_plugin.cpp
+++ b/editor/plugins/animation_player_editor_plugin.cpp
@@ -1025,8 +1025,7 @@ void AnimationPlayerEditor::_update_name_dialog_library_dropdown() {
}
int current_lib_id = index_offset; // Don't default to [Global] if it doesn't exist yet.
- for (int i = 0; i < libraries.size(); i++) {
- StringName library_name = libraries[i];
+ for (const StringName &library_name : libraries) {
if (!EditorNode::get_singleton()->is_resource_read_only(player->get_animation_library(library_name))) {
library->add_item((library_name == StringName()) ? String(TTR("[Global]")) : String(library_name));
library->set_item_metadata(valid_library_count, String(library_name));
@@ -1043,8 +1042,7 @@ void AnimationPlayerEditor::_update_name_dialog_library_dropdown() {
// one which isn't a read-only library.
bool auto_assigning_non_global_library = false;
if (current_library_name == StringName() && valid_library_count > 0) {
- for (int i = 0; i < libraries.size(); i++) {
- StringName library_name = libraries[i];
+ for (const StringName &library_name : libraries) {
if (!EditorNode::get_singleton()->is_resource_read_only(player->get_animation_library(library_name))) {
current_library_name = library_name;
current_lib_id = 0;
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp
index 79a4269f01..e2ef7c08ac 100644
--- a/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/editor/plugins/canvas_item_editor_plugin.cpp
@@ -453,8 +453,8 @@ Point2 CanvasItemEditor::snap_point(Point2 p_target, unsigned int p_modes, unsig
Point2 offset = grid_offset;
if (snap_relative) {
List<CanvasItem *> selection = _get_edited_canvas_items();
- if (selection.size() == 1 && Object::cast_to<Node2D>(selection[0])) {
- offset = Object::cast_to<Node2D>(selection[0])->get_global_position();
+ if (selection.size() == 1 && Object::cast_to<Node2D>(selection.front()->get())) {
+ offset = Object::cast_to<Node2D>(selection.front()->get())->get_global_position();
} else if (selection.size() > 0) {
offset = _get_encompassing_rect_from_list(selection).position;
}
@@ -756,7 +756,7 @@ bool CanvasItemEditor::_select_click_on_item(CanvasItem *item, Point2 p_click_po
still_selected = false;
if (editor_selection->get_selected_node_list().size() == 1) {
- EditorNode::get_singleton()->push_item(editor_selection->get_selected_node_list()[0]);
+ EditorNode::get_singleton()->push_item(editor_selection->get_selected_node_list().front()->get());
}
} else {
// Add the item to the selection
@@ -1373,7 +1373,7 @@ bool CanvasItemEditor::_gui_input_pivot(const Ref<InputEvent> &p_event) {
drag_from = transform.affine_inverse().xform(event_pos);
Vector2 new_pos;
if (drag_selection.size() == 1) {
- new_pos = snap_point(drag_from, SNAP_NODE_SIDES | SNAP_NODE_CENTER | SNAP_NODE_ANCHORS | SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL, 0, drag_selection[0]);
+ new_pos = snap_point(drag_from, SNAP_NODE_SIDES | SNAP_NODE_CENTER | SNAP_NODE_ANCHORS | SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL, 0, drag_selection.front()->get());
} else {
new_pos = snap_point(drag_from, SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL, 0, nullptr, drag_selection);
}
@@ -1394,7 +1394,7 @@ bool CanvasItemEditor::_gui_input_pivot(const Ref<InputEvent> &p_event) {
_restore_canvas_item_state(drag_selection);
Vector2 new_pos;
if (drag_selection.size() == 1) {
- new_pos = snap_point(drag_to, SNAP_NODE_SIDES | SNAP_NODE_CENTER | SNAP_NODE_ANCHORS | SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL, 0, drag_selection[0]);
+ new_pos = snap_point(drag_to, SNAP_NODE_SIDES | SNAP_NODE_CENTER | SNAP_NODE_ANCHORS | SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL, 0, drag_selection.front()->get());
} else {
new_pos = snap_point(drag_to, SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL);
}
@@ -1412,9 +1412,9 @@ bool CanvasItemEditor::_gui_input_pivot(const Ref<InputEvent> &p_event) {
drag_selection,
vformat(
TTR("Set CanvasItem \"%s\" Pivot Offset to (%d, %d)"),
- drag_selection[0]->get_name(),
- drag_selection[0]->_edit_get_pivot().x,
- drag_selection[0]->_edit_get_pivot().y));
+ drag_selection.front()->get()->get_name(),
+ drag_selection.front()->get()->_edit_get_pivot().x,
+ drag_selection.front()->get()->_edit_get_pivot().y));
_reset_drag();
return true;
}
@@ -1465,7 +1465,7 @@ bool CanvasItemEditor::_gui_input_rotate(const Ref<InputEvent> &p_event) {
if (drag_selection.size() > 0) {
drag_type = DRAG_ROTATE;
drag_from = transform.affine_inverse().xform(b->get_position());
- CanvasItem *ci = drag_selection[0];
+ CanvasItem *ci = drag_selection.front()->get();
if (!Math::is_inf(temp_pivot.x) || !Math::is_inf(temp_pivot.y)) {
drag_rotation_center = temp_pivot;
} else if (ci->_edit_use_pivot()) {
@@ -1514,8 +1514,8 @@ bool CanvasItemEditor::_gui_input_rotate(const Ref<InputEvent> &p_event) {
_commit_canvas_item_state(
drag_selection,
vformat(TTR("Rotate CanvasItem \"%s\" to %d degrees"),
- drag_selection[0]->get_name(),
- Math::rad_to_deg(drag_selection[0]->_edit_get_rotation())),
+ drag_selection.front()->get()->get_name(),
+ Math::rad_to_deg(drag_selection.front()->get()->_edit_get_rotation())),
true);
}
@@ -1545,7 +1545,7 @@ bool CanvasItemEditor::_gui_input_open_scene_on_double_click(const Ref<InputEven
if (b.is_valid() && b->get_button_index() == MouseButton::LEFT && b->is_pressed() && b->is_double_click() && tool == TOOL_SELECT) {
List<CanvasItem *> selection = _get_edited_canvas_items();
if (selection.size() == 1) {
- CanvasItem *ci = selection[0];
+ CanvasItem *ci = selection.front()->get();
if (!ci->get_scene_file_path().is_empty() && ci != EditorNode::get_singleton()->get_edited_scene()) {
EditorNode::get_singleton()->open_request(ci->get_scene_file_path());
return true;
@@ -1564,7 +1564,7 @@ bool CanvasItemEditor::_gui_input_anchors(const Ref<InputEvent> &p_event) {
if (b.is_valid() && b->get_button_index() == MouseButton::LEFT && b->is_pressed() && tool == TOOL_SELECT) {
List<CanvasItem *> selection = _get_edited_canvas_items();
if (selection.size() == 1) {
- Control *control = Object::cast_to<Control>(selection[0]);
+ Control *control = Object::cast_to<Control>(selection.front()->get());
if (control && _is_node_movable(control)) {
Vector2 anchor_pos[4];
anchor_pos[0] = Vector2(control->get_anchor(SIDE_LEFT), control->get_anchor(SIDE_TOP));
@@ -1613,7 +1613,7 @@ bool CanvasItemEditor::_gui_input_anchors(const Ref<InputEvent> &p_event) {
// Drag the anchor
if (m.is_valid()) {
_restore_canvas_item_state(drag_selection);
- Control *control = Object::cast_to<Control>(drag_selection[0]);
+ Control *control = Object::cast_to<Control>(drag_selection.front()->get());
drag_to = transform.affine_inverse().xform(m->get_position());
@@ -1684,7 +1684,7 @@ bool CanvasItemEditor::_gui_input_anchors(const Ref<InputEvent> &p_event) {
if (drag_selection.size() >= 1 && b.is_valid() && b->get_button_index() == MouseButton::LEFT && !b->is_pressed()) {
_commit_canvas_item_state(
drag_selection,
- vformat(TTR("Move CanvasItem \"%s\" Anchor"), drag_selection[0]->get_name()));
+ vformat(TTR("Move CanvasItem \"%s\" Anchor"), drag_selection.front()->get()->get_name()));
_reset_drag();
return true;
}
@@ -1709,7 +1709,7 @@ bool CanvasItemEditor::_gui_input_resize(const Ref<InputEvent> &p_event) {
if (b.is_valid() && b->get_button_index() == MouseButton::LEFT && b->is_pressed() && tool == TOOL_SELECT) {
List<CanvasItem *> selection = _get_edited_canvas_items();
if (selection.size() == 1) {
- CanvasItem *ci = selection[0];
+ CanvasItem *ci = selection.front()->get();
if (ci->_edit_use_rect() && _is_node_movable(ci)) {
Rect2 rect = ci->_edit_get_rect();
Transform2D xform = transform * ci->get_global_transform_with_canvas();
@@ -1770,7 +1770,7 @@ bool CanvasItemEditor::_gui_input_resize(const Ref<InputEvent> &p_event) {
drag_type == DRAG_TOP_LEFT || drag_type == DRAG_TOP_RIGHT || drag_type == DRAG_BOTTOM_LEFT || drag_type == DRAG_BOTTOM_RIGHT) {
// Resize the node
if (m.is_valid()) {
- CanvasItem *ci = drag_selection[0];
+ CanvasItem *ci = drag_selection.front()->get();
CanvasItemEditorSelectedItem *se = editor_selection->get_node_editor_data<CanvasItemEditorSelectedItem>(ci);
//Reset state
ci->_edit_set_state(se->undo_state);
@@ -1855,7 +1855,7 @@ bool CanvasItemEditor::_gui_input_resize(const Ref<InputEvent> &p_event) {
// Confirm resize
if (drag_selection.size() >= 1 && b.is_valid() && b->get_button_index() == MouseButton::LEFT && !b->is_pressed()) {
- const Node2D *node2d = Object::cast_to<Node2D>(drag_selection[0]);
+ const Node2D *node2d = Object::cast_to<Node2D>(drag_selection.front()->get());
if (node2d) {
// Extends from Node2D.
// Node2D doesn't have an actual stored rect size, unlike Controls.
@@ -1863,9 +1863,9 @@ bool CanvasItemEditor::_gui_input_resize(const Ref<InputEvent> &p_event) {
drag_selection,
vformat(
TTR("Scale Node2D \"%s\" to (%s, %s)"),
- drag_selection[0]->get_name(),
- Math::snapped(drag_selection[0]->_edit_get_scale().x, 0.01),
- Math::snapped(drag_selection[0]->_edit_get_scale().y, 0.01)),
+ drag_selection.front()->get()->get_name(),
+ Math::snapped(drag_selection.front()->get()->_edit_get_scale().x, 0.01),
+ Math::snapped(drag_selection.front()->get()->_edit_get_scale().y, 0.01)),
true);
} else {
// Extends from Control.
@@ -1873,9 +1873,9 @@ bool CanvasItemEditor::_gui_input_resize(const Ref<InputEvent> &p_event) {
drag_selection,
vformat(
TTR("Resize Control \"%s\" to (%d, %d)"),
- drag_selection[0]->get_name(),
- drag_selection[0]->_edit_get_rect().size.x,
- drag_selection[0]->_edit_get_rect().size.y),
+ drag_selection.front()->get()->get_name(),
+ drag_selection.front()->get()->_edit_get_rect().size.x,
+ drag_selection.front()->get()->_edit_get_rect().size.y),
true);
}
@@ -1912,7 +1912,7 @@ bool CanvasItemEditor::_gui_input_scale(const Ref<InputEvent> &p_event) {
if (b.is_valid() && b->get_button_index() == MouseButton::LEFT && b->is_pressed() && ((b->is_alt_pressed() && b->is_command_or_control_pressed()) || tool == TOOL_SCALE)) {
List<CanvasItem *> selection = _get_edited_canvas_items();
if (selection.size() == 1) {
- CanvasItem *ci = selection[0];
+ CanvasItem *ci = selection.front()->get();
if (_is_node_movable(ci)) {
Transform2D xform = transform * ci->get_global_transform_with_canvas();
@@ -1947,7 +1947,7 @@ bool CanvasItemEditor::_gui_input_scale(const Ref<InputEvent> &p_event) {
// Resize the node
if (m.is_valid()) {
_restore_canvas_item_state(drag_selection);
- CanvasItem *ci = drag_selection[0];
+ CanvasItem *ci = drag_selection.front()->get();
drag_to = transform.affine_inverse().xform(m->get_position());
@@ -2015,9 +2015,9 @@ bool CanvasItemEditor::_gui_input_scale(const Ref<InputEvent> &p_event) {
_commit_canvas_item_state(
drag_selection,
vformat(TTR("Scale CanvasItem \"%s\" to (%s, %s)"),
- drag_selection[0]->get_name(),
- Math::snapped(drag_selection[0]->_edit_get_scale().x, 0.01),
- Math::snapped(drag_selection[0]->_edit_get_scale().y, 0.01)),
+ drag_selection.front()->get()->get_name(),
+ Math::snapped(drag_selection.front()->get()->_edit_get_scale().x, 0.01),
+ Math::snapped(drag_selection.front()->get()->_edit_get_scale().y, 0.01)),
true);
}
if (key_auto_insert_button->is_pressed()) {
@@ -2053,15 +2053,15 @@ bool CanvasItemEditor::_gui_input_move(const Ref<InputEvent> &p_event) {
if (selection.size() > 0) {
drag_selection.clear();
- for (int i = 0; i < selection.size(); i++) {
- if (_is_node_movable(selection[i], true)) {
- drag_selection.push_back(selection[i]);
+ for (CanvasItem *E : selection) {
+ if (_is_node_movable(E, true)) {
+ drag_selection.push_back(E);
}
}
drag_type = DRAG_MOVE;
- CanvasItem *ci = selection[0];
+ CanvasItem *ci = selection.front()->get();
Transform2D parent_xform = ci->get_global_transform_with_canvas() * ci->get_transform().affine_inverse();
Transform2D unscaled_transform = (transform * parent_xform * ci->_edit_get_transform()).orthonormalized();
Transform2D simple_xform = viewport->get_transform() * unscaled_transform;
@@ -2095,8 +2095,8 @@ bool CanvasItemEditor::_gui_input_move(const Ref<InputEvent> &p_event) {
drag_to = transform.affine_inverse().xform(m->get_position());
Point2 previous_pos;
if (drag_selection.size() == 1) {
- Transform2D parent_xform = drag_selection[0]->get_global_transform_with_canvas() * drag_selection[0]->get_transform().affine_inverse();
- previous_pos = parent_xform.xform(drag_selection[0]->_edit_get_position());
+ Transform2D parent_xform = drag_selection.front()->get()->get_global_transform_with_canvas() * drag_selection.front()->get()->get_transform().affine_inverse();
+ previous_pos = parent_xform.xform(drag_selection.front()->get()->_edit_get_position());
} else {
previous_pos = _get_encompassing_rect_from_list(drag_selection).position;
}
@@ -2147,9 +2147,9 @@ bool CanvasItemEditor::_gui_input_move(const Ref<InputEvent> &p_event) {
drag_selection,
vformat(
TTR("Move CanvasItem \"%s\" to (%d, %d)"),
- drag_selection[0]->get_name(),
- drag_selection[0]->_edit_get_position().x,
- drag_selection[0]->_edit_get_position().y),
+ drag_selection.front()->get()->get_name(),
+ drag_selection.front()->get()->_edit_get_position().x,
+ drag_selection.front()->get()->_edit_get_position().y),
true);
}
}
@@ -2225,15 +2225,15 @@ bool CanvasItemEditor::_gui_input_move(const Ref<InputEvent> &p_event) {
Point2 previous_pos;
if (drag_selection.size() == 1) {
- Transform2D xform = drag_selection[0]->get_global_transform_with_canvas() * drag_selection[0]->get_transform().affine_inverse();
- previous_pos = xform.xform(drag_selection[0]->_edit_get_position());
+ Transform2D xform = drag_selection.front()->get()->get_global_transform_with_canvas() * drag_selection.front()->get()->get_transform().affine_inverse();
+ previous_pos = xform.xform(drag_selection.front()->get()->_edit_get_position());
} else {
previous_pos = _get_encompassing_rect_from_list(drag_selection).position;
}
Point2 new_pos;
if (drag_selection.size() == 1) {
- Node2D *node_2d = Object::cast_to<Node2D>(drag_selection[0]);
+ Node2D *node_2d = Object::cast_to<Node2D>(drag_selection.front()->get());
if (node_2d && move_local_base_rotated) {
Transform2D m2;
m2.rotate(node_2d->get_rotation());
@@ -2271,9 +2271,9 @@ bool CanvasItemEditor::_gui_input_move(const Ref<InputEvent> &p_event) {
_commit_canvas_item_state(
drag_selection,
vformat(TTR("Move CanvasItem \"%s\" to (%d, %d)"),
- drag_selection[0]->get_name(),
- drag_selection[0]->_edit_get_position().x,
- drag_selection[0]->_edit_get_position().y),
+ drag_selection.front()->get()->get_name(),
+ drag_selection.front()->get()->_edit_get_position().x,
+ drag_selection.front()->get()->_edit_get_position().y),
true);
}
_reset_drag();
@@ -2440,9 +2440,9 @@ bool CanvasItemEditor::_gui_input_select(const Ref<InputEvent> &p_event) {
List<CanvasItem *> selection2 = _get_edited_canvas_items();
drag_selection.clear();
- for (int i = 0; i < selection2.size(); i++) {
- if (_is_node_movable(selection2[i], true)) {
- drag_selection.push_back(selection2[i]);
+ for (CanvasItem *E : selection2) {
+ if (_is_node_movable(E, true)) {
+ drag_selection.push_back(E);
}
}
@@ -2474,7 +2474,7 @@ bool CanvasItemEditor::_gui_input_select(const Ref<InputEvent> &p_event) {
_find_canvas_items_in_rect(Rect2(bsfrom, bsto - bsfrom), scene, &selitems);
if (selitems.size() == 1 && editor_selection->get_selected_node_list().is_empty()) {
- EditorNode::get_singleton()->push_item(selitems[0]);
+ EditorNode::get_singleton()->push_item(selitems.front()->get());
}
for (CanvasItem *E : selitems) {
editor_selection->add_node(E);
@@ -2722,7 +2722,7 @@ Control::CursorShape CanvasItemEditor::get_cursor_shape(const Point2 &p_pos) con
List<CanvasItem *> selection = _get_edited_canvas_items();
if (selection.size() == 1) {
- const double angle = Math::fposmod((double)selection[0]->get_global_transform_with_canvas().get_rotation(), Math_PI);
+ const double angle = Math::fposmod((double)selection.front()->get()->get_global_transform_with_canvas().get_rotation(), Math_PI);
if (angle > Math_PI * 7.0 / 8.0) {
rotation_array_index = 0;
} else if (angle > Math_PI * 5.0 / 8.0) {
@@ -6057,8 +6057,8 @@ void CanvasItemEditorViewport::_show_resource_type_selector() {
List<BaseButton *> btn_list;
button_group->get_buttons(&btn_list);
- for (int i = 0; i < btn_list.size(); i++) {
- CheckBox *check = Object::cast_to<CheckBox>(btn_list[i]);
+ for (BaseButton *btn : btn_list) {
+ CheckBox *check = Object::cast_to<CheckBox>(btn);
check->set_pressed(check->get_text() == default_texture_node_type);
}
selector->set_title(vformat(TTR("Add %s"), default_texture_node_type));
@@ -6091,7 +6091,7 @@ void CanvasItemEditorViewport::drop_data(const Point2 &p_point, const Variant &p
List<Node *> selected_nodes = EditorNode::get_singleton()->get_editor_selection()->get_selected_node_list();
Node *root_node = EditorNode::get_singleton()->get_edited_scene();
if (selected_nodes.size() > 0) {
- Node *selected_node = selected_nodes[0];
+ Node *selected_node = selected_nodes.front()->get();
target_node = selected_node;
if (is_alt) {
target_node = root_node;
@@ -6119,8 +6119,8 @@ void CanvasItemEditorViewport::_update_theme() {
List<BaseButton *> btn_list;
button_group->get_buttons(&btn_list);
- for (int i = 0; i < btn_list.size(); i++) {
- CheckBox *check = Object::cast_to<CheckBox>(btn_list[i]);
+ for (BaseButton *btn : btn_list) {
+ CheckBox *check = Object::cast_to<CheckBox>(btn);
check->set_icon(get_editor_theme_icon(check->get_text()));
}
diff --git a/editor/plugins/editor_debugger_plugin.cpp b/editor/plugins/editor_debugger_plugin.cpp
index af9ff5056a..1adbce7941 100644
--- a/editor/plugins/editor_debugger_plugin.cpp
+++ b/editor/plugins/editor_debugger_plugin.cpp
@@ -140,8 +140,8 @@ EditorDebuggerPlugin::~EditorDebuggerPlugin() {
}
void EditorDebuggerPlugin::clear() {
- for (int i = 0; i < sessions.size(); i++) {
- sessions[i]->detach_debugger();
+ for (Ref<EditorDebuggerSession> &session : sessions) {
+ session->detach_debugger();
}
sessions.clear();
}
@@ -157,13 +157,13 @@ void EditorDebuggerPlugin::setup_session(int p_idx) {
Ref<EditorDebuggerSession> EditorDebuggerPlugin::get_session(int p_idx) {
ERR_FAIL_INDEX_V(p_idx, sessions.size(), nullptr);
- return sessions[p_idx];
+ return sessions.get(p_idx);
}
Array EditorDebuggerPlugin::get_sessions() {
Array ret;
- for (int i = 0; i < sessions.size(); i++) {
- ret.push_back(sessions[i]);
+ for (const Ref<EditorDebuggerSession> &session : sessions) {
+ ret.push_back(session);
}
return ret;
}
diff --git a/editor/plugins/gizmos/joint_3d_gizmo_plugin.cpp b/editor/plugins/gizmos/joint_3d_gizmo_plugin.cpp
index c15ddef933..ae24b4250e 100644
--- a/editor/plugins/gizmos/joint_3d_gizmo_plugin.cpp
+++ b/editor/plugins/gizmos/joint_3d_gizmo_plugin.cpp
@@ -295,7 +295,7 @@ void Joint3DGizmoPlugin::incremental_update_gizmos() {
if (!current_gizmos.is_empty()) {
update_idx++;
update_idx = update_idx % current_gizmos.size();
- redraw(current_gizmos[update_idx]);
+ redraw(current_gizmos.get(update_idx));
}
}
diff --git a/editor/plugins/mesh_library_editor_plugin.cpp b/editor/plugins/mesh_library_editor_plugin.cpp
index 8bfd3d0957..1a5727a1e8 100644
--- a/editor/plugins/mesh_library_editor_plugin.cpp
+++ b/editor/plugins/mesh_library_editor_plugin.cpp
@@ -253,8 +253,8 @@ MeshLibraryEditor::MeshLibraryEditor() {
ResourceLoader::get_recognized_extensions_for_type("PackedScene", &extensions);
file->clear_filters();
file->set_title(TTR("Import Scene"));
- for (int i = 0; i < extensions.size(); i++) {
- file->add_filter("*." + extensions[i], extensions[i].to_upper());
+ for (const String &extension : extensions) {
+ file->add_filter("*." + extension, extension.to_upper());
}
add_child(file);
file->connect("file_selected", callable_mp(this, &MeshLibraryEditor::_import_scene_cbk));
diff --git a/editor/plugins/node_3d_editor_gizmos.cpp b/editor/plugins/node_3d_editor_gizmos.cpp
index 7e98950f32..3f86d30368 100644
--- a/editor/plugins/node_3d_editor_gizmos.cpp
+++ b/editor/plugins/node_3d_editor_gizmos.cpp
@@ -1162,8 +1162,8 @@ void EditorNode3DGizmoPlugin::commit_subgizmos(const EditorNode3DGizmo *p_gizmo,
void EditorNode3DGizmoPlugin::set_state(int p_state) {
current_state = p_state;
- for (int i = 0; i < current_gizmos.size(); ++i) {
- current_gizmos[i]->set_hidden(current_state == HIDDEN);
+ for (EditorNode3DGizmo *current : current_gizmos) {
+ current->set_hidden(current_state == HIDDEN);
}
}
@@ -1180,9 +1180,9 @@ EditorNode3DGizmoPlugin::EditorNode3DGizmoPlugin() {
}
EditorNode3DGizmoPlugin::~EditorNode3DGizmoPlugin() {
- for (int i = 0; i < current_gizmos.size(); ++i) {
- current_gizmos[i]->set_plugin(nullptr);
- current_gizmos[i]->get_node_3d()->remove_gizmo(current_gizmos[i]);
+ for (EditorNode3DGizmo *current : current_gizmos) {
+ current->set_plugin(nullptr);
+ current->get_node_3d()->remove_gizmo(current);
}
if (Node3DEditor::get_singleton()) {
Node3DEditor::get_singleton()->update_all_gizmos();
diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp
index 4a418e62ca..af38f51a25 100644
--- a/editor/plugins/node_3d_editor_plugin.cpp
+++ b/editor/plugins/node_3d_editor_plugin.cpp
@@ -764,7 +764,7 @@ void Node3DEditorViewport::_select_clicked(bool p_allow_locked) {
}
if (editor_selection->get_selected_node_list().size() == 1) {
- EditorNode::get_singleton()->edit_node(editor_selection->get_selected_node_list()[0]);
+ EditorNode::get_singleton()->edit_node(editor_selection->get_selected_node_list().front()->get());
}
}
}
@@ -1084,7 +1084,7 @@ void Node3DEditorViewport::_select_region() {
}
if (editor_selection->get_selected_node_list().size() == 1) {
- EditorNode::get_singleton()->edit_node(editor_selection->get_selected_node_list()[0]);
+ EditorNode::get_singleton()->edit_node(editor_selection->get_selected_node_list().front()->get());
}
}
@@ -4592,7 +4592,7 @@ void Node3DEditorViewport::drop_data_fw(const Point2 &p_point, const Variant &p_
List<Node *> selected_nodes = EditorNode::get_singleton()->get_editor_selection()->get_selected_node_list();
Node *root_node = EditorNode::get_singleton()->get_edited_scene();
if (selected_nodes.size() > 0) {
- Node *selected_node = selected_nodes[0];
+ Node *selected_node = selected_nodes.front()->get();
target_node = selected_node;
if (is_alt) {
target_node = root_node;
@@ -6069,9 +6069,9 @@ void Node3DEditor::set_state(const Dictionary &p_state) {
continue;
}
int state = EditorNode3DGizmoPlugin::VISIBLE;
- for (int i = 0; i < keys.size(); i++) {
- if (gizmo_plugins_by_name.write[j]->get_gizmo_name() == String(keys[i])) {
- state = gizmos_status[keys[i]];
+ for (const Variant &key : keys) {
+ if (gizmo_plugins_by_name.write[j]->get_gizmo_name() == String(key)) {
+ state = gizmos_status[key];
break;
}
}
diff --git a/editor/plugins/resource_preloader_editor_plugin.cpp b/editor/plugins/resource_preloader_editor_plugin.cpp
index 2e0a9c7272..c95195ae2a 100644
--- a/editor/plugins/resource_preloader_editor_plugin.cpp
+++ b/editor/plugins/resource_preloader_editor_plugin.cpp
@@ -90,8 +90,8 @@ void ResourcePreloaderEditor::_load_pressed() {
file->clear_filters();
List<String> extensions;
ResourceLoader::get_recognized_extensions_for_type("", &extensions);
- for (int i = 0; i < extensions.size(); i++) {
- file->add_filter("*." + extensions[i]);
+ for (const String &extension : extensions) {
+ file->add_filter("*." + extension);
}
file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILES);
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index c48af90622..e901f38944 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -1275,8 +1275,8 @@ void ScriptEditor::_menu_option(int p_option) {
List<String> extensions;
ResourceLoader::get_recognized_extensions_for_type("Script", &extensions);
file_dialog->clear_filters();
- for (int i = 0; i < extensions.size(); i++) {
- file_dialog->add_filter("*." + extensions[i], extensions[i].to_upper());
+ for (const String &extension : extensions) {
+ file_dialog->add_filter("*." + extension, extension.to_upper());
}
for (const String &E : textfile_extensions) {
diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp
index 561edcf8bf..09073262d7 100644
--- a/editor/plugins/script_text_editor.cpp
+++ b/editor/plugins/script_text_editor.cpp
@@ -531,9 +531,9 @@ void ScriptTextEditor::_validate_script() {
if (errors.size() > 0) {
// TRANSLATORS: Script error pointing to a line and column number.
- String error_text = vformat(TTR("Error at (%d, %d):"), errors[0].line, errors[0].column) + " " + errors[0].message;
+ String error_text = vformat(TTR("Error at (%d, %d):"), errors.front()->get().line, errors.front()->get().column) + " " + errors.front()->get().message;
code_editor->set_error(error_text);
- code_editor->set_error_pos(errors[0].line - 1, errors[0].column - 1);
+ code_editor->set_error_pos(errors.front()->get().line - 1, errors.front()->get().column - 1);
}
script_is_valid = false;
} else {
@@ -1217,8 +1217,8 @@ void ScriptTextEditor::_update_connected_methods() {
while (base_class) {
List<MethodInfo> methods;
ClassDB::get_method_list(base_class, &methods, true);
- for (int j = 0; j < methods.size(); j++) {
- if (methods[j].name == name) {
+ for (const MethodInfo &mi : methods) {
+ if (mi.name == name) {
found_base_class = "builtin:" + base_class;
break;
}
diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp
index 5e67cbc6ce..a28952d8e7 100644
--- a/editor/plugins/sprite_frames_editor_plugin.cpp
+++ b/editor/plugins/sprite_frames_editor_plugin.cpp
@@ -60,8 +60,8 @@ void SpriteFramesEditor::_open_sprite_sheet() {
file_split_sheet->clear_filters();
List<String> extensions;
ResourceLoader::get_recognized_extensions_for_type("Texture2D", &extensions);
- for (int i = 0; i < extensions.size(); i++) {
- file_split_sheet->add_filter("*." + extensions[i]);
+ for (const String &extension : extensions) {
+ file_split_sheet->add_filter("*." + extension);
}
file_split_sheet->popup_file_dialog();
@@ -668,8 +668,8 @@ void SpriteFramesEditor::_load_pressed() {
file->clear_filters();
List<String> extensions;
ResourceLoader::get_recognized_extensions_for_type("Texture2D", &extensions);
- for (int i = 0; i < extensions.size(); i++) {
- file->add_filter("*." + extensions[i]);
+ for (const String &extension : extensions) {
+ file->add_filter("*." + extension);
}
file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILES);
@@ -1117,10 +1117,10 @@ void SpriteFramesEditor::_animation_remove_confirmed() {
frames->get_animation_list(&anim_names);
anim_names.sort_custom<StringName::AlphCompare>();
if (anim_names.size() >= 2) {
- if (edited_anim == anim_names[0]) {
- new_edited = anim_names[1];
+ if (edited_anim == anim_names.get(0)) {
+ new_edited = anim_names.get(1);
} else {
- new_edited = anim_names[0];
+ new_edited = anim_names.get(0);
}
} else {
new_edited = StringName();
@@ -1648,7 +1648,7 @@ void SpriteFramesEditor::_fetch_sprite_node() {
Node *selected = nullptr;
EditorSelection *editor_selection = EditorNode::get_singleton()->get_editor_selection();
if (editor_selection->get_selected_node_list().size() == 1) {
- selected = editor_selection->get_selected_node_list()[0];
+ selected = editor_selection->get_selected_node_list().front()->get();
}
bool show_node_edit = false;
diff --git a/editor/plugins/text_shader_editor.cpp b/editor/plugins/text_shader_editor.cpp
index a1d1df0f83..42719e992e 100644
--- a/editor/plugins/text_shader_editor.cpp
+++ b/editor/plugins/text_shader_editor.cpp
@@ -583,9 +583,7 @@ void ShaderTextEditor::_update_warning_panel() {
int warning_count = 0;
warnings_panel->push_table(2);
- for (int i = 0; i < warnings.size(); i++) {
- ShaderWarning &w = warnings[i];
-
+ for (const ShaderWarning &w : warnings) {
if (warning_count == 0) {
if (saved_treat_warning_as_errors) {
String error_text = "error(" + itos(w.get_line()) + "): " + w.get_message() + " " + TTR("Warnings should be fixed to prevent errors.");
diff --git a/editor/plugins/version_control_editor_plugin.cpp b/editor/plugins/version_control_editor_plugin.cpp
index 9173838471..59e5a59583 100644
--- a/editor/plugins/version_control_editor_plugin.cpp
+++ b/editor/plugins/version_control_editor_plugin.cpp
@@ -75,8 +75,8 @@ void VersionControlEditorPlugin::_notification(int p_what) {
void VersionControlEditorPlugin::_populate_available_vcs_names() {
set_up_choice->clear();
- for (int i = 0; i < available_plugins.size(); i++) {
- set_up_choice->add_item(available_plugins[i]);
+ for (const StringName &available_plugin : available_plugins) {
+ set_up_choice->add_item(available_plugin);
}
}
@@ -193,10 +193,11 @@ void VersionControlEditorPlugin::_refresh_branch_list() {
String current_branch = EditorVCSInterface::get_singleton()->get_current_branch_name();
- for (int i = 0; i < branch_list.size(); i++) {
- branch_select->add_icon_item(EditorNode::get_singleton()->get_editor_theme()->get_icon(SNAME("VcsBranches"), EditorStringName(EditorIcons)), branch_list[i], i);
+ int i = 0;
+ for (List<String>::ConstIterator itr = branch_list.begin(); itr != branch_list.end(); ++itr, ++i) {
+ branch_select->add_icon_item(EditorNode::get_singleton()->get_editor_theme()->get_icon(SNAME("VcsBranches"), EditorStringName(EditorIcons)), *itr, i);
- if (branch_list[i] == current_branch) {
+ if (*itr == current_branch) {
branch_select->select(i);
}
}
@@ -253,11 +254,12 @@ void VersionControlEditorPlugin::_refresh_remote_list() {
remote_select->set_disabled(remotes.is_empty());
- for (int i = 0; i < remotes.size(); i++) {
- remote_select->add_icon_item(EditorNode::get_singleton()->get_editor_theme()->get_icon(SNAME("ArrowUp"), EditorStringName(EditorIcons)), remotes[i], i);
- remote_select->set_item_metadata(i, remotes[i]);
+ int i = 0;
+ for (List<String>::ConstIterator itr = remotes.begin(); itr != remotes.end(); ++itr, ++i) {
+ remote_select->add_icon_item(EditorNode::get_singleton()->get_editor_theme()->get_icon(SNAME("ArrowUp"), EditorStringName(EditorIcons)), *itr, i);
+ remote_select->set_item_metadata(i, *itr);
- if (remotes[i] == current_remote) {
+ if (*itr == current_remote) {
remote_select->select(i);
}
}
@@ -589,9 +591,7 @@ void VersionControlEditorPlugin::_display_diff(int p_idx) {
diff->pop();
}
- for (int i = 0; i < diff_content.size(); i++) {
- EditorVCSInterface::DiffFile diff_file = diff_content[i];
-
+ for (const EditorVCSInterface::DiffFile &diff_file : diff_content) {
diff->push_font(EditorNode::get_singleton()->get_editor_theme()->get_font(SNAME("doc_bold"), EditorStringName(EditorFonts)));
diff->push_color(EditorNode::get_singleton()->get_editor_theme()->get_color(SNAME("accent_color"), EditorStringName(Editor)));
diff->add_text(TTR("File:") + " " + diff_file.new_file);
@@ -599,9 +599,7 @@ void VersionControlEditorPlugin::_display_diff(int p_idx) {
diff->pop();
diff->push_font(EditorNode::get_singleton()->get_editor_theme()->get_font(SNAME("status_source"), EditorStringName(EditorFonts)));
- for (int j = 0; j < diff_file.diff_hunks.size(); j++) {
- EditorVCSInterface::DiffHunk hunk = diff_file.diff_hunks[j];
-
+ for (EditorVCSInterface::DiffHunk hunk : diff_file.diff_hunks) {
String old_start = String::num_int64(hunk.old_start);
String new_start = String::num_int64(hunk.new_start);
String old_lines = String::num_int64(hunk.old_lines);
@@ -628,10 +626,9 @@ void VersionControlEditorPlugin::_display_diff(int p_idx) {
}
void VersionControlEditorPlugin::_display_diff_split_view(List<EditorVCSInterface::DiffLine> &p_diff_content) {
- List<EditorVCSInterface::DiffLine> parsed_diff;
+ LocalVector<EditorVCSInterface::DiffLine> parsed_diff;
- for (int i = 0; i < p_diff_content.size(); i++) {
- EditorVCSInterface::DiffLine diff_line = p_diff_content[i];
+ for (EditorVCSInterface::DiffLine diff_line : p_diff_content) {
String line = diff_line.content.strip_edges(false, true);
if (diff_line.new_line_no >= 0 && diff_line.old_line_no >= 0) {
@@ -643,12 +640,12 @@ void VersionControlEditorPlugin::_display_diff_split_view(List<EditorVCSInterfac
diff_line.old_text = line;
parsed_diff.push_back(diff_line);
} else if (diff_line.old_line_no == -1) {
- int j = parsed_diff.size() - 1;
+ int32_t j = parsed_diff.size() - 1;
while (j >= 0 && parsed_diff[j].new_line_no == -1) {
j--;
}
- if (j == parsed_diff.size() - 1) {
+ if (j == (int32_t)parsed_diff.size() - 1) {
// no lines are modified
diff_line.new_text = line;
diff_line.old_text = "";
@@ -677,7 +674,7 @@ void VersionControlEditorPlugin::_display_diff_split_view(List<EditorVCSInterfac
diff->set_table_column_expand(2, true);
diff->set_table_column_expand(5, true);
- for (int i = 0; i < parsed_diff.size(); i++) {
+ for (uint32_t i = 0; i < parsed_diff.size(); i++) {
EditorVCSInterface::DiffLine diff_line = parsed_diff[i];
bool has_change = diff_line.status != " ";
@@ -757,8 +754,7 @@ void VersionControlEditorPlugin::_display_diff_unified_view(List<EditorVCSInterf
[cell]status[/cell]
[cell]code[/cell]
*/
- for (int i = 0; i < p_diff_content.size(); i++) {
- EditorVCSInterface::DiffLine diff_line = p_diff_content[i];
+ for (const EditorVCSInterface::DiffLine &diff_line : p_diff_content) {
String line = diff_line.content.strip_edges(false, true);
Color color;
diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp
index 9e706ce623..e3f7aa5e6d 100644
--- a/editor/plugins/visual_shader_editor_plugin.cpp
+++ b/editor/plugins/visual_shader_editor_plugin.cpp
@@ -748,8 +748,9 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id, bool
bool first = true;
VBoxContainer *vbox = nullptr;
- for (int i = 0; i < custom_node->dp_props.size(); i++) {
- const VisualShaderNodeCustom::DropDownListProperty &dp = custom_node->dp_props[i];
+ int i = 0;
+ for (List<VisualShaderNodeCustom::DropDownListProperty>::ConstIterator itr = custom_node->dp_props.begin(); itr != custom_node->dp_props.end(); ++itr, ++i) {
+ const VisualShaderNodeCustom::DropDownListProperty &dp = *itr;
if (first) {
first = false;
@@ -1828,9 +1829,9 @@ void VisualShaderEditor::_update_nodes() {
List<StringName> class_list;
ScriptServer::get_global_class_list(&class_list);
- for (int i = 0; i < class_list.size(); i++) {
- if (ScriptServer::get_global_class_native_base(class_list[i]) == "VisualShaderNodeCustom") {
- String script_path = ScriptServer::get_global_class_path(class_list[i]);
+ for (const StringName &E : class_list) {
+ if (ScriptServer::get_global_class_native_base(E) == "VisualShaderNodeCustom") {
+ String script_path = ScriptServer::get_global_class_path(E);
Ref<Resource> res = ResourceLoader::load(script_path);
ERR_CONTINUE(res.is_null());
ERR_CONTINUE(!res->is_class("Script"));
@@ -1858,16 +1859,16 @@ void VisualShaderEditor::_update_nodes() {
List<StringName> class_list;
ClassDB::get_class_list(&class_list);
- for (int i = 0; i < class_list.size(); i++) {
- if (ClassDB::get_parent_class(class_list[i]) == "VisualShaderNodeCustom") {
- Object *instance = ClassDB::instantiate(class_list[i]);
+ for (const StringName &E : class_list) {
+ if (ClassDB::get_parent_class(E) == "VisualShaderNodeCustom") {
+ Object *instance = ClassDB::instantiate(E);
Ref<VisualShaderNodeCustom> ref = Object::cast_to<VisualShaderNodeCustom>(instance);
ERR_CONTINUE(ref.is_null());
if (!ref->is_available(visual_shader->get_mode(), visual_shader->get_shader_type())) {
continue;
}
Dictionary dict = get_custom_node_data(ref);
- dict["type"] = class_list[i];
+ dict["type"] = E;
dict["script"] = Ref<Script>();
String key;
@@ -3982,7 +3983,7 @@ void VisualShaderEditor::_handle_node_drop_on_connection() {
return;
}
- int selected_node_id = drag_buffer[0].node;
+ int selected_node_id = drag_buffer.front()->get().node;
VisualShader::Type shader_type = get_current_shader_type();
Ref<VisualShaderNode> selected_vsnode = visual_shader->get_node(shader_type, selected_node_id);
@@ -7540,8 +7541,9 @@ void VisualShaderNodePortPreview::_shader_changed() {
preview_shader.instantiate();
preview_shader->set_code(shader_code);
for (int i = 0; i < default_textures.size(); i++) {
- for (int j = 0; j < default_textures[i].params.size(); j++) {
- preview_shader->set_default_texture_parameter(default_textures[i].name, default_textures[i].params[j], j);
+ int j = 0;
+ for (List<Ref<Texture2D>>::ConstIterator itr = default_textures[i].params.begin(); itr != default_textures[i].params.end(); ++itr, ++j) {
+ preview_shader->set_default_texture_parameter(default_textures[i].name, *itr, j);
}
}
diff --git a/editor/pot_generator.cpp b/editor/pot_generator.cpp
index b85099ca2e..8323ae944b 100644
--- a/editor/pot_generator.cpp
+++ b/editor/pot_generator.cpp
@@ -92,8 +92,8 @@ void POTGenerator::generate_pot(const String &p_file) {
}
if (GLOBAL_GET("internationalization/locale/translation_add_builtin_strings_to_pot")) {
- for (int i = 0; i < extractable_msgids.size(); i++) {
- _add_new_msgid(extractable_msgids[i], "", "", "");
+ for (const StringName &extractable_msgid : extractable_msgids) {
+ _add_new_msgid(extractable_msgid, "", "", "");
}
}
diff --git a/editor/property_selector.cpp b/editor/property_selector.cpp
index fceda52a3e..eef68d918a 100644
--- a/editor/property_selector.cpp
+++ b/editor/property_selector.cpp
@@ -299,20 +299,20 @@ void PropertySelector::_update_search() {
desc += vformat(" %s(", mi.name);
- for (int i = 0; i < mi.arguments.size(); i++) {
- if (i > 0) {
+ for (List<PropertyInfo>::Iterator arg_itr = mi.arguments.begin(); arg_itr != mi.arguments.end(); ++arg_itr) {
+ if (arg_itr != mi.arguments.begin()) {
desc += ", ";
}
- desc += mi.arguments[i].name;
+ desc += arg_itr->name;
- if (mi.arguments[i].type == Variant::NIL) {
+ if (arg_itr->type == Variant::NIL) {
desc += ": Variant";
- } else if (mi.arguments[i].name.contains(":")) {
- desc += vformat(": %s", mi.arguments[i].name.get_slice(":", 1));
- mi.arguments[i].name = mi.arguments[i].name.get_slice(":", 0);
+ } else if (arg_itr->name.contains(":")) {
+ desc += vformat(": %s", arg_itr->name.get_slice(":", 1));
+ arg_itr->name = arg_itr->name.get_slice(":", 0);
} else {
- desc += vformat(": %s", Variant::get_type_name(mi.arguments[i].type));
+ desc += vformat(": %s", Variant::get_type_name(arg_itr->type));
}
}
diff --git a/editor/rename_dialog.cpp b/editor/rename_dialog.cpp
index e63b90c0ac..9fca334e7c 100644
--- a/editor/rename_dialog.cpp
+++ b/editor/rename_dialog.cpp
@@ -591,12 +591,12 @@ void RenameDialog::rename() {
undo_redo->create_action(TTR("Batch Rename"), UndoRedo::MERGE_DISABLE, root_node, true);
// Make sure to iterate reversed so that child nodes will find parents.
- for (int i = to_rename.size() - 1; i >= 0; --i) {
- Node *n = root_node->get_node(to_rename[i].first);
- const String &new_name = to_rename[i].second;
+ for (List<Pair<NodePath, String>>::Element *E = to_rename.back(); E; E = E->prev()) {
+ Node *n = root_node->get_node(E->get().first);
+ const String &new_name = E->get().second;
if (!n) {
- ERR_PRINT("Skipping missing node: " + to_rename[i].first.get_concatenated_subnames());
+ ERR_PRINT("Skipping missing node: " + E->get().first.get_concatenated_subnames());
continue;
}
scene_tree_editor->rename_node(n, new_name);
diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp
index 67c269aa80..ee2a43bd55 100644
--- a/editor/scene_tree_dock.cpp
+++ b/editor/scene_tree_dock.cpp
@@ -728,9 +728,9 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
undo_redo->create_action(TTR("Move Nodes in Parent"));
}
- for (int i = 0; i < selection.size(); i++) {
- Node *top_node = selection[i];
- Node *bottom_node = selection[selection.size() - 1 - i];
+ for (List<Node *>::Element *top_E = selection.front(), *bottom_E = selection.back(); top_E && bottom_E; top_E = top_E->next(), bottom_E = bottom_E->prev()) {
+ Node *top_node = top_E->get();
+ Node *bottom_node = bottom_E->get();
ERR_FAIL_NULL(top_node->get_parent());
ERR_FAIL_NULL(bottom_node->get_parent());
@@ -968,14 +968,14 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
String msg;
if (remove_list.size() > 1) {
bool any_children = false;
- for (int i = 0; !any_children && i < remove_list.size(); i++) {
- any_children = remove_list[i]->get_child_count() > 0;
+ for (List<Node *>::ConstIterator itr = remove_list.begin(); !any_children && itr != remove_list.end(); ++itr) {
+ any_children = (*itr)->get_child_count() > 0;
}
msg = vformat(any_children ? TTR("Delete %d nodes and any children?") : TTR("Delete %d nodes?"), remove_list.size());
} else {
if (!p_confirm_override) {
- Node *node = remove_list[0];
+ Node *node = remove_list.front()->get();
if (node == editor_data->get_edited_scene_root()) {
msg = vformat(TTR("Delete the root node \"%s\"?"), node->get_name());
} else if (node->get_scene_file_path().is_empty() && node->get_child_count() > 0) {
@@ -1060,8 +1060,8 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
Ref<PackedScene> sd = memnew(PackedScene);
ResourceSaver::get_recognized_extensions(sd, &extensions);
new_scene_from_dialog->clear_filters();
- for (int i = 0; i < extensions.size(); i++) {
- new_scene_from_dialog->add_filter("*." + extensions[i], extensions[i].to_upper());
+ for (const String &extension : extensions) {
+ new_scene_from_dialog->add_filter("*." + extension, extension.to_upper());
}
String existing;
@@ -1099,8 +1099,8 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
} break;
case TOOL_OPEN_DOCUMENTATION: {
List<Node *> selection = editor_selection->get_selected_node_list();
- for (int i = 0; i < selection.size(); i++) {
- ScriptEditor::get_singleton()->goto_help("class_name:" + selection[i]->get_class());
+ for (const Node *node : selection) {
+ ScriptEditor::get_singleton()->goto_help("class_name:" + node->get_class());
}
EditorNode::get_singleton()->set_visible_editor(EditorNode::EDITOR_SCRIPT);
} break;
@@ -2614,7 +2614,7 @@ void SceneTreeDock::_update_script_button() {
button_create_script->hide();
button_detach_script->hide();
} else if (editor_selection->get_selection().size() == 1) {
- Node *n = editor_selection->get_selected_node_list()[0];
+ Node *n = editor_selection->get_selected_node_list().front()->get();
if (n->get_script().is_null()) {
button_create_script->show();
button_detach_script->hide();
@@ -3223,7 +3223,7 @@ void SceneTreeDock::_files_dropped(const Vector<String> &p_files, NodePath p_to,
menu_properties->set_position(get_screen_position() + get_local_mouse_position());
menu_properties->popup();
} else if (!valid_properties.is_empty()) {
- _perform_property_drop(node, valid_properties[0], ResourceLoader::load(res_path));
+ _perform_property_drop(node, valid_properties.front()->get(), ResourceLoader::load(res_path));
}
}
}
@@ -3371,13 +3371,13 @@ void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) {
Ref<Script> existing_script;
bool existing_script_removable = true;
if (selection.size() == 1) {
- Node *selected = selection[0];
+ Node *selected = selection.front()->get();
if (profile_allow_editing) {
subresources.clear();
menu_subresources->clear();
menu_subresources->reset_size();
- _add_children_to_popup(selection.front()->get(), 0);
+ _add_children_to_popup(selected, 0);
if (menu->get_item_count() > 0) {
menu->add_separator();
}
@@ -3501,17 +3501,17 @@ void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) {
if (menu->get_item_index(TOOL_COPY_NODE_PATH) == -1) {
menu->add_separator();
}
- Node *node = full_selection[0];
+ Node *node = full_selection.front()->get();
menu->add_icon_shortcut(get_editor_theme_icon(SNAME("SceneUniqueName")), ED_GET_SHORTCUT("scene_tree/toggle_unique_name"), TOOL_TOGGLE_SCENE_UNIQUE_NAME);
menu->set_item_text(menu->get_item_index(TOOL_TOGGLE_SCENE_UNIQUE_NAME), node->is_unique_name_in_owner() ? TTR("Revoke Unique Name") : TTR("Access as Unique Name"));
}
}
if (selection.size() == 1) {
- bool is_external = (!selection[0]->get_scene_file_path().is_empty());
+ bool is_external = (!selection.front()->get()->get_scene_file_path().is_empty());
if (is_external) {
- bool is_inherited = selection[0]->get_scene_inherited_state() != nullptr;
- bool is_top_level = selection[0]->get_owner() == nullptr;
+ bool is_inherited = selection.front()->get()->get_scene_inherited_state() != nullptr;
+ bool is_top_level = selection.front()->get()->get_owner() == nullptr;
if (is_inherited && is_top_level) {
menu->add_separator();
if (profile_allow_editing) {
@@ -3520,8 +3520,8 @@ void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) {
menu->add_icon_item(get_editor_theme_icon(SNAME("Load")), TTR("Open in Editor"), TOOL_SCENE_OPEN_INHERITED);
} else if (!is_top_level) {
menu->add_separator();
- bool editable = EditorNode::get_singleton()->get_edited_scene()->is_editable_instance(selection[0]);
- bool placeholder = selection[0]->get_scene_instance_load_placeholder();
+ bool editable = EditorNode::get_singleton()->get_edited_scene()->is_editable_instance(selection.front()->get());
+ bool placeholder = selection.front()->get()->get_scene_instance_load_placeholder();
if (profile_allow_editing) {
menu->add_check_item(TTR("Editable Children"), TOOL_SCENE_EDITABLE_CHILDREN);
menu->set_item_shortcut(-1, ED_GET_SHORTCUT("scene_tree/toggle_editable_children"));
@@ -3547,7 +3547,7 @@ void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) {
#endif // MODULE_REGEX_ENABLED
menu->add_separator();
- if (full_selection.size() == 1 && !selection[0]->get_scene_file_path().is_empty()) {
+ if (full_selection.size() == 1 && !selection.front()->get()->get_scene_file_path().is_empty()) {
menu->add_icon_shortcut(get_editor_theme_icon(SNAME("ShowInFileSystem")), ED_GET_SHORTCUT("scene_tree/show_in_file_system"), TOOL_SHOW_IN_FILE_SYSTEM);
}
diff --git a/editor/shader_create_dialog.cpp b/editor/shader_create_dialog.cpp
index 43fd559393..dde2ded539 100644
--- a/editor/shader_create_dialog.cpp
+++ b/editor/shader_create_dialog.cpp
@@ -282,7 +282,7 @@ void ShaderCreateDialog::_load_exist() {
void ShaderCreateDialog::_type_changed(int p_language) {
current_type = p_language;
- ShaderTypeData shader_type_data = type_data[p_language];
+ ShaderTypeData shader_type_data = type_data.get(p_language);
String selected_ext = "." + shader_type_data.default_extension;
String path = file_path->get_text();
@@ -342,7 +342,7 @@ void ShaderCreateDialog::_browse_path() {
file_browse->set_disable_overwrite_warning(true);
file_browse->clear_filters();
- List<String> extensions = type_data[type_menu->get_selected()].extensions;
+ List<String> extensions = type_data.get(type_menu->get_selected()).extensions;
for (const String &E : extensions) {
file_browse->add_filter("*." + E);
@@ -397,7 +397,7 @@ void ShaderCreateDialog::_path_submitted(const String &p_path) {
void ShaderCreateDialog::config(const String &p_base_path, bool p_built_in_enabled, bool p_load_enabled, int p_preferred_type, int p_preferred_mode) {
if (!p_base_path.is_empty()) {
initial_base_path = p_base_path.get_basename();
- file_path->set_text(initial_base_path + "." + type_data[type_menu->get_selected()].default_extension);
+ file_path->set_text(initial_base_path + "." + type_data.get(type_menu->get_selected()).default_extension);
current_type = type_menu->get_selected();
} else {
initial_base_path = "";
@@ -450,8 +450,9 @@ String ShaderCreateDialog::_validate_path(const String &p_path) {
String extension = p.get_extension();
HashSet<String> extensions;
- for (int i = 0; i < SHADER_TYPE_MAX; i++) {
- for (const String &ext : type_data[i].extensions) {
+ List<ShaderCreateDialog::ShaderTypeData>::ConstIterator itr = type_data.begin();
+ for (int i = 0; i < SHADER_TYPE_MAX; ++itr, ++i) {
+ for (const String &ext : itr->extensions) {
if (!extensions.has(ext)) {
extensions.insert(ext);
}
@@ -464,7 +465,7 @@ String ShaderCreateDialog::_validate_path(const String &p_path) {
for (const String &ext : extensions) {
if (ext.nocasecmp_to(extension) == 0) {
found = true;
- for (const String &type_ext : type_data[current_type].extensions) {
+ for (const String &type_ext : type_data.get(current_type).extensions) {
if (type_ext.nocasecmp_to(extension) == 0) {
match = true;
break;
diff --git a/main/main.cpp b/main/main.cpp
index 90c84114f2..2def90bc1a 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -995,74 +995,77 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
I = args.front();
while (I) {
+ List<String>::Element *N = I->next();
+
+ const String &arg = I->get();
+
#ifdef MACOS_ENABLED
// Ignore the process serial number argument passed by macOS Gatekeeper.
// Otherwise, Godot would try to open a non-existent project on the first start and abort.
- if (I->get().begins_with("-psn_")) {
- I = I->next();
+ if (arg.begins_with("-psn_")) {
+ I = N;
continue;
}
#endif
- List<String>::Element *N = I->next();
-
#ifdef TOOLS_ENABLED
- if (I->get() == "--debug" ||
- I->get() == "--verbose" ||
- I->get() == "--disable-crash-handler") {
- forwardable_cli_arguments[CLI_SCOPE_TOOL].push_back(I->get());
- forwardable_cli_arguments[CLI_SCOPE_PROJECT].push_back(I->get());
+ if (arg == "--debug" ||
+ arg == "--verbose" ||
+ arg == "--disable-crash-handler") {
+ forwardable_cli_arguments[CLI_SCOPE_TOOL].push_back(arg);
+ forwardable_cli_arguments[CLI_SCOPE_PROJECT].push_back(arg);
}
- if (I->get() == "--single-window") {
- forwardable_cli_arguments[CLI_SCOPE_TOOL].push_back(I->get());
+ if (arg == "--single-window") {
+ forwardable_cli_arguments[CLI_SCOPE_TOOL].push_back(arg);
}
- if (I->get() == "--audio-driver" ||
- I->get() == "--display-driver" ||
- I->get() == "--rendering-method" ||
- I->get() == "--rendering-driver") {
- if (I->next()) {
- forwardable_cli_arguments[CLI_SCOPE_TOOL].push_back(I->get());
- forwardable_cli_arguments[CLI_SCOPE_TOOL].push_back(I->next()->get());
+ if (arg == "--audio-driver" ||
+ arg == "--display-driver" ||
+ arg == "--rendering-method" ||
+ arg == "--rendering-driver") {
+ if (N) {
+ forwardable_cli_arguments[CLI_SCOPE_TOOL].push_back(arg);
+ forwardable_cli_arguments[CLI_SCOPE_TOOL].push_back(N->get());
}
}
// If gpu is specified, both editor and debug instances started from editor will inherit.
- if (I->get() == "--gpu-index") {
- if (I->next()) {
- forwardable_cli_arguments[CLI_SCOPE_TOOL].push_back(I->get());
- forwardable_cli_arguments[CLI_SCOPE_TOOL].push_back(I->next()->get());
- forwardable_cli_arguments[CLI_SCOPE_PROJECT].push_back(I->get());
- forwardable_cli_arguments[CLI_SCOPE_PROJECT].push_back(I->next()->get());
+ if (arg == "--gpu-index") {
+ if (N) {
+ const String &next_arg = N->get();
+ forwardable_cli_arguments[CLI_SCOPE_TOOL].push_back(arg);
+ forwardable_cli_arguments[CLI_SCOPE_TOOL].push_back(next_arg);
+ forwardable_cli_arguments[CLI_SCOPE_PROJECT].push_back(arg);
+ forwardable_cli_arguments[CLI_SCOPE_PROJECT].push_back(next_arg);
}
}
#endif
if (adding_user_args) {
- user_args.push_back(I->get());
- } else if (I->get() == "-h" || I->get() == "--help" || I->get() == "/?") { // display help
+ user_args.push_back(arg);
+ } else if (arg == "-h" || arg == "--help" || arg == "/?") { // display help
show_help = true;
exit_err = ERR_HELP; // Hack to force an early exit in `main()` with a success code.
goto error;
- } else if (I->get() == "--version") {
+ } else if (arg == "--version") {
print_line(get_full_version_string());
exit_err = ERR_HELP; // Hack to force an early exit in `main()` with a success code.
goto error;
- } else if (I->get() == "-v" || I->get() == "--verbose") { // verbose output
+ } else if (arg == "-v" || arg == "--verbose") { // verbose output
OS::get_singleton()->_verbose_stdout = true;
- } else if (I->get() == "-q" || I->get() == "--quiet") { // quieter output
+ } else if (arg == "-q" || arg == "--quiet") { // quieter output
quiet_stdout = true;
- } else if (I->get() == "--no-header") {
+ } else if (arg == "--no-header") {
Engine::get_singleton()->_print_header = false;
- } else if (I->get() == "--audio-driver") { // audio driver
+ } else if (arg == "--audio-driver") { // audio driver
- if (I->next()) {
- audio_driver = I->next()->get();
+ if (N) {
+ audio_driver = N->get();
bool found = false;
for (int i = 0; i < AudioDriverManager::get_driver_count(); i++) {
@@ -1090,32 +1093,32 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
goto error;
}
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing audio driver argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--audio-output-latency") {
- if (I->next()) {
- audio_output_latency = I->next()->get().to_int();
- N = I->next()->next();
+ } else if (arg == "--audio-output-latency") {
+ if (N) {
+ audio_output_latency = N->get().to_int();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing audio output latency argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--text-driver") {
- if (I->next()) {
- text_driver = I->next()->get();
- N = I->next()->next();
+ } else if (arg == "--text-driver") {
+ if (N) {
+ text_driver = N->get();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing text driver argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--display-driver") { // force video driver
+ } else if (arg == "--display-driver") { // force video driver
- if (I->next()) {
- display_driver = I->next()->get();
+ if (N) {
+ display_driver = N->get();
bool found = false;
for (int i = 0; i < DisplayServer::get_create_function_count(); i++) {
@@ -1143,63 +1146,63 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
goto error;
}
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing display driver argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--rendering-method") {
- if (I->next()) {
- rendering_method = I->next()->get();
- N = I->next()->next();
+ } else if (arg == "--rendering-method") {
+ if (N) {
+ rendering_method = N->get();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing renderer name argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--rendering-driver") {
- if (I->next()) {
- rendering_driver = I->next()->get();
- N = I->next()->next();
+ } else if (arg == "--rendering-driver") {
+ if (N) {
+ rendering_driver = N->get();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing rendering driver argument, aborting.\n");
goto error;
}
- } else if (I->get() == "-f" || I->get() == "--fullscreen") { // force fullscreen
+ } else if (arg == "-f" || arg == "--fullscreen") { // force fullscreen
init_fullscreen = true;
window_mode = DisplayServer::WINDOW_MODE_FULLSCREEN;
- } else if (I->get() == "-m" || I->get() == "--maximized") { // force maximized window
+ } else if (arg == "-m" || arg == "--maximized") { // force maximized window
init_maximized = true;
window_mode = DisplayServer::WINDOW_MODE_MAXIMIZED;
- } else if (I->get() == "-w" || I->get() == "--windowed") { // force windowed window
+ } else if (arg == "-w" || arg == "--windowed") { // force windowed window
init_windowed = true;
- } else if (I->get() == "--gpu-index") {
- if (I->next()) {
- Engine::singleton->gpu_idx = I->next()->get().to_int();
- N = I->next()->next();
+ } else if (arg == "--gpu-index") {
+ if (N) {
+ Engine::singleton->gpu_idx = N->get().to_int();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing GPU index argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--gpu-validation") {
+ } else if (arg == "--gpu-validation") {
Engine::singleton->use_validation_layers = true;
#ifdef DEBUG_ENABLED
- } else if (I->get() == "--gpu-abort") {
+ } else if (arg == "--gpu-abort") {
Engine::singleton->abort_on_gpu_errors = true;
#endif
- } else if (I->get() == "--generate-spirv-debug-info") {
+ } else if (arg == "--generate-spirv-debug-info") {
Engine::singleton->generate_spirv_debug_info = true;
- } else if (I->get() == "--tablet-driver") {
- if (I->next()) {
- tablet_driver = I->next()->get();
- N = I->next()->next();
+ } else if (arg == "--tablet-driver") {
+ if (N) {
+ tablet_driver = N->get();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing tablet driver argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--delta-smoothing") {
- if (I->next()) {
- String string = I->next()->get();
+ } else if (arg == "--delta-smoothing") {
+ if (N) {
+ String string = N->get();
bool recognized = false;
if (string == "enable") {
OS::get_singleton()->set_delta_smoothing(true);
@@ -1215,21 +1218,21 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->print("Delta-smoothing argument not recognized, aborting.\n");
goto error;
}
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing delta-smoothing argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--single-window") { // force single window
+ } else if (arg == "--single-window") { // force single window
single_window = true;
- } else if (I->get() == "-t" || I->get() == "--always-on-top") { // force always-on-top window
+ } else if (arg == "-t" || arg == "--always-on-top") { // force always-on-top window
init_always_on_top = true;
- } else if (I->get() == "--resolution") { // force resolution
+ } else if (arg == "--resolution") { // force resolution
- if (I->next()) {
- String vm = I->next()->get();
+ if (N) {
+ String vm = N->get();
if (!vm.contains("x")) { // invalid parameter format
@@ -1251,28 +1254,28 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
window_size.height = h;
force_res = true;
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing resolution argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--screen") { // set window screen
+ } else if (arg == "--screen") { // set window screen
- if (I->next()) {
- init_screen = I->next()->get().to_int();
+ if (N) {
+ init_screen = N->get().to_int();
init_use_custom_screen = true;
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing screen argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--position") { // set window position
+ } else if (arg == "--position") { // set window position
- if (I->next()) {
- String vm = I->next()->get();
+ if (N) {
+ String vm = N->get();
if (!vm.contains(",")) { // invalid parameter format
@@ -1287,103 +1290,103 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
init_custom_pos = Point2(x, y);
init_use_custom_pos = true;
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing position argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--headless") { // enable headless mode (no audio, no rendering).
+ } else if (arg == "--headless") { // enable headless mode (no audio, no rendering).
audio_driver = NULL_AUDIO_DRIVER;
display_driver = NULL_DISPLAY_DRIVER;
- } else if (I->get() == "--log-file") { // write to log file
+ } else if (arg == "--log-file") { // write to log file
- if (I->next()) {
- log_file = I->next()->get();
- N = I->next()->next();
+ if (N) {
+ log_file = N->get();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing log file path argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--profiling") { // enable profiling
+ } else if (arg == "--profiling") { // enable profiling
use_debug_profiler = true;
- } else if (I->get() == "-l" || I->get() == "--language") { // language
+ } else if (arg == "-l" || arg == "--language") { // language
- if (I->next()) {
- locale = I->next()->get();
- N = I->next()->next();
+ if (N) {
+ locale = N->get();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing language argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--remote-fs") { // remote filesystem
+ } else if (arg == "--remote-fs") { // remote filesystem
- if (I->next()) {
- remotefs = I->next()->get();
- N = I->next()->next();
+ if (N) {
+ remotefs = N->get();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing remote filesystem address, aborting.\n");
goto error;
}
- } else if (I->get() == "--remote-fs-password") { // remote filesystem password
+ } else if (arg == "--remote-fs-password") { // remote filesystem password
- if (I->next()) {
- remotefs_pass = I->next()->get();
- N = I->next()->next();
+ if (N) {
+ remotefs_pass = N->get();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing remote filesystem password, aborting.\n");
goto error;
}
- } else if (I->get() == "--render-thread") { // render thread mode
+ } else if (arg == "--render-thread") { // render thread mode
- if (I->next()) {
- if (I->next()->get() == "safe") {
+ if (N) {
+ if (N->get() == "safe") {
rtm = OS::RENDER_THREAD_SAFE;
- } else if (I->next()->get() == "unsafe") {
+ } else if (N->get() == "unsafe") {
rtm = OS::RENDER_THREAD_UNSAFE;
- } else if (I->next()->get() == "separate") {
+ } else if (N->get() == "separate") {
rtm = OS::RENDER_SEPARATE_THREAD;
} else {
OS::get_singleton()->print("Unknown render thread mode, aborting.\nValid options are 'unsafe', 'safe' and 'separate'.\n");
goto error;
}
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing render thread mode argument, aborting.\n");
goto error;
}
#ifdef TOOLS_ENABLED
- } else if (I->get() == "-e" || I->get() == "--editor") { // starts editor
+ } else if (arg == "-e" || arg == "--editor") { // starts editor
editor = true;
- } else if (I->get() == "-p" || I->get() == "--project-manager") { // starts project manager
+ } else if (arg == "-p" || arg == "--project-manager") { // starts project manager
project_manager = true;
- } else if (I->get() == "--debug-server") {
- if (I->next()) {
- debug_server_uri = I->next()->get();
+ } else if (arg == "--debug-server") {
+ if (N) {
+ debug_server_uri = N->get();
if (!debug_server_uri.contains("://")) { // wrong address
OS::get_singleton()->print("Invalid debug server uri. It should be of the form <protocol>://<bind_address>:<port>.\n");
goto error;
}
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing remote debug server uri, aborting.\n");
goto error;
}
- } else if (I->get() == "--single-threaded-scene") {
+ } else if (arg == "--single-threaded-scene") {
single_threaded_scene = true;
- } else if (I->get() == "--build-solutions") { // Build the scripting solution such C#
+ } else if (arg == "--build-solutions") { // Build the scripting solution such C#
auto_build_solutions = true;
editor = true;
cmdline_tool = true;
- } else if (I->get() == "--dump-gdextension-interface") {
+ } else if (arg == "--dump-gdextension-interface") {
// Register as an editor instance to use low-end fallback if relevant.
editor = true;
cmdline_tool = true;
@@ -1392,8 +1395,8 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
// Hack. Not needed but otherwise we end up detecting that this should
// run the project instead of a cmdline tool.
// Needs full refactoring to fix properly.
- main_args.push_back(I->get());
- } else if (I->get() == "--dump-extension-api") {
+ main_args.push_back(arg);
+ } else if (arg == "--dump-extension-api") {
// Register as an editor instance to use low-end fallback if relevant.
editor = true;
cmdline_tool = true;
@@ -1402,8 +1405,8 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
// Hack. Not needed but otherwise we end up detecting that this should
// run the project instead of a cmdline tool.
// Needs full refactoring to fix properly.
- main_args.push_back(I->get());
- } else if (I->get() == "--dump-extension-api-with-docs") {
+ main_args.push_back(arg);
+ } else if (arg == "--dump-extension-api-with-docs") {
// Register as an editor instance to use low-end fallback if relevant.
editor = true;
cmdline_tool = true;
@@ -1413,8 +1416,8 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
// Hack. Not needed but otherwise we end up detecting that this should
// run the project instead of a cmdline tool.
// Needs full refactoring to fix properly.
- main_args.push_back(I->get());
- } else if (I->get() == "--validate-extension-api") {
+ main_args.push_back(arg);
+ } else if (arg == "--validate-extension-api") {
// Register as an editor instance to use low-end fallback if relevant.
editor = true;
cmdline_tool = true;
@@ -1422,64 +1425,64 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
// Hack. Not needed but otherwise we end up detecting that this should
// run the project instead of a cmdline tool.
// Needs full refactoring to fix properly.
- main_args.push_back(I->get());
+ main_args.push_back(arg);
- if (I->next()) {
- validate_extension_api_file = I->next()->get();
+ if (N) {
+ validate_extension_api_file = N->get();
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing file to load argument after --validate-extension-api, aborting.");
goto error;
}
- } else if (I->get() == "--import") {
+ } else if (arg == "--import") {
editor = true;
cmdline_tool = true;
wait_for_import = true;
quit_after = 1;
- } else if (I->get() == "--export-release" || I->get() == "--export-debug" ||
- I->get() == "--export-pack") { // Export project
+ } else if (arg == "--export-release" || arg == "--export-debug" ||
+ arg == "--export-pack") { // Export project
// Actually handling is done in start().
editor = true;
cmdline_tool = true;
wait_for_import = true;
- main_args.push_back(I->get());
+ main_args.push_back(arg);
#ifndef DISABLE_DEPRECATED
- } else if (I->get() == "--export") { // For users used to 3.x syntax.
+ } else if (arg == "--export") { // For users used to 3.x syntax.
OS::get_singleton()->print("The Godot 3 --export option was changed to more explicit --export-release / --export-debug / --export-pack options.\nSee the --help output for details.\n");
goto error;
- } else if (I->get() == "--convert-3to4") {
+ } else if (arg == "--convert-3to4") {
// Actually handling is done in start().
cmdline_tool = true;
- main_args.push_back(I->get());
+ main_args.push_back(arg);
- if (I->next() && !I->next()->get().begins_with("-")) {
- if (itos(I->next()->get().to_int()) == I->next()->get()) {
- converter_max_kb_file = I->next()->get().to_int();
+ if (N && !N->get().begins_with("-")) {
+ if (itos(N->get().to_int()) == N->get()) {
+ converter_max_kb_file = N->get().to_int();
}
- if (I->next()->next() && !I->next()->next()->get().begins_with("-")) {
- if (itos(I->next()->next()->get().to_int()) == I->next()->next()->get()) {
- converter_max_line_length = I->next()->next()->get().to_int();
+ if (N->next() && !N->next()->get().begins_with("-")) {
+ if (itos(N->next()->get().to_int()) == N->next()->get()) {
+ converter_max_line_length = N->next()->get().to_int();
}
}
}
- } else if (I->get() == "--validate-conversion-3to4") {
+ } else if (arg == "--validate-conversion-3to4") {
// Actually handling is done in start().
cmdline_tool = true;
- main_args.push_back(I->get());
+ main_args.push_back(arg);
- if (I->next() && !I->next()->get().begins_with("-")) {
- if (itos(I->next()->get().to_int()) == I->next()->get()) {
- converter_max_kb_file = I->next()->get().to_int();
+ if (N && !N->get().begins_with("-")) {
+ if (itos(N->get().to_int()) == N->get()) {
+ converter_max_kb_file = N->get().to_int();
}
- if (I->next()->next() && !I->next()->next()->get().begins_with("-")) {
- if (itos(I->next()->next()->get().to_int()) == I->next()->next()->get()) {
- converter_max_line_length = I->next()->next()->get().to_int();
+ if (N->next() && !N->next()->get().begins_with("-")) {
+ if (itos(N->next()->get().to_int()) == N->next()->get()) {
+ converter_max_line_length = N->next()->get().to_int();
}
}
}
#endif // DISABLE_DEPRECATED
- } else if (I->get() == "--doctool") {
+ } else if (arg == "--doctool") {
// Actually handling is done in start().
cmdline_tool = true;
@@ -1487,49 +1490,49 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
// and speed up class reference generation.
audio_driver = NULL_AUDIO_DRIVER;
display_driver = NULL_DISPLAY_DRIVER;
- main_args.push_back(I->get());
+ main_args.push_back(arg);
#ifdef MODULE_GDSCRIPT_ENABLED
- } else if (I->get() == "--gdscript-docs") {
- if (I->next()) {
- project_path = I->next()->get();
+ } else if (arg == "--gdscript-docs") {
+ if (N) {
+ project_path = N->get();
// Will be handled in start()
- main_args.push_back(I->get());
- main_args.push_back(I->next()->get());
- N = I->next()->next();
+ main_args.push_back(arg);
+ main_args.push_back(N->get());
+ N = N->next();
} else {
OS::get_singleton()->print("Missing relative or absolute path to project for --gdscript-docs, aborting.\n");
goto error;
}
#endif // MODULE_GDSCRIPT_ENABLED
#endif // TOOLS_ENABLED
- } else if (I->get() == "--path") { // set path of project to start or edit
+ } else if (arg == "--path") { // set path of project to start or edit
- if (I->next()) {
- String p = I->next()->get();
+ if (N) {
+ String p = N->get();
if (OS::get_singleton()->set_cwd(p) != OK) {
OS::get_singleton()->print("Invalid project path specified: \"%s\", aborting.\n", p.utf8().get_data());
goto error;
}
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing relative or absolute path, aborting.\n");
goto error;
}
- } else if (I->get() == "-u" || I->get() == "--upwards") { // scan folders upwards
+ } else if (arg == "-u" || arg == "--upwards") { // scan folders upwards
upwards = true;
- } else if (I->get() == "--quit") { // Auto quit at the end of the first main loop iteration
+ } else if (arg == "--quit") { // Auto quit at the end of the first main loop iteration
quit_after = 1;
- } else if (I->get() == "--quit-after") { // Quit after the given number of iterations
- if (I->next()) {
- quit_after = I->next()->get().to_int();
- N = I->next()->next();
+ } else if (arg == "--quit-after") { // Quit after the given number of iterations
+ if (N) {
+ quit_after = N->get().to_int();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing number of iterations, aborting.\n");
goto error;
}
- } else if (I->get().ends_with("project.godot")) {
+ } else if (arg.ends_with("project.godot")) {
String path;
- String file = I->get();
+ String file = arg;
int sep = MAX(file.rfind("/"), file.rfind("\\"));
if (sep == -1) {
path = ".";
@@ -1544,108 +1547,108 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
#ifdef TOOLS_ENABLED
editor = true;
#endif
- } else if (I->get() == "-b" || I->get() == "--breakpoints") { // add breakpoints
+ } else if (arg == "-b" || arg == "--breakpoints") { // add breakpoints
- if (I->next()) {
- String bplist = I->next()->get();
+ if (N) {
+ String bplist = N->get();
breakpoints = bplist.split(",");
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing list of breakpoints, aborting.\n");
goto error;
}
- } else if (I->get() == "--max-fps") { // set maximum rendered FPS
+ } else if (arg == "--max-fps") { // set maximum rendered FPS
- if (I->next()) {
- max_fps = I->next()->get().to_int();
- N = I->next()->next();
+ if (N) {
+ max_fps = N->get().to_int();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing maximum FPS argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--frame-delay") { // force frame delay
+ } else if (arg == "--frame-delay") { // force frame delay
- if (I->next()) {
- frame_delay = I->next()->get().to_int();
- N = I->next()->next();
+ if (N) {
+ frame_delay = N->get().to_int();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing frame delay argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--time-scale") { // force time scale
+ } else if (arg == "--time-scale") { // force time scale
- if (I->next()) {
- Engine::get_singleton()->set_time_scale(I->next()->get().to_float());
- N = I->next()->next();
+ if (N) {
+ Engine::get_singleton()->set_time_scale(N->get().to_float());
+ N = N->next();
} else {
OS::get_singleton()->print("Missing time scale argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--main-pack") {
- if (I->next()) {
- main_pack = I->next()->get();
- N = I->next()->next();
+ } else if (arg == "--main-pack") {
+ if (N) {
+ main_pack = N->get();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing path to main pack file, aborting.\n");
goto error;
- };
+ }
- } else if (I->get() == "-d" || I->get() == "--debug") {
+ } else if (arg == "-d" || arg == "--debug") {
debug_uri = "local://";
OS::get_singleton()->_debug_stdout = true;
#if defined(DEBUG_ENABLED)
- } else if (I->get() == "--debug-collisions") {
+ } else if (arg == "--debug-collisions") {
debug_collisions = true;
- } else if (I->get() == "--debug-paths") {
+ } else if (arg == "--debug-paths") {
debug_paths = true;
- } else if (I->get() == "--debug-navigation") {
+ } else if (arg == "--debug-navigation") {
debug_navigation = true;
- } else if (I->get() == "--debug-avoidance") {
+ } else if (arg == "--debug-avoidance") {
debug_avoidance = true;
- } else if (I->get() == "--debug-canvas-item-redraw") {
+ } else if (arg == "--debug-canvas-item-redraw") {
debug_canvas_item_redraw = true;
- } else if (I->get() == "--debug-stringnames") {
+ } else if (arg == "--debug-stringnames") {
StringName::set_debug_stringnames(true);
#endif
- } else if (I->get() == "--remote-debug") {
- if (I->next()) {
- debug_uri = I->next()->get();
+ } else if (arg == "--remote-debug") {
+ if (N) {
+ debug_uri = N->get();
if (!debug_uri.contains("://")) { // wrong address
OS::get_singleton()->print(
"Invalid debug host address, it should be of the form <protocol>://<host/IP>:<port>.\n");
goto error;
}
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing remote debug host address, aborting.\n");
goto error;
}
- } else if (I->get() == "--editor-pid") { // not exposed to user
- if (I->next()) {
- editor_pid = I->next()->get().to_int();
- N = I->next()->next();
+ } else if (arg == "--editor-pid") { // not exposed to user
+ if (N) {
+ editor_pid = N->get().to_int();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing editor PID argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--disable-render-loop") {
+ } else if (arg == "--disable-render-loop") {
disable_render_loop = true;
- } else if (I->get() == "--fixed-fps") {
- if (I->next()) {
- fixed_fps = I->next()->get().to_int();
- N = I->next()->next();
+ } else if (arg == "--fixed-fps") {
+ if (N) {
+ fixed_fps = N->get().to_int();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing fixed-fps argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--write-movie") {
- if (I->next()) {
- Engine::get_singleton()->set_write_movie_path(I->next()->get());
- N = I->next()->next();
+ } else if (arg == "--write-movie") {
+ if (N) {
+ Engine::get_singleton()->set_write_movie_path(N->get());
+ N = N->next();
if (fixed_fps == -1) {
fixed_fps = 60;
}
@@ -1654,21 +1657,21 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->print("Missing write-movie argument, aborting.\n");
goto error;
}
- } else if (I->get() == "--disable-vsync") {
+ } else if (arg == "--disable-vsync") {
disable_vsync = true;
- } else if (I->get() == "--print-fps") {
+ } else if (arg == "--print-fps") {
print_fps = true;
- } else if (I->get() == "--profile-gpu") {
+ } else if (arg == "--profile-gpu") {
profile_gpu = true;
- } else if (I->get() == "--disable-crash-handler") {
+ } else if (arg == "--disable-crash-handler") {
OS::get_singleton()->disable_crash_handler();
- } else if (I->get() == "--skip-breakpoints") {
+ } else if (arg == "--skip-breakpoints") {
skip_breakpoints = true;
#ifndef _3D_DISABLED
- } else if (I->get() == "--xr-mode") {
- if (I->next()) {
- String xr_mode = I->next()->get().to_lower();
- N = I->next()->next();
+ } else if (arg == "--xr-mode") {
+ if (N) {
+ String xr_mode = N->get().to_lower();
+ N = N->next();
if (xr_mode == "default") {
XRServer::set_xr_mode(XRServer::XRMODE_DEFAULT);
} else if (xr_mode == "off") {
@@ -1684,37 +1687,37 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
goto error;
}
#endif // _3D_DISABLED
- } else if (I->get() == "--benchmark") {
+ } else if (arg == "--benchmark") {
OS::get_singleton()->set_use_benchmark(true);
- } else if (I->get() == "--benchmark-file") {
- if (I->next()) {
+ } else if (arg == "--benchmark-file") {
+ if (N) {
OS::get_singleton()->set_use_benchmark(true);
- String benchmark_file = I->next()->get();
+ String benchmark_file = N->get();
OS::get_singleton()->set_benchmark_file(benchmark_file);
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing <path> argument for --benchmark-file <path>.\n");
goto error;
}
#if defined(TOOLS_ENABLED) && defined(MODULE_GDSCRIPT_ENABLED) && !defined(GDSCRIPT_NO_LSP)
- } else if (I->get() == "--lsp-port") {
- if (I->next()) {
- int port_override = I->next()->get().to_int();
+ } else if (arg == "--lsp-port") {
+ if (N) {
+ int port_override = N->get().to_int();
if (port_override < 0 || port_override > 65535) {
OS::get_singleton()->print("<port> argument for --lsp-port <port> must be between 0 and 65535.\n");
goto error;
}
GDScriptLanguageServer::port_override = port_override;
- N = I->next()->next();
+ N = N->next();
} else {
OS::get_singleton()->print("Missing <port> argument for --lsp-port <port>.\n");
goto error;
}
#endif // TOOLS_ENABLED && MODULE_GDSCRIPT_ENABLED && !GDSCRIPT_NO_LSP
- } else if (I->get() == "--" || I->get() == "++") {
+ } else if (arg == "--" || arg == "++") {
adding_user_args = true;
} else {
- main_args.push_back(I->get());
+ main_args.push_back(arg);
}
I = N;
@@ -3201,56 +3204,56 @@ int Main::start() {
main_timer_sync.init(OS::get_singleton()->get_ticks_usec());
List<String> args = OS::get_singleton()->get_cmdline_args();
- for (int i = 0; i < args.size(); i++) {
+ for (List<String>::Element *E = args.front(); E; E = E->next()) {
// First check parameters that do not have an argument to the right.
// Doctest Unit Testing Handler
// Designed to override and pass arguments to the unit test handler.
- if (args[i] == "--check-only") {
+ if (E->get() == "--check-only") {
check_only = true;
#ifdef TOOLS_ENABLED
- } else if (args[i] == "--no-docbase") {
+ } else if (E->get() == "--no-docbase") {
gen_flags.set_flag(DocTools::GENERATE_FLAG_SKIP_BASIC_TYPES);
#ifndef DISABLE_DEPRECATED
- } else if (args[i] == "--convert-3to4") {
+ } else if (E->get() == "--convert-3to4") {
converting_project = true;
- } else if (args[i] == "--validate-conversion-3to4") {
+ } else if (E->get() == "--validate-conversion-3to4") {
validating_converting_project = true;
#endif // DISABLE_DEPRECATED
- } else if (args[i] == "-e" || args[i] == "--editor") {
+ } else if (E->get() == "-e" || E->get() == "--editor") {
editor = true;
- } else if (args[i] == "-p" || args[i] == "--project-manager") {
+ } else if (E->get() == "-p" || E->get() == "--project-manager") {
project_manager = true;
- } else if (args[i] == "--install-android-build-template") {
+ } else if (E->get() == "--install-android-build-template") {
install_android_build_template = true;
#endif // TOOLS_ENABLED
- } else if (args[i].length() && args[i][0] != '-' && positional_arg.is_empty()) {
- positional_arg = args[i];
-
- if (args[i].ends_with(".scn") ||
- args[i].ends_with(".tscn") ||
- args[i].ends_with(".escn") ||
- args[i].ends_with(".res") ||
- args[i].ends_with(".tres")) {
+ } else if (E->get().length() && E->get()[0] != '-' && positional_arg.is_empty()) {
+ positional_arg = E->get();
+
+ if (E->get().ends_with(".scn") ||
+ E->get().ends_with(".tscn") ||
+ E->get().ends_with(".escn") ||
+ E->get().ends_with(".res") ||
+ E->get().ends_with(".tres")) {
// Only consider the positional argument to be a scene path if it ends with
// a file extension associated with Godot scenes. This makes it possible
// for projects to parse command-line arguments for custom CLI arguments
// or other file extensions without trouble. This can be used to implement
// "drag-and-drop onto executable" logic, which can prove helpful
// for non-game applications.
- game_path = args[i];
+ game_path = E->get();
}
}
// Then parameters that have an argument to the right.
- else if (i < (args.size() - 1)) {
+ else if (E->next()) {
bool parsed_pair = true;
- if (args[i] == "-s" || args[i] == "--script") {
- script = args[i + 1];
- } else if (args[i] == "--main-loop") {
- main_loop_type = args[i + 1];
+ if (E->get() == "-s" || E->get() == "--script") {
+ script = E->next()->get();
+ } else if (E->get() == "--main-loop") {
+ main_loop_type = E->next()->get();
#ifdef TOOLS_ENABLED
- } else if (args[i] == "--doctool") {
- doc_tool_path = args[i + 1];
+ } else if (E->get() == "--doctool") {
+ doc_tool_path = E->next()->get();
if (doc_tool_path.begins_with("-")) {
// Assuming other command line arg, so default to cwd.
doc_tool_path = ".";
@@ -3258,19 +3261,19 @@ int Main::start() {
parsed_pair = false;
}
#ifdef MODULE_GDSCRIPT_ENABLED
- } else if (args[i] == "--gdscript-docs") {
- gdscript_docs_path = args[i + 1];
+ } else if (E->get() == "--gdscript-docs") {
+ gdscript_docs_path = E->next()->get();
#endif
- } else if (args[i] == "--export-release") {
+ } else if (E->get() == "--export-release") {
editor = true; //needs editor
- _export_preset = args[i + 1];
- } else if (args[i] == "--export-debug") {
+ _export_preset = E->next()->get();
+ } else if (E->get() == "--export-debug") {
editor = true; //needs editor
- _export_preset = args[i + 1];
+ _export_preset = E->next()->get();
export_debug = true;
- } else if (args[i] == "--export-pack") {
+ } else if (E->get() == "--export-pack") {
editor = true;
- _export_preset = args[i + 1];
+ _export_preset = E->next()->get();
export_pack_only = true;
#endif
} else {
@@ -3278,12 +3281,12 @@ int Main::start() {
parsed_pair = false;
}
if (parsed_pair) {
- i++;
+ E = E->next();
}
}
#ifdef TOOLS_ENABLED
// Handle case where no path is given to --doctool.
- else if (args[i] == "--doctool") {
+ else if (E->get() == "--doctool") {
doc_tool_path = ".";
doc_tool_implicit_cwd = true;
}
diff --git a/modules/enet/enet_multiplayer_peer.cpp b/modules/enet/enet_multiplayer_peer.cpp
index 910c4ed242..6f87a398c7 100644
--- a/modules/enet/enet_multiplayer_peer.cpp
+++ b/modules/enet/enet_multiplayer_peer.cpp
@@ -124,9 +124,9 @@ Error ENetMultiplayerPeer::add_mesh_peer(int p_id, Ref<ENetConnection> p_host) {
ERR_FAIL_COND_V_MSG(active_mode != MODE_MESH, ERR_UNCONFIGURED, "The multiplayer instance is not configured as a mesh. Call 'create_mesh' first.");
List<Ref<ENetPacketPeer>> host_peers;
p_host->get_peers(host_peers);
- ERR_FAIL_COND_V_MSG(host_peers.size() != 1 || host_peers[0]->get_state() != ENetPacketPeer::STATE_CONNECTED, ERR_INVALID_PARAMETER, "The provided host must have exactly one peer in the connected state.");
+ ERR_FAIL_COND_V_MSG(host_peers.size() != 1 || host_peers.front()->get()->get_state() != ENetPacketPeer::STATE_CONNECTED, ERR_INVALID_PARAMETER, "The provided host must have exactly one peer in the connected state.");
hosts[p_id] = p_host;
- peers[p_id] = host_peers[0];
+ peers[p_id] = host_peers.front()->get();
emit_signal(SNAME("peer_connected"), p_id);
return OK;
}
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp
index 279be65f03..4b6cc47218 100644
--- a/modules/gdscript/gdscript_analyzer.cpp
+++ b/modules/gdscript/gdscript_analyzer.cpp
@@ -3129,24 +3129,28 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool p_is_a
bool types_match = true;
- for (int i = 0; i < p_call->arguments.size(); i++) {
- GDScriptParser::DataType par_type = type_from_property(info.arguments[i], true);
- GDScriptParser::DataType arg_type = p_call->arguments[i]->get_datatype();
- if (!is_type_compatible(par_type, arg_type, true)) {
- types_match = false;
- break;
+ {
+ List<PropertyInfo>::ConstIterator arg_itr = info.arguments.begin();
+ for (int i = 0; i < p_call->arguments.size(); ++arg_itr, ++i) {
+ GDScriptParser::DataType par_type = type_from_property(*arg_itr, true);
+ GDScriptParser::DataType arg_type = p_call->arguments[i]->get_datatype();
+ if (!is_type_compatible(par_type, arg_type, true)) {
+ types_match = false;
+ break;
#ifdef DEBUG_ENABLED
- } else {
- if (par_type.builtin_type == Variant::INT && arg_type.builtin_type == Variant::FLOAT && builtin_type != Variant::INT) {
- parser->push_warning(p_call, GDScriptWarning::NARROWING_CONVERSION, function_name);
- }
+ } else {
+ if (par_type.builtin_type == Variant::INT && arg_type.builtin_type == Variant::FLOAT && builtin_type != Variant::INT) {
+ parser->push_warning(p_call, GDScriptWarning::NARROWING_CONVERSION, function_name);
+ }
#endif
+ }
}
}
if (types_match) {
- for (int i = 0; i < p_call->arguments.size(); i++) {
- GDScriptParser::DataType par_type = type_from_property(info.arguments[i], true);
+ List<PropertyInfo>::ConstIterator arg_itr = info.arguments.begin();
+ for (int i = 0; i < p_call->arguments.size(); ++arg_itr, ++i) {
+ GDScriptParser::DataType par_type = type_from_property(*arg_itr, true);
if (p_call->arguments[i]->is_constant) {
update_const_expression_builtin_type(p_call->arguments[i], par_type, "pass");
}
@@ -3366,8 +3370,8 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool p_is_a
// If the function requires typed arrays we must make literals be typed.
for (const KeyValue<int, GDScriptParser::ArrayNode *> &E : arrays) {
int index = E.key;
- if (index < par_types.size() && par_types[index].is_hard_type() && par_types[index].has_container_element_type(0)) {
- update_array_literal_element_type(E.value, par_types[index].get_container_element_type(0));
+ if (index < par_types.size() && par_types.get(index).is_hard_type() && par_types.get(index).has_container_element_type(0)) {
+ update_array_literal_element_type(E.value, par_types.get(index).get_container_element_type(0));
}
}
validate_call_arg(par_types, default_arg_count, method_flags.has_flag(METHOD_FLAG_VARARG), p_call);
@@ -5225,12 +5229,13 @@ void GDScriptAnalyzer::validate_call_arg(const List<GDScriptParser::DataType> &p
push_error(vformat(R"*(Too many arguments for "%s()" call. Expected at most %d but received %d.)*", p_call->function_name, p_par_types.size(), p_call->arguments.size()), p_call->arguments[p_par_types.size()]);
}
- for (int i = 0; i < p_call->arguments.size(); i++) {
+ List<GDScriptParser::DataType>::ConstIterator par_itr = p_par_types.begin();
+ for (int i = 0; i < p_call->arguments.size(); ++par_itr, ++i) {
if (i >= p_par_types.size()) {
// Already on vararg place.
break;
}
- GDScriptParser::DataType par_type = p_par_types[i];
+ GDScriptParser::DataType par_type = *par_itr;
if (par_type.is_hard_type() && p_call->arguments[i]->is_constant) {
update_const_expression_builtin_type(p_call->arguments[i], par_type, "pass");
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp
index a8a7f3d9f7..1f053be08d 100644
--- a/modules/gdscript/gdscript_compiler.cpp
+++ b/modules/gdscript/gdscript_compiler.cpp
@@ -241,9 +241,9 @@ static bool _can_use_validate_call(const MethodBind *p_method, const Vector<GDSc
}
MethodInfo info;
ClassDB::get_method_info(p_method->get_instance_class(), p_method->get_name(), &info);
- for (int i = 0; i < p_arguments.size(); i++) {
- const PropertyInfo &prop = info.arguments[i];
- if (!_is_exact_type(prop, p_arguments[i].type)) {
+ int i = 0;
+ for (List<PropertyInfo>::ConstIterator itr = info.arguments.begin(); itr != info.arguments.end(); ++itr, ++i) {
+ if (!_is_exact_type(*itr, p_arguments[i].type)) {
return false;
}
}
diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp
index 74d383c57f..9caf772b5c 100644
--- a/modules/gdscript/gdscript_editor.cpp
+++ b/modules/gdscript/gdscript_editor.cpp
@@ -2733,9 +2733,9 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
// Handle user preference.
if (opt.is_quoted()) {
opt = opt.unquote().quote(quote_style);
- if (use_string_names && info.arguments[p_argidx].type == Variant::STRING_NAME) {
+ if (use_string_names && info.arguments.get(p_argidx).type == Variant::STRING_NAME) {
opt = opt.indent("&");
- } else if (use_node_paths && info.arguments[p_argidx].type == Variant::NODE_PATH) {
+ } else if (use_node_paths && info.arguments.get(p_argidx).type == Variant::NODE_PATH) {
opt = opt.indent("^");
}
}
@@ -2746,7 +2746,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
}
if (p_argidx < method_args) {
- PropertyInfo arg_info = info.arguments[p_argidx];
+ const PropertyInfo &arg_info = info.arguments.get(p_argidx);
if (arg_info.usage & (PROPERTY_USAGE_CLASS_IS_ENUM | PROPERTY_USAGE_CLASS_IS_BITFIELD)) {
_find_enumeration_candidates(p_context, arg_info.class_name, r_result);
}
@@ -3334,19 +3334,17 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
}
method_hint += "(";
- if (mi.arguments.size()) {
- for (int i = 0; i < mi.arguments.size(); i++) {
- if (i > 0) {
- method_hint += ", ";
- }
- String arg = mi.arguments[i].name;
- if (arg.contains(":")) {
- arg = arg.substr(0, arg.find(":"));
- }
- method_hint += arg;
- if (use_type_hint) {
- method_hint += ": " + _get_visual_datatype(mi.arguments[i], true, class_name);
- }
+ for (List<PropertyInfo>::ConstIterator arg_itr = mi.arguments.begin(); arg_itr != mi.arguments.end(); ++arg_itr) {
+ if (arg_itr != mi.arguments.begin()) {
+ method_hint += ", ";
+ }
+ String arg = arg_itr->name;
+ if (arg.contains(":")) {
+ arg = arg.substr(0, arg.find(":"));
+ }
+ method_hint += arg;
+ if (use_type_hint) {
+ method_hint += ": " + _get_visual_datatype(*arg_itr, true, class_name);
}
}
method_hint += ")";
diff --git a/modules/gdscript/gdscript_utility_functions.cpp b/modules/gdscript/gdscript_utility_functions.cpp
index f0816650b9..3e1de628d2 100644
--- a/modules/gdscript/gdscript_utility_functions.cpp
+++ b/modules/gdscript/gdscript_utility_functions.cpp
@@ -760,7 +760,7 @@ Variant::Type GDScriptUtilityFunctions::get_function_argument_type(const StringN
GDScriptUtilityFunctionInfo *info = utility_function_table.lookup_ptr(p_function);
ERR_FAIL_NULL_V(info, Variant::NIL);
ERR_FAIL_COND_V(p_arg >= info->info.arguments.size(), Variant::NIL);
- return info->info.arguments[p_arg].type;
+ return info->info.arguments.get(p_arg).type;
}
int GDScriptUtilityFunctions::get_function_argument_count(const StringName &p_function) {
diff --git a/modules/gdscript/language_server/gdscript_extend_parser.cpp b/modules/gdscript/language_server/gdscript_extend_parser.cpp
index ad7af34bf1..2a3db4f508 100644
--- a/modules/gdscript/language_server/gdscript_extend_parser.cpp
+++ b/modules/gdscript/language_server/gdscript_extend_parser.cpp
@@ -510,7 +510,7 @@ void ExtendGDScriptParser::parse_function_symbol(const GDScriptParser::FunctionN
node_stack.push_back(p_func->body);
while (!node_stack.is_empty()) {
- GDScriptParser::Node *node = node_stack[0];
+ GDScriptParser::Node *node = node_stack.front()->get();
node_stack.pop_front();
switch (node->type) {
diff --git a/modules/gdscript/language_server/gdscript_workspace.cpp b/modules/gdscript/language_server/gdscript_workspace.cpp
index a63d32ef30..819611099e 100644
--- a/modules/gdscript/language_server/gdscript_workspace.cpp
+++ b/modules/gdscript/language_server/gdscript_workspace.cpp
@@ -223,7 +223,7 @@ void GDScriptWorkspace::reload_all_workspace_scripts() {
HashMap<String, ExtendGDScriptParser *>::Iterator S = parse_results.find(path);
String err_msg = "Failed parse script " + path;
if (S) {
- err_msg += "\n" + S->value->get_errors()[0].message;
+ err_msg += "\n" + S->value->get_errors().front()->get().message;
}
ERR_CONTINUE_MSG(err != OK, err_msg);
}
@@ -619,8 +619,8 @@ Node *GDScriptWorkspace::_get_owner_scene_node(String p_path) {
_get_owners(EditorFileSystem::get_singleton()->get_filesystem(), p_path, owners);
- for (int i = 0; i < owners.size(); i++) {
- NodePath owner_path = owners[i];
+ for (const String &owner : owners) {
+ NodePath owner_path = owner;
Ref<Resource> owner_res = ResourceLoader::load(owner_path);
if (Object::cast_to<PackedScene>(owner_res.ptr())) {
Ref<PackedScene> owner_packed_scene = Ref<PackedScene>(Object::cast_to<PackedScene>(*owner_res));
diff --git a/modules/gdscript/tests/gdscript_test_runner.cpp b/modules/gdscript/tests/gdscript_test_runner.cpp
index e3d16eaf42..a949c44d78 100644
--- a/modules/gdscript/tests/gdscript_test_runner.cpp
+++ b/modules/gdscript/tests/gdscript_test_runner.cpp
@@ -573,7 +573,7 @@ GDScriptTest::TestResult GDScriptTest::execute_test_code(bool p_is_generating) {
const List<GDScriptParser::ParserError> &errors = parser.get_errors();
if (!errors.is_empty()) {
// Only the first error since the following might be cascading.
- result.output += errors[0].message + "\n"; // TODO: line, column?
+ result.output += errors.front()->get().message + "\n"; // TODO: line, column?
}
if (!p_is_generating) {
result.passed = check_output(result.output);
@@ -592,7 +592,7 @@ GDScriptTest::TestResult GDScriptTest::execute_test_code(bool p_is_generating) {
const List<GDScriptParser::ParserError> &errors = parser.get_errors();
if (!errors.is_empty()) {
// Only the first error since the following might be cascading.
- result.output += errors[0].message + "\n"; // TODO: line, column?
+ result.output += errors.front()->get().message + "\n"; // TODO: line, column?
}
if (!p_is_generating) {
result.passed = check_output(result.output);
diff --git a/modules/gdscript/tests/gdscript_test_runner_suite.h b/modules/gdscript/tests/gdscript_test_runner_suite.h
index b2289ef9cc..d6befd2db3 100644
--- a/modules/gdscript/tests/gdscript_test_runner_suite.h
+++ b/modules/gdscript/tests/gdscript_test_runner_suite.h
@@ -81,11 +81,10 @@ TEST_CASE("[Modules][GDScript] Validate built-in API") {
SUBCASE("[Modules][GDScript] Validate built-in methods") {
for (const MethodInfo &mi : builtin_methods) {
- for (int j = 0; j < mi.arguments.size(); j++) {
- PropertyInfo arg = mi.arguments[j];
-
- TEST_COND((arg.name.is_empty() || arg.name.begins_with("_unnamed_arg")),
- vformat("Unnamed argument in position %d of built-in method '%s'.", j, mi.name));
+ int i = 0;
+ for (List<PropertyInfo>::ConstIterator itr = mi.arguments.begin(); itr != mi.arguments.end(); ++itr, ++i) {
+ TEST_COND((itr->name.is_empty() || itr->name.begins_with("_unnamed_arg")),
+ vformat("Unnamed argument in position %d of built-in method '%s'.", i, mi.name));
}
}
}
@@ -96,11 +95,10 @@ TEST_CASE("[Modules][GDScript] Validate built-in API") {
SUBCASE("[Modules][GDScript] Validate built-in annotations") {
for (const MethodInfo &ai : builtin_annotations) {
- for (int j = 0; j < ai.arguments.size(); j++) {
- PropertyInfo arg = ai.arguments[j];
-
- TEST_COND((arg.name.is_empty() || arg.name.begins_with("_unnamed_arg")),
- vformat("Unnamed argument in position %d of built-in annotation '%s'.", j, ai.name));
+ int i = 0;
+ for (List<PropertyInfo>::ConstIterator itr = ai.arguments.begin(); itr != ai.arguments.end(); ++itr, ++i) {
+ TEST_COND((itr->name.is_empty() || itr->name.begins_with("_unnamed_arg")),
+ vformat("Unnamed argument in position %d of built-in annotation '%s'.", i, ai.name));
}
}
}
diff --git a/modules/gdscript/tests/test_gdscript.cpp b/modules/gdscript/tests/test_gdscript.cpp
index f6965cf7cf..fbc72a0508 100644
--- a/modules/gdscript/tests/test_gdscript.cpp
+++ b/modules/gdscript/tests/test_gdscript.cpp
@@ -188,11 +188,11 @@ static void recursively_disassemble_functions(const Ref<GDScript> script, const
const MethodInfo &mi = func->get_method_info();
String signature = "Disassembling " + mi.name + "(";
- for (int i = 0; i < mi.arguments.size(); i++) {
- if (i > 0) {
+ for (List<PropertyInfo>::ConstIterator arg_itr = mi.arguments.begin(); arg_itr != mi.arguments.end(); ++arg_itr) {
+ if (arg_itr != mi.arguments.begin()) {
signature += ", ";
}
- signature += mi.arguments[i].name;
+ signature += arg_itr->name;
}
print_line(signature + ")");
#ifdef TOOLS_ENABLED
diff --git a/modules/mono/class_db_api_json.cpp b/modules/mono/class_db_api_json.cpp
index c4aba577db..04af60e22f 100644
--- a/modules/mono/class_db_api_json.cpp
+++ b/modules/mono/class_db_api_json.cpp
@@ -166,10 +166,10 @@ void class_db_api_to_json(const String &p_output_file, ClassDB::APIType p_api) {
Array arguments;
signal_dict["arguments"] = arguments;
- for (int i = 0; i < mi.arguments.size(); i++) {
+ for (const PropertyInfo &pi : mi.arguments) {
Dictionary argument_dict;
arguments.push_back(argument_dict);
- argument_dict["type"] = mi.arguments[i].type;
+ argument_dict["type"] = pi.type;
}
}
diff --git a/modules/mono/editor/bindings_generator.cpp b/modules/mono/editor/bindings_generator.cpp
index d46160127d..eb75f05a23 100644
--- a/modules/mono/editor/bindings_generator.cpp
+++ b/modules/mono/editor/bindings_generator.cpp
@@ -2308,8 +2308,9 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
output << imethod.proxy_name << "(";
- for (int i = 0; i < imethod.arguments.size(); i++) {
- const ArgumentInterface &iarg = imethod.arguments[i];
+ int i = 0;
+ for (List<BindingsGenerator::ArgumentInterface>::ConstIterator itr = imethod.arguments.begin(); itr != imethod.arguments.end(); ++itr, ++i) {
+ const ArgumentInterface &iarg = *itr;
const TypeInterface *arg_type = _get_type_or_null(iarg.type);
ERR_FAIL_NULL_V(arg_type, ERR_BUG); // Argument type not found
@@ -3727,8 +3728,6 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
const MethodInfo &method_info = E.first;
const uint32_t hash = E.second;
- int argc = method_info.arguments.size();
-
if (method_info.name.is_empty()) {
continue;
}
@@ -3820,8 +3819,9 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
imethod.return_type.cname = _get_type_name_from_meta(return_info.type, m ? m->get_argument_meta(-1) : (GodotTypeInfo::Metadata)method_info.return_val_metadata);
}
- for (int i = 0; i < argc; i++) {
- PropertyInfo arginfo = method_info.arguments[i];
+ int idx = 0;
+ for (List<PropertyInfo>::ConstIterator itr = method_info.arguments.begin(); itr != method_info.arguments.end(); ++itr, ++idx) {
+ const PropertyInfo &arginfo = *itr;
String orig_arg_name = arginfo.name;
@@ -3841,13 +3841,13 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
} else if (arginfo.type == Variant::NIL) {
iarg.type.cname = name_cache.type_Variant;
} else {
- iarg.type.cname = _get_type_name_from_meta(arginfo.type, m ? m->get_argument_meta(i) : (GodotTypeInfo::Metadata)method_info.get_argument_meta(i));
+ iarg.type.cname = _get_type_name_from_meta(arginfo.type, m ? m->get_argument_meta(idx) : (GodotTypeInfo::Metadata)method_info.get_argument_meta(idx));
}
iarg.name = escape_csharp_keyword(snake_to_camel_case(iarg.name));
- if (m && m->has_default_argument(i)) {
- bool defval_ok = _arg_default_value_from_variant(m->get_default_argument(i), iarg);
+ if (m && m->has_default_argument(idx)) {
+ bool defval_ok = _arg_default_value_from_variant(m->get_default_argument(idx), iarg);
ERR_FAIL_COND_V_MSG(!defval_ok, false,
"Cannot determine default value for argument '" + orig_arg_name + "' of method '" + itype.name + "." + imethod.name + "'.");
}
@@ -3946,10 +3946,9 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
isignal.name = method_info.name;
isignal.cname = method_info.name;
- int argc = method_info.arguments.size();
-
- for (int i = 0; i < argc; i++) {
- PropertyInfo arginfo = method_info.arguments[i];
+ int idx = 0;
+ for (List<PropertyInfo>::ConstIterator itr = method_info.arguments.begin(); itr != method_info.arguments.end(); ++itr, ++idx) {
+ const PropertyInfo &arginfo = *itr;
String orig_arg_name = arginfo.name;
@@ -3969,7 +3968,7 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
} else if (arginfo.type == Variant::NIL) {
iarg.type.cname = name_cache.type_Variant;
} else {
- iarg.type.cname = _get_type_name_from_meta(arginfo.type, (GodotTypeInfo::Metadata)method_info.get_argument_meta(i));
+ iarg.type.cname = _get_type_name_from_meta(arginfo.type, (GodotTypeInfo::Metadata)method_info.get_argument_meta(idx));
}
iarg.name = escape_csharp_keyword(snake_to_camel_case(iarg.name));
@@ -4770,9 +4769,11 @@ bool BindingsGenerator::_method_has_conflicting_signature(const MethodInterface
return false;
}
- for (int i = 0; i < p_imethod_left.arguments.size(); i++) {
- const ArgumentInterface &iarg_left = p_imethod_left.arguments[i];
- const ArgumentInterface &iarg_right = p_imethod_right.arguments[i];
+ List<BindingsGenerator::ArgumentInterface>::ConstIterator left_itr = p_imethod_left.arguments.begin();
+ List<BindingsGenerator::ArgumentInterface>::ConstIterator right_itr = p_imethod_right.arguments.begin();
+ for (; left_itr != p_imethod_left.arguments.end(); ++left_itr, ++right_itr) {
+ const ArgumentInterface &iarg_left = *left_itr;
+ const ArgumentInterface &iarg_right = *right_itr;
if (iarg_left.type.cname != iarg_right.type.cname) {
// Different types for arguments in the same position, so no conflict.
diff --git a/modules/multiplayer/scene_replication_config.cpp b/modules/multiplayer/scene_replication_config.cpp
index 733540a0e4..ab92f7d90f 100644
--- a/modules/multiplayer/scene_replication_config.cpp
+++ b/modules/multiplayer/scene_replication_config.cpp
@@ -48,7 +48,7 @@ bool SceneReplicationConfig::_set(const StringName &p_name, const Variant &p_val
return true;
}
ERR_FAIL_INDEX_V(idx, properties.size(), false);
- ReplicationProperty &prop = properties[idx];
+ const ReplicationProperty &prop = properties.get(idx);
if (what == "replication_mode") {
ERR_FAIL_COND_V(p_value.get_type() != Variant::INT, false);
ReplicationMode mode = (ReplicationMode)p_value.operator int();
@@ -80,7 +80,7 @@ bool SceneReplicationConfig::_get(const StringName &p_name, Variant &r_ret) cons
int idx = prop_name.get_slicec('/', 1).to_int();
String what = prop_name.get_slicec('/', 2);
ERR_FAIL_INDEX_V(idx, properties.size(), false);
- const ReplicationProperty &prop = properties[idx];
+ const ReplicationProperty &prop = properties.get(idx);
if (what == "path") {
r_ret = prop.name;
return true;
@@ -147,8 +147,8 @@ void SceneReplicationConfig::remove_property(const NodePath &p_path) {
}
bool SceneReplicationConfig::has_property(const NodePath &p_path) const {
- for (int i = 0; i < properties.size(); i++) {
- if (properties[i].name == p_path) {
+ for (const ReplicationProperty &property : properties) {
+ if (property.name == p_path) {
return true;
}
}
@@ -156,8 +156,9 @@ bool SceneReplicationConfig::has_property(const NodePath &p_path) const {
}
int SceneReplicationConfig::property_get_index(const NodePath &p_path) const {
- for (int i = 0; i < properties.size(); i++) {
- if (properties[i].name == p_path) {
+ int i = 0;
+ for (List<ReplicationProperty>::ConstIterator itr = properties.begin(); itr != properties.end(); ++itr, ++i) {
+ if (itr->name == p_path) {
return i;
}
}
diff --git a/modules/multiplayer/scene_replication_interface.cpp b/modules/multiplayer/scene_replication_interface.cpp
index bb32eed1a9..182e9b455c 100644
--- a/modules/multiplayer/scene_replication_interface.cpp
+++ b/modules/multiplayer/scene_replication_interface.cpp
@@ -243,7 +243,7 @@ Error SceneReplicationInterface::on_replication_start(Object *p_obj, Variant p_c
// Try to apply synchronizer Net ID
ERR_FAIL_COND_V_MSG(pending_sync_net_ids.is_empty(), ERR_INVALID_DATA, vformat("The MultiplayerSynchronizer at path \"%s\" is unable to process the pending spawn since it has no network ID. This might happen when changing the multiplayer authority during the \"_ready\" callback. Make sure to only change the authority of multiplayer synchronizers during \"_enter_tree\" or the \"_spawn_custom\" callback of their multiplayer spawner.", sync->get_path()));
ERR_FAIL_COND_V(!peers_info.has(pending_spawn_remote), ERR_INVALID_DATA);
- uint32_t net_id = pending_sync_net_ids[0];
+ uint32_t net_id = pending_sync_net_ids.front()->get();
pending_sync_net_ids.pop_front();
peers_info[pending_spawn_remote].recv_sync_ids[net_id] = sync->get_instance_id();
sync->set_net_id(net_id);
diff --git a/modules/openxr/openxr_api.cpp b/modules/openxr/openxr_api.cpp
index 8731a36865..0742cae26a 100644
--- a/modules/openxr/openxr_api.cpp
+++ b/modules/openxr/openxr_api.cpp
@@ -1335,8 +1335,8 @@ bool OpenXRAPI::on_state_synchronized() {
// Just in case, see if we already have active trackers...
List<RID> trackers;
tracker_owner.get_owned_list(&trackers);
- for (int i = 0; i < trackers.size(); i++) {
- tracker_check_profile(trackers[i]);
+ for (const RID &tracker : trackers) {
+ tracker_check_profile(tracker);
}
for (OpenXRExtensionWrapper *wrapper : registered_extension_wrappers) {
@@ -1963,8 +1963,8 @@ bool OpenXRAPI::poll_events() {
List<RID> trackers;
tracker_owner.get_owned_list(&trackers);
- for (int i = 0; i < trackers.size(); i++) {
- tracker_check_profile(trackers[i], event->session);
+ for (const RID &tracker : trackers) {
+ tracker_check_profile(tracker, event->session);
}
} break;
diff --git a/modules/webrtc/webrtc_multiplayer_peer.cpp b/modules/webrtc/webrtc_multiplayer_peer.cpp
index 9224760c5b..45fa9f46ca 100644
--- a/modules/webrtc/webrtc_multiplayer_peer.cpp
+++ b/modules/webrtc/webrtc_multiplayer_peer.cpp
@@ -59,7 +59,7 @@ int WebRTCMultiplayerPeer::get_packet_channel() const {
MultiplayerPeer::TransferMode WebRTCMultiplayerPeer::get_packet_mode() const {
ERR_FAIL_INDEX_V(next_packet_channel, channels_modes.size(), TRANSFER_MODE_RELIABLE);
- return channels_modes[next_packet_channel];
+ return channels_modes.get(next_packet_channel);
}
bool WebRTCMultiplayerPeer::is_server() const {
@@ -308,18 +308,18 @@ Error WebRTCMultiplayerPeer::add_peer(Ref<WebRTCPeerConnection> p_peer, int p_pe
cfg["ordered"] = true;
cfg["id"] = 1;
- peer->channels[CH_RELIABLE] = p_peer->create_data_channel("reliable", cfg);
- ERR_FAIL_COND_V(peer->channels[CH_RELIABLE].is_null(), FAILED);
+ peer->channels.get(CH_RELIABLE) = p_peer->create_data_channel("reliable", cfg);
+ ERR_FAIL_COND_V(peer->channels.get(CH_RELIABLE).is_null(), FAILED);
cfg["id"] = 2;
cfg["maxPacketLifetime"] = p_unreliable_lifetime;
- peer->channels[CH_ORDERED] = p_peer->create_data_channel("ordered", cfg);
- ERR_FAIL_COND_V(peer->channels[CH_ORDERED].is_null(), FAILED);
+ peer->channels.get(CH_ORDERED) = p_peer->create_data_channel("ordered", cfg);
+ ERR_FAIL_COND_V(peer->channels.get(CH_ORDERED).is_null(), FAILED);
cfg["id"] = 3;
cfg["ordered"] = false;
- peer->channels[CH_UNRELIABLE] = p_peer->create_data_channel("unreliable", cfg);
- ERR_FAIL_COND_V(peer->channels[CH_UNRELIABLE].is_null(), FAILED);
+ peer->channels.get(CH_UNRELIABLE) = p_peer->create_data_channel("unreliable", cfg);
+ ERR_FAIL_COND_V(peer->channels.get(CH_UNRELIABLE).is_null(), FAILED);
for (const Dictionary &dict : channels_config) {
Ref<WebRTCDataChannel> ch = p_peer->create_data_channel(String::num_int64(dict["id"]), dict);
@@ -400,8 +400,8 @@ Error WebRTCMultiplayerPeer::put_packet(const uint8_t *p_buffer, int p_buffer_si
ERR_FAIL_COND_V_MSG(!E, ERR_INVALID_PARAMETER, "Invalid target peer: " + itos(target_peer) + ".");
ERR_FAIL_COND_V_MSG(E->value->channels.size() <= ch, ERR_INVALID_PARAMETER, vformat("Unable to send packet on channel %d, max channels: %d", ch, E->value->channels.size()));
- ERR_FAIL_COND_V(E->value->channels[ch].is_null(), ERR_BUG);
- return E->value->channels[ch]->put_packet(p_buffer, p_buffer_size);
+ ERR_FAIL_COND_V(E->value->channels.get(ch).is_null(), ERR_BUG);
+ return E->value->channels.get(ch)->put_packet(p_buffer, p_buffer_size);
} else {
int exclude = -target_peer;
@@ -413,8 +413,8 @@ Error WebRTCMultiplayerPeer::put_packet(const uint8_t *p_buffer, int p_buffer_si
}
ERR_CONTINUE_MSG(F.value->channels.size() <= ch, vformat("Unable to send packet on channel %d, max channels: %d", ch, F.value->channels.size()));
- ERR_CONTINUE(F.value->channels[ch].is_null());
- F.value->channels[ch]->put_packet(p_buffer, p_buffer_size);
+ ERR_CONTINUE(F.value->channels.get(ch).is_null());
+ F.value->channels.get(ch)->put_packet(p_buffer, p_buffer_size);
}
}
return OK;
diff --git a/modules/websocket/remote_debugger_peer_websocket.cpp b/modules/websocket/remote_debugger_peer_websocket.cpp
index dc6833e8c3..a40ea0205e 100644
--- a/modules/websocket/remote_debugger_peer_websocket.cpp
+++ b/modules/websocket/remote_debugger_peer_websocket.cpp
@@ -74,7 +74,7 @@ void RemoteDebuggerPeerWebSocket::poll() {
}
while (ws_peer->get_ready_state() == WebSocketPeer::STATE_OPEN && out_queue.size() > 0) {
- Array var = out_queue[0];
+ Array var = out_queue.front()->get();
Error err = ws_peer->put_var(var);
ERR_BREAK(err != OK); // Peer buffer full?
out_queue.pop_front();
@@ -92,7 +92,7 @@ bool RemoteDebuggerPeerWebSocket::has_message() {
Array RemoteDebuggerPeerWebSocket::get_message() {
ERR_FAIL_COND_V(in_queue.is_empty(), Array());
- Array msg = in_queue[0];
+ Array msg = in_queue.front()->get();
in_queue.pop_front();
return msg;
}
diff --git a/platform/android/export/export_plugin.cpp b/platform/android/export/export_plugin.cpp
index 3b1a534daf..30d57cade5 100644
--- a/platform/android/export/export_plugin.cpp
+++ b/platform/android/export/export_plugin.cpp
@@ -2974,11 +2974,11 @@ void EditorExportPlatformAndroid::_remove_copied_libs(String p_gdextension_libs_
String EditorExportPlatformAndroid::join_list(const List<String> &p_parts, const String &p_separator) {
String ret;
- for (int i = 0; i < p_parts.size(); ++i) {
- if (i > 0) {
+ for (List<String>::ConstIterator itr = p_parts.begin(); itr != p_parts.end(); ++itr) {
+ if (itr != p_parts.begin()) {
ret += p_separator;
}
- ret += p_parts[i];
+ ret += *itr;
}
return ret;
}
diff --git a/platform/android/java_godot_wrapper.cpp b/platform/android/java_godot_wrapper.cpp
index 0e766e7d56..6e7f5ef5a1 100644
--- a/platform/android/java_godot_wrapper.cpp
+++ b/platform/android/java_godot_wrapper.cpp
@@ -351,8 +351,9 @@ int GodotJavaWrapper::create_new_godot_instance(const List<String> &args) {
JNIEnv *env = get_jni_env();
ERR_FAIL_NULL_V(env, 0);
jobjectArray jargs = env->NewObjectArray(args.size(), env->FindClass("java/lang/String"), env->NewStringUTF(""));
- for (int i = 0; i < args.size(); i++) {
- jstring j_arg = env->NewStringUTF(args[i].utf8().get_data());
+ int i = 0;
+ for (List<String>::ConstIterator itr = args.begin(); itr != args.end(); ++itr, ++i) {
+ jstring j_arg = env->NewStringUTF(itr->utf8().get_data());
env->SetObjectArrayElement(jargs, i, j_arg);
env->DeleteLocalRef(j_arg);
}
diff --git a/platform/ios/export/godot_plugin_config.cpp b/platform/ios/export/godot_plugin_config.cpp
index 86d5c7ef5b..90e40b7c42 100644
--- a/platform/ios/export/godot_plugin_config.cpp
+++ b/platform/ios/export/godot_plugin_config.cpp
@@ -212,8 +212,8 @@ PluginConfigIOS PluginConfigIOS::load_plugin_config(Ref<ConfigFile> config_file,
List<String> keys;
config_file->get_section_keys(PluginConfigIOS::PLIST_SECTION, &keys);
- for (int i = 0; i < keys.size(); i++) {
- Vector<String> key_components = keys[i].split(":");
+ for (const String &key : keys) {
+ Vector<String> key_components = key.split(":");
String key_value = "";
PluginConfigIOS::PlistItemType key_type = PluginConfigIOS::PlistItemType::UNKNOWN;
@@ -245,29 +245,29 @@ PluginConfigIOS PluginConfigIOS::load_plugin_config(Ref<ConfigFile> config_file,
switch (key_type) {
case PluginConfigIOS::PlistItemType::STRING: {
- String raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, keys[i], String());
+ String raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, key, String());
value = "<string>" + raw_value + "</string>";
} break;
case PluginConfigIOS::PlistItemType::INTEGER: {
- int raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, keys[i], 0);
+ int raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, key, 0);
Dictionary value_dictionary;
String value_format = "<integer>$value</integer>";
value_dictionary["value"] = raw_value;
value = value_format.format(value_dictionary, "$_");
} break;
case PluginConfigIOS::PlistItemType::BOOLEAN:
- if (config_file->get_value(PluginConfigIOS::PLIST_SECTION, keys[i], false)) {
+ if (config_file->get_value(PluginConfigIOS::PLIST_SECTION, key, false)) {
value = "<true/>";
} else {
value = "<false/>";
}
break;
case PluginConfigIOS::PlistItemType::RAW: {
- String raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, keys[i], String());
+ String raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, key, String());
value = raw_value;
} break;
case PluginConfigIOS::PlistItemType::STRING_INPUT: {
- String raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, keys[i], String());
+ String raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, key, String());
value = raw_value;
} break;
default:
diff --git a/platform/linuxbsd/wayland/wayland_thread.cpp b/platform/linuxbsd/wayland/wayland_thread.cpp
index 1701aa650d..aabf1abdda 100644
--- a/platform/linuxbsd/wayland/wayland_thread.cpp
+++ b/platform/linuxbsd/wayland/wayland_thread.cpp
@@ -3427,7 +3427,7 @@ bool WaylandThread::window_get_idle_inhibition(DisplayServer::WindowID p_window_
WaylandThread::ScreenData WaylandThread::screen_get_data(int p_screen) const {
ERR_FAIL_INDEX_V(p_screen, registry.wl_outputs.size(), ScreenData());
- return wl_output_get_screen_state(registry.wl_outputs[p_screen])->data;
+ return wl_output_get_screen_state(registry.wl_outputs.get(p_screen))->data;
}
int WaylandThread::get_screen_count() const {
diff --git a/platform/web/os_web.cpp b/platform/web/os_web.cpp
index 6b6c9ddd63..ef8f90421b 100644
--- a/platform/web/os_web.cpp
+++ b/platform/web/os_web.cpp
@@ -276,8 +276,8 @@ OS_Web::OS_Web() {
if (AudioDriverWeb::is_available()) {
audio_drivers.push_back(memnew(AudioDriverWorklet));
}
- for (int i = 0; i < audio_drivers.size(); i++) {
- AudioDriverManager::add_driver(audio_drivers[i]);
+ for (AudioDriverWeb *audio_driver : audio_drivers) {
+ AudioDriverManager::add_driver(audio_driver);
}
idb_available = godot_js_os_fs_is_persistent();
diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp
index f101d85d58..90c3b8f9ef 100644
--- a/platform/windows/display_server_windows.cpp
+++ b/platform/windows/display_server_windows.cpp
@@ -2525,7 +2525,7 @@ Error DisplayServerWindows::dialog_show(String p_title, String p_description, Ve
Char16String title = p_title.utf16();
Char16String message = p_description.utf16();
- List<Char16String> buttons;
+ LocalVector<Char16String> buttons;
for (String s : p_buttons) {
buttons.push_back(s.utf16());
}
@@ -2533,7 +2533,7 @@ Error DisplayServerWindows::dialog_show(String p_title, String p_description, Ve
config.pszWindowTitle = (LPCWSTR)(title.get_data());
config.pszContent = (LPCWSTR)(message.get_data());
- const int button_count = MIN(buttons.size(), 8);
+ const int button_count = MIN((int)buttons.size(), 8);
config.cButtons = button_count;
// No dynamic stack array size :(
diff --git a/platform/windows/joypad_windows.cpp b/platform/windows/joypad_windows.cpp
index 60edb00dd2..a5f1629cf0 100644
--- a/platform/windows/joypad_windows.cpp
+++ b/platform/windows/joypad_windows.cpp
@@ -427,7 +427,7 @@ void JoypadWindows::process_joypads() {
const LONG axes[] = { DIJOFS_X, DIJOFS_Y, DIJOFS_Z, DIJOFS_RX, DIJOFS_RY, DIJOFS_RZ, (LONG)DIJOFS_SLIDER(0), (LONG)DIJOFS_SLIDER(1) };
int values[] = { js.lX, js.lY, js.lZ, js.lRx, js.lRy, js.lRz, js.rglSlider[0], js.rglSlider[1] };
- for (int j = 0; j < joy->joy_axis.size(); j++) {
+ for (uint32_t j = 0; j < joy->joy_axis.size(); j++) {
for (int k = 0; k < count; k++) {
if (joy->joy_axis[j] == axes[k]) {
input->joy_axis(joy->id, (JoyAxis)j, axis_correct(values[k]));
diff --git a/platform/windows/joypad_windows.h b/platform/windows/joypad_windows.h
index cfddbcc8dc..87c7af7657 100644
--- a/platform/windows/joypad_windows.h
+++ b/platform/windows/joypad_windows.h
@@ -77,7 +77,7 @@ private:
DWORD last_pad;
LPDIRECTINPUTDEVICE8 di_joy;
- List<LONG> joy_axis;
+ LocalVector<LONG> joy_axis;
GUID guid;
dinput_gamepad() {
diff --git a/scene/2d/animated_sprite_2d.cpp b/scene/2d/animated_sprite_2d.cpp
index 6eaf31d701..37e9d1f8c1 100644
--- a/scene/2d/animated_sprite_2d.cpp
+++ b/scene/2d/animated_sprite_2d.cpp
@@ -305,7 +305,7 @@ void AnimatedSprite2D::set_sprite_frames(const Ref<SpriteFrames> &p_frames) {
autoplay = String();
} else {
if (!frames->has_animation(animation)) {
- set_animation(al[0]);
+ set_animation(al.front()->get());
}
if (!frames->has_animation(autoplay)) {
autoplay = String();
diff --git a/scene/2d/tile_map_layer.cpp b/scene/2d/tile_map_layer.cpp
index ab3c48562c..fd1a638b58 100644
--- a/scene/2d/tile_map_layer.cpp
+++ b/scene/2d/tile_map_layer.cpp
@@ -212,8 +212,7 @@ void TileMapLayer::_rendering_update(bool p_force_cleanup) {
// Free all quadrants.
if (forced_cleanup || quandrant_shape_changed) {
for (const KeyValue<Vector2i, Ref<RenderingQuadrant>> &kv : rendering_quadrant_map) {
- for (int i = 0; i < kv.value->canvas_items.size(); i++) {
- const RID &ci = kv.value->canvas_items[i];
+ for (const RID &ci : kv.value->canvas_items) {
if (ci.is_valid()) {
rs->free(ci);
}
@@ -354,8 +353,7 @@ void TileMapLayer::_rendering_update(bool p_force_cleanup) {
} else {
// Free the quadrant.
- for (int i = 0; i < rendering_quadrant->canvas_items.size(); i++) {
- const RID &ci = rendering_quadrant->canvas_items[i];
+ for (const RID &ci : rendering_quadrant->canvas_items) {
if (ci.is_valid()) {
rs->free(ci);
}
diff --git a/scene/3d/skeleton_3d.cpp b/scene/3d/skeleton_3d.cpp
index 997e4c931c..2ddccb0253 100644
--- a/scene/3d/skeleton_3d.cpp
+++ b/scene/3d/skeleton_3d.cpp
@@ -852,7 +852,7 @@ void Skeleton3D::force_update_bone_children_transforms(int p_bone_idx) {
bones_to_process.push_back(p_bone_idx);
while (bones_to_process.size() > 0) {
- int current_bone_idx = bones_to_process[0];
+ int current_bone_idx = bones_to_process.front()->get();
bones_to_process.erase(current_bone_idx);
Bone &b = bonesptr[current_bone_idx];
diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp
index a7ac278bc1..7d2a821d16 100644
--- a/scene/3d/sprite_3d.cpp
+++ b/scene/3d/sprite_3d.cpp
@@ -1191,7 +1191,7 @@ void AnimatedSprite3D::set_sprite_frames(const Ref<SpriteFrames> &p_frames) {
autoplay = String();
} else {
if (!frames->has_animation(animation)) {
- set_animation(al[0]);
+ set_animation(al.front()->get());
}
if (!frames->has_animation(autoplay)) {
autoplay = String();
diff --git a/scene/animation/animation_node_state_machine.cpp b/scene/animation/animation_node_state_machine.cpp
index f5bef899da..87574a66ed 100644
--- a/scene/animation/animation_node_state_machine.cpp
+++ b/scene/animation/animation_node_state_machine.cpp
@@ -350,18 +350,18 @@ float AnimationNodeStateMachinePlayback::get_fading_pos() const {
void AnimationNodeStateMachinePlayback::_clear_path_children(AnimationTree *p_tree, AnimationNodeStateMachine *p_state_machine, bool p_test_only) {
List<AnimationNode::ChildNode> child_nodes;
p_state_machine->get_child_nodes(&child_nodes);
- for (int i = 0; i < child_nodes.size(); i++) {
- Ref<AnimationNodeStateMachine> anodesm = child_nodes[i].node;
+ for (const AnimationNode::ChildNode &child_node : child_nodes) {
+ Ref<AnimationNodeStateMachine> anodesm = child_node.node;
if (anodesm.is_valid() && anodesm->get_state_machine_type() == AnimationNodeStateMachine::STATE_MACHINE_TYPE_GROUPED) {
- Ref<AnimationNodeStateMachinePlayback> playback = p_tree->get(base_path + child_nodes[i].name + "/playback");
+ Ref<AnimationNodeStateMachinePlayback> playback = p_tree->get(base_path + child_node.name + "/playback");
ERR_FAIL_COND(!playback.is_valid());
- playback->_set_base_path(base_path + child_nodes[i].name + "/");
+ playback->_set_base_path(base_path + child_node.name + "/");
if (p_test_only) {
playback = playback->duplicate();
}
playback->path.clear();
playback->_clear_path_children(p_tree, anodesm.ptr(), p_test_only);
- if (current != child_nodes[i].name) {
+ if (current != child_node.name) {
playback->_start(anodesm.ptr()); // Can restart.
}
}
diff --git a/scene/animation/animation_tree.cpp b/scene/animation/animation_tree.cpp
index 4880a0f6ed..28a163768f 100644
--- a/scene/animation/animation_tree.cpp
+++ b/scene/animation/animation_tree.cpp
@@ -854,10 +854,10 @@ void AnimationTree::_setup_animation_player() {
}
List<StringName> list;
player->get_animation_library_list(&list);
- for (int i = 0; i < list.size(); i++) {
- Ref<AnimationLibrary> lib = player->get_animation_library(list[i]);
+ for (const StringName &E : list) {
+ Ref<AnimationLibrary> lib = player->get_animation_library(E);
if (lib.is_valid()) {
- add_animation_library(list[i], lib);
+ add_animation_library(E, lib);
}
}
}
diff --git a/scene/debugger/scene_debugger.cpp b/scene/debugger/scene_debugger.cpp
index 19e5693736..07c32eef13 100644
--- a/scene/debugger/scene_debugger.cpp
+++ b/scene/debugger/scene_debugger.cpp
@@ -421,9 +421,9 @@ void SceneDebuggerObject::_parse_script_properties(Script *p_script, ScriptInsta
void SceneDebuggerObject::serialize(Array &r_arr, int p_max_size) {
Array send_props;
- for (int i = 0; i < properties.size(); i++) {
- const PropertyInfo &pi = properties[i].first;
- Variant &var = properties[i].second;
+ for (SceneDebuggerObject::SceneDebuggerProperty &property : properties) {
+ const PropertyInfo &pi = property.first;
+ Variant &var = property.second;
Ref<Resource> res = var;
@@ -510,7 +510,7 @@ SceneDebuggerTree::SceneDebuggerTree(Node *p_root) {
const StringName &is_visible_sn = SNAME("is_visible");
const StringName &is_visible_in_tree_sn = SNAME("is_visible_in_tree");
while (stack.size()) {
- Node *n = stack[0];
+ Node *n = stack.front()->get();
stack.pop_front();
int count = n->get_child_count();
diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp
index 848a598ebb..aeaaac1efc 100644
--- a/scene/gui/color_picker.cpp
+++ b/scene/gui/color_picker.cpp
@@ -458,8 +458,8 @@ void ColorPicker::set_editor_settings(Object *p_editor_settings) {
}
}
- for (int i = 0; i < preset_cache.size(); i++) {
- presets.push_back(preset_cache[i]);
+ for (const Color &preset : preset_cache) {
+ presets.push_back(preset);
}
if (recent_preset_cache.is_empty()) {
@@ -469,8 +469,8 @@ void ColorPicker::set_editor_settings(Object *p_editor_settings) {
}
}
- for (int i = 0; i < recent_preset_cache.size(); i++) {
- recent_presets.push_back(recent_preset_cache[i]);
+ for (const Color &preset : recent_preset_cache) {
+ recent_presets.push_back(preset);
}
_update_presets();
@@ -660,8 +660,8 @@ void ColorPicker::_update_presets() {
for (int i = 1; i < preset_container->get_child_count(); i++) {
preset_container->get_child(i)->queue_free();
}
- for (int i = 0; i < preset_cache.size(); i++) {
- _add_preset_button(preset_size, preset_cache[i]);
+ for (const Color &preset : preset_cache) {
+ _add_preset_button(preset_size, preset);
}
_notification(NOTIFICATION_VISIBILITY_CHANGED);
}
@@ -677,13 +677,13 @@ void ColorPicker::_update_recent_presets() {
}
recent_presets.clear();
- for (int i = 0; i < recent_preset_cache.size(); i++) {
- recent_presets.push_back(recent_preset_cache[i]);
+ for (const Color &preset : recent_preset_cache) {
+ recent_presets.push_back(preset);
}
int preset_size = _get_preset_size();
- for (int i = 0; i < recent_presets.size(); i++) {
- _add_recent_preset_button(preset_size, recent_presets[i]);
+ for (const Color &preset : recent_presets) {
+ _add_recent_preset_button(preset_size, preset);
}
_notification(NOTIFICATION_VISIBILITY_CHANGED);
@@ -937,8 +937,9 @@ void ColorPicker::erase_recent_preset(const Color &p_color) {
PackedColorArray ColorPicker::get_presets() const {
PackedColorArray arr;
arr.resize(presets.size());
- for (int i = 0; i < presets.size(); i++) {
- arr.set(i, presets[i]);
+ int i = 0;
+ for (List<Color>::ConstIterator itr = presets.begin(); itr != presets.end(); ++itr, ++i) {
+ arr.set(i, *itr);
}
return arr;
}
@@ -946,8 +947,9 @@ PackedColorArray ColorPicker::get_presets() const {
PackedColorArray ColorPicker::get_recent_presets() const {
PackedColorArray arr;
arr.resize(recent_presets.size());
- for (int i = 0; i < recent_presets.size(); i++) {
- arr.set(i, recent_presets[i]);
+ int i = 0;
+ for (List<Color>::ConstIterator itr = recent_presets.begin(); itr != recent_presets.end(); ++itr, ++i) {
+ arr.set(i, *itr);
}
return arr;
}
diff --git a/scene/main/node.cpp b/scene/main/node.cpp
index 305b80ffe5..827273132c 100644
--- a/scene/main/node.cpp
+++ b/scene/main/node.cpp
@@ -3231,7 +3231,7 @@ void Node::print_orphan_nodes() {
ObjectDB::debug_objects(_print_orphan_nodes_routine);
for (const KeyValue<ObjectID, List<String>> &E : _print_orphan_nodes_map) {
- print_line(itos(E.key) + " - Stray Node: " + E.value[0] + " (Type: " + E.value[1] + ")");
+ print_line(itos(E.key) + " - Stray Node: " + E.value.get(0) + " (Type: " + E.value.get(1) + ")");
}
// Flush it after use.
diff --git a/scene/resources/2d/skeleton/skeleton_modification_2d_physicalbones.cpp b/scene/resources/2d/skeleton/skeleton_modification_2d_physicalbones.cpp
index aa8d7d0b3b..001000fa17 100644
--- a/scene/resources/2d/skeleton/skeleton_modification_2d_physicalbones.cpp
+++ b/scene/resources/2d/skeleton/skeleton_modification_2d_physicalbones.cpp
@@ -194,7 +194,7 @@ void SkeletonModification2DPhysicalBones::fetch_physical_bones() {
node_queue.push_back(stack->skeleton);
while (node_queue.size() > 0) {
- Node *node_to_process = node_queue[0];
+ Node *node_to_process = node_queue.front()->get();
node_queue.pop_front();
if (node_to_process != nullptr) {
diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp
index 4b51f6c471..a57af6886d 100644
--- a/scene/resources/visual_shader.cpp
+++ b/scene/resources/visual_shader.cpp
@@ -585,12 +585,12 @@ int VisualShaderNodeCustom::get_input_port_count() const {
VisualShaderNodeCustom::PortType VisualShaderNodeCustom::get_input_port_type(int p_port) const {
ERR_FAIL_INDEX_V(p_port, input_ports.size(), PORT_TYPE_SCALAR);
- return (PortType)input_ports[p_port].type;
+ return (PortType)input_ports.get(p_port).type;
}
String VisualShaderNodeCustom::get_input_port_name(int p_port) const {
ERR_FAIL_INDEX_V(p_port, input_ports.size(), "");
- return input_ports[p_port].name;
+ return input_ports.get(p_port).name;
}
int VisualShaderNodeCustom::get_default_input_port(PortType p_type) const {
@@ -605,12 +605,12 @@ int VisualShaderNodeCustom::get_output_port_count() const {
VisualShaderNodeCustom::PortType VisualShaderNodeCustom::get_output_port_type(int p_port) const {
ERR_FAIL_INDEX_V(p_port, output_ports.size(), PORT_TYPE_SCALAR);
- return (PortType)output_ports[p_port].type;
+ return (PortType)output_ports.get(p_port).type;
}
String VisualShaderNodeCustom::get_output_port_name(int p_port) const {
ERR_FAIL_INDEX_V(p_port, output_ports.size(), "");
- return output_ports[p_port].name;
+ return output_ports.get(p_port).name;
}
String VisualShaderNodeCustom::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const {
@@ -865,7 +865,7 @@ int VisualShader::get_varyings_count() const {
const VisualShader::Varying *VisualShader::get_varying_by_index(int p_idx) const {
ERR_FAIL_INDEX_V(p_idx, varyings_list.size(), nullptr);
- return &varyings_list[p_idx];
+ return &varyings_list.get(p_idx);
}
void VisualShader::set_varying_mode(const String &p_name, VaryingMode p_mode) {
@@ -2478,10 +2478,11 @@ void VisualShader::_update_shader() const {
}
}
- for (int i = 0; i < parameters.size(); i++) {
- VisualShaderNodeParameter *parameter = parameters[i];
+ int idx = 0;
+ for (List<VisualShaderNodeParameter *>::Iterator itr = parameters.begin(); itr != parameters.end(); ++itr, ++idx) {
+ VisualShaderNodeParameter *parameter = *itr;
if (used_parameter_names.has(parameter->get_parameter_name())) {
- global_code += parameter->generate_global(get_mode(), Type(i), -1);
+ global_code += parameter->generate_global(get_mode(), Type(idx), -1);
const_cast<VisualShaderNodeParameter *>(parameter)->set_global_code_generated(true);
} else {
const_cast<VisualShaderNodeParameter *>(parameter)->set_global_code_generated(false);
@@ -2791,8 +2792,9 @@ void VisualShader::_update_shader() const {
const_cast<VisualShader *>(this)->set_code(final_code);
for (int i = 0; i < default_tex_params.size(); i++) {
- for (int j = 0; j < default_tex_params[i].params.size(); j++) {
- const_cast<VisualShader *>(this)->set_default_texture_parameter(default_tex_params[i].name, default_tex_params[i].params[j], j);
+ int j = 0;
+ for (List<Ref<Texture2D>>::ConstIterator itr = default_tex_params[i].params.begin(); itr != default_tex_params[i].params.end(); ++itr, ++j) {
+ const_cast<VisualShader *>(this)->set_default_texture_parameter(default_tex_params[i].name, *itr, j);
}
}
if (previous_code != final_code) {
@@ -3684,7 +3686,7 @@ String VisualShaderNodeParameterRef::get_parameter_name_by_index(int p_idx) cons
ERR_FAIL_COND_V(!shader_rid.is_valid(), String());
if (p_idx >= 0 && p_idx < parameters[shader_rid].size()) {
- return parameters[shader_rid][p_idx].name;
+ return parameters[shader_rid].get(p_idx).name;
}
return "";
}
@@ -3692,9 +3694,9 @@ String VisualShaderNodeParameterRef::get_parameter_name_by_index(int p_idx) cons
VisualShaderNodeParameterRef::ParameterType VisualShaderNodeParameterRef::get_parameter_type_by_name(const String &p_name) const {
ERR_FAIL_COND_V(!shader_rid.is_valid(), PARAMETER_TYPE_FLOAT);
- for (int i = 0; i < parameters[shader_rid].size(); i++) {
- if (parameters[shader_rid][i].name == p_name) {
- return parameters[shader_rid][i].type;
+ for (const VisualShaderNodeParameterRef::Parameter &parameter : parameters[shader_rid]) {
+ if (parameter.name == p_name) {
+ return parameter.type;
}
}
return PARAMETER_TYPE_FLOAT;
@@ -3704,7 +3706,7 @@ VisualShaderNodeParameterRef::ParameterType VisualShaderNodeParameterRef::get_pa
ERR_FAIL_COND_V(!shader_rid.is_valid(), PARAMETER_TYPE_FLOAT);
if (p_idx >= 0 && p_idx < parameters[shader_rid].size()) {
- return parameters[shader_rid][p_idx].type;
+ return parameters[shader_rid].get(p_idx).type;
}
return PARAMETER_TYPE_FLOAT;
}
@@ -3713,7 +3715,7 @@ VisualShaderNodeParameterRef::PortType VisualShaderNodeParameterRef::get_port_ty
ERR_FAIL_COND_V(!shader_rid.is_valid(), PORT_TYPE_SCALAR);
if (p_idx >= 0 && p_idx < parameters[shader_rid].size()) {
- switch (parameters[shader_rid][p_idx].type) {
+ switch (parameters[shader_rid].get(p_idx).type) {
case PARAMETER_TYPE_FLOAT:
return PORT_TYPE_SCALAR;
case PARAMETER_TYPE_INT:
@@ -4984,15 +4986,15 @@ int VisualShaderNodeVarying::get_varyings_count() const {
String VisualShaderNodeVarying::get_varying_name_by_index(int p_idx) const {
if (p_idx >= 0 && p_idx < varyings.size()) {
- return varyings[p_idx].name;
+ return varyings.get(p_idx).name;
}
return "";
}
VisualShader::VaryingType VisualShaderNodeVarying::get_varying_type_by_name(const String &p_name) const {
- for (int i = 0; i < varyings.size(); i++) {
- if (varyings[i].name == p_name) {
- return varyings[i].type;
+ for (const VisualShaderNodeVarying::Varying &varying : varyings) {
+ if (varying.name == p_name) {
+ return varying.type;
}
}
return VisualShader::VARYING_TYPE_FLOAT;
@@ -5000,15 +5002,15 @@ VisualShader::VaryingType VisualShaderNodeVarying::get_varying_type_by_name(cons
VisualShader::VaryingType VisualShaderNodeVarying::get_varying_type_by_index(int p_idx) const {
if (p_idx >= 0 && p_idx < varyings.size()) {
- return varyings[p_idx].type;
+ return varyings.get(p_idx).type;
}
return VisualShader::VARYING_TYPE_FLOAT;
}
VisualShader::VaryingMode VisualShaderNodeVarying::get_varying_mode_by_name(const String &p_name) const {
- for (int i = 0; i < varyings.size(); i++) {
- if (varyings[i].name == p_name) {
- return varyings[i].mode;
+ for (const VisualShaderNodeVarying::Varying &varying : varyings) {
+ if (varying.name == p_name) {
+ return varying.mode;
}
}
return VisualShader::VARYING_MODE_VERTEX_TO_FRAG_LIGHT;
@@ -5016,14 +5018,14 @@ VisualShader::VaryingMode VisualShaderNodeVarying::get_varying_mode_by_name(cons
VisualShader::VaryingMode VisualShaderNodeVarying::get_varying_mode_by_index(int p_idx) const {
if (p_idx >= 0 && p_idx < varyings.size()) {
- return varyings[p_idx].mode;
+ return varyings.get(p_idx).mode;
}
return VisualShader::VARYING_MODE_VERTEX_TO_FRAG_LIGHT;
}
VisualShaderNodeVarying::PortType VisualShaderNodeVarying::get_port_type_by_index(int p_idx) const {
if (p_idx >= 0 && p_idx < varyings.size()) {
- return get_port_type(varyings[p_idx].type, 0);
+ return get_port_type(varyings.get(p_idx).type, 0);
}
return PORT_TYPE_SCALAR;
}
diff --git a/scene/resources/visual_shader_particle_nodes.cpp b/scene/resources/visual_shader_particle_nodes.cpp
index 5ff1f79a22..cc88876232 100644
--- a/scene/resources/visual_shader_particle_nodes.cpp
+++ b/scene/resources/visual_shader_particle_nodes.cpp
@@ -1641,11 +1641,11 @@ String VisualShaderNodeParticleEmit::generate_code(Shader::Mode p_mode, VisualSh
String flags_str;
- for (int i = 0; i < flags_arr.size(); i++) {
- if (i > 0) {
+ for (List<String>::ConstIterator itr = flags_arr.begin(); itr != flags_arr.end(); ++itr) {
+ if (itr != flags_arr.begin()) {
flags_str += "|";
}
- flags_str += flags_arr[i];
+ flags_str += *itr;
}
if (flags_str.is_empty()) {
diff --git a/servers/debugger/servers_debugger.cpp b/servers/debugger/servers_debugger.cpp
index 06be73acc5..eded0ecfe5 100644
--- a/servers/debugger/servers_debugger.cpp
+++ b/servers/debugger/servers_debugger.cpp
@@ -97,12 +97,10 @@ Array ServersDebugger::ServersProfilerFrame::serialize() {
arr.push_back(script_time);
arr.push_back(servers.size());
- for (int i = 0; i < servers.size(); i++) {
- ServerInfo &s = servers[i];
+ for (const ServerInfo &s : servers) {
arr.push_back(s.name);
arr.push_back(s.functions.size() * 2);
- for (int j = 0; j < s.functions.size(); j++) {
- ServerFunctionInfo &f = s.functions[j];
+ for (const ServerFunctionInfo &f : s.functions) {
arr.push_back(f.name);
arr.push_back(f.time);
}
diff --git a/servers/rendering/renderer_rd/shader_rd.cpp b/servers/rendering/renderer_rd/shader_rd.cpp
index 789c6c2845..1c1b8366e5 100644
--- a/servers/rendering/renderer_rd/shader_rd.cpp
+++ b/servers/rendering/renderer_rd/shader_rd.cpp
@@ -687,8 +687,8 @@ void ShaderRD::enable_group(int p_group) {
// Compile all versions again to include the new group.
List<RID> all_versions;
version_owner.get_owned_list(&all_versions);
- for (int i = 0; i < all_versions.size(); i++) {
- Version *version = version_owner.get_or_null(all_versions[i]);
+ for (const RID &E : all_versions) {
+ Version *version = version_owner.get_or_null(E);
_compile_version(version, p_group);
}
}
diff --git a/servers/rendering/renderer_viewport.cpp b/servers/rendering/renderer_viewport.cpp
index 075df10e05..e739ffa535 100644
--- a/servers/rendering/renderer_viewport.cpp
+++ b/servers/rendering/renderer_viewport.cpp
@@ -85,7 +85,7 @@ Vector<RendererViewport::Viewport *> RendererViewport::_sort_active_viewports()
}
while (!nodes.is_empty()) {
- const Viewport *node = nodes[0];
+ const Viewport *node = nodes.front()->get();
nodes.pop_front();
for (int i = active_viewports.size() - 1; i >= 0; --i) {
diff --git a/servers/rendering/shader_compiler.cpp b/servers/rendering/shader_compiler.cpp
index 2b49d42f9e..87f608bfe6 100644
--- a/servers/rendering/shader_compiler.cpp
+++ b/servers/rendering/shader_compiler.cpp
@@ -479,8 +479,7 @@ String ShaderCompiler::_dump_node_code(const SL::Node *p_node, int p_level, Gene
struct_code += _mkid(pnode->vstructs[i].name);
struct_code += " ";
struct_code += "{\n";
- for (int j = 0; j < st->members.size(); j++) {
- SL::MemberNode *m = st->members[j];
+ for (SL::MemberNode *m : st->members) {
if (m->datatype == SL::TYPE_STRUCT) {
struct_code += _mkid(m->struct_name);
} else {
@@ -807,10 +806,11 @@ String ShaderCompiler::_dump_node_code(const SL::Node *p_node, int p_level, Gene
code += _mktab(p_level - 1) + "{\n";
}
- for (int i = 0; i < bnode->statements.size(); i++) {
- String scode = _dump_node_code(bnode->statements[i], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
+ int i = 0;
+ for (List<ShaderLanguage::Node *>::ConstIterator itr = bnode->statements.begin(); itr != bnode->statements.end(); ++itr, ++i) {
+ String scode = _dump_node_code(*itr, p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
- if (bnode->statements[i]->type == SL::Node::NODE_TYPE_CONTROL_FLOW || bnode->single_statement) {
+ if ((*itr)->type == SL::Node::NODE_TYPE_CONTROL_FLOW || bnode->single_statement) {
code += scode; //use directly
if (bnode->use_comma_between_statements && i + 1 < bnode->statements.size()) {
code += ",";
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp
index 65f147a8dc..5a02980929 100644
--- a/servers/rendering/shader_language.cpp
+++ b/servers/rendering/shader_language.cpp
@@ -5217,11 +5217,11 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
funcname->name = name;
func->arguments.push_back(funcname);
- for (int i = 0; i < pstruct->members.size(); i++) {
+ for (List<ShaderLanguage::MemberNode *>::Element *E = pstruct->members.front(); E; E = E->next()) {
Node *nexpr;
- if (pstruct->members[i]->array_size != 0) {
- nexpr = _parse_array_constructor(p_block, p_function_info, pstruct->members[i]->get_datatype(), pstruct->members[i]->struct_name, pstruct->members[i]->array_size);
+ if (E->get()->array_size != 0) {
+ nexpr = _parse_array_constructor(p_block, p_function_info, E->get()->get_datatype(), E->get()->struct_name, E->get()->array_size);
if (!nexpr) {
return nullptr;
}
@@ -5230,12 +5230,12 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
if (!nexpr) {
return nullptr;
}
- if (!_compare_datatypes_in_nodes(pstruct->members[i], nexpr)) {
+ if (!_compare_datatypes_in_nodes(E->get(), nexpr)) {
return nullptr;
}
}
- if (i + 1 < pstruct->members.size()) {
+ if (E->next()) {
tk = _get_token();
if (tk.type != TK_COMMA) {
_set_expected_error(",");
@@ -7485,8 +7485,8 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const FunctionInfo &p_fun
continue;
} else {
HashSet<int> constants;
- for (int i = 0; i < switch_block->statements.size(); i++) { // Checks for duplicates.
- ControlFlowNode *flow = static_cast<ControlFlowNode *>(switch_block->statements[i]);
+ for (ShaderLanguage::Node *statement : switch_block->statements) { // Checks for duplicates.
+ ControlFlowNode *flow = static_cast<ControlFlowNode *>(statement);
if (flow) {
if (flow->flow_op == FLOW_OP_CASE) {
if (flow->expressions[0]->type == Node::NODE_TYPE_CONSTANT) {
@@ -9862,9 +9862,9 @@ Error ShaderLanguage::_find_last_flow_op_in_op(ControlFlowNode *p_flow, FlowOper
Error ShaderLanguage::_find_last_flow_op_in_block(BlockNode *p_block, FlowOperation p_op) {
bool found = false;
- for (int i = p_block->statements.size() - 1; i >= 0; i--) {
- if (p_block->statements[i]->type == Node::NODE_TYPE_CONTROL_FLOW) {
- ControlFlowNode *flow = static_cast<ControlFlowNode *>(p_block->statements[i]);
+ for (List<ShaderLanguage::Node *>::Element *E = p_block->statements.back(); E; E = E->prev()) {
+ if (E->get()->type == Node::NODE_TYPE_CONTROL_FLOW) {
+ ControlFlowNode *flow = static_cast<ControlFlowNode *>(E->get());
if (flow->flow_op == p_op) {
found = true;
break;
@@ -9874,8 +9874,8 @@ Error ShaderLanguage::_find_last_flow_op_in_block(BlockNode *p_block, FlowOperat
break;
}
}
- } else if (p_block->statements[i]->type == Node::NODE_TYPE_BLOCK) {
- BlockNode *block = static_cast<BlockNode *>(p_block->statements[i]);
+ } else if (E->get()->type == Node::NODE_TYPE_BLOCK) {
+ BlockNode *block = static_cast<BlockNode *>(E->get());
if (_find_last_flow_op_in_block(block, p_op) == OK) {
found = true;
break;
@@ -10167,8 +10167,8 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
case COMPLETION_STRUCT: {
if (shader->structs.has(completion_struct)) {
StructNode *node = shader->structs[completion_struct].shader_struct;
- for (int i = 0; i < node->members.size(); i++) {
- ScriptLanguage::CodeCompletionOption option(node->members[i]->name, ScriptLanguage::CODE_COMPLETION_KIND_MEMBER);
+ for (ShaderLanguage::MemberNode *member : node->members) {
+ ScriptLanguage::CodeCompletionOption option(member->name, ScriptLanguage::CODE_COMPLETION_KIND_MEMBER);
r_options->push_back(option);
}
}
diff --git a/servers/rendering/shader_types.cpp b/servers/rendering/shader_types.cpp
index b2fa0ea9d2..ab9cf666ec 100644
--- a/servers/rendering/shader_types.cpp
+++ b/servers/rendering/shader_types.cpp
@@ -496,7 +496,7 @@ ShaderTypes::ShaderTypes() {
shader_types_list.push_back("sky");
shader_types_list.push_back("fog");
- for (int i = 0; i < shader_types_list.size(); i++) {
- shader_types.insert(shader_types_list[i]);
+ for (const String &type : shader_types_list) {
+ shader_types.insert(type);
}
}
diff --git a/tests/core/object/test_class_db.h b/tests/core/object/test_class_db.h
index 5623c1d495..fb62d0f056 100644
--- a/tests/core/object/test_class_db.h
+++ b/tests/core/object/test_class_db.h
@@ -550,8 +550,6 @@ void add_exposed_classes(Context &r_context) {
for (const MethodInfo &E : method_list) {
const MethodInfo &method_info = E;
- int argc = method_info.arguments.size();
-
if (method_info.name.is_empty()) {
continue;
}
@@ -613,8 +611,9 @@ void add_exposed_classes(Context &r_context) {
method.return_type.name = Variant::get_type_name(return_info.type);
}
- for (int i = 0; i < argc; i++) {
- PropertyInfo arg_info = method_info.arguments[i];
+ int i = 0;
+ for (List<PropertyInfo>::ConstIterator itr = method_info.arguments.begin(); itr != method_info.arguments.end(); ++itr, ++i) {
+ const PropertyInfo &arg_info = *itr;
String orig_arg_name = arg_info.name;
@@ -686,10 +685,9 @@ void add_exposed_classes(Context &r_context) {
TEST_FAIL_COND(!String(signal.name).is_valid_identifier(),
"Signal name is not a valid identifier: '", exposed_class.name, ".", signal.name, "'.");
- int argc = method_info.arguments.size();
-
- for (int i = 0; i < argc; i++) {
- PropertyInfo arg_info = method_info.arguments[i];
+ int i = 0;
+ for (List<PropertyInfo>::ConstIterator itr = method_info.arguments.begin(); itr != method_info.arguments.end(); ++itr, ++i) {
+ const PropertyInfo &arg_info = *itr;
String orig_arg_name = arg_info.name;
diff --git a/tests/core/object/test_object.h b/tests/core/object/test_object.h
index 3a3013a102..d714d71416 100644
--- a/tests/core/object/test_object.h
+++ b/tests/core/object/test_object.h
@@ -142,7 +142,7 @@ TEST_CASE("[Object] Core getters") {
inheritance_list.size() == 1,
"The inheritance list should consist of Object only");
CHECK_MESSAGE(
- inheritance_list[0] == "Object",
+ inheritance_list.front()->get() == "Object",
"The inheritance list should consist of Object only");
}
diff --git a/tests/core/os/test_os.h b/tests/core/os/test_os.h
index 63f8b18238..6ee0ff82e7 100644
--- a/tests/core/os/test_os.h
+++ b/tests/core/os/test_os.h
@@ -79,8 +79,8 @@ TEST_CASE("[OS] Non-UTF-8 environment variables") {
TEST_CASE("[OS] Command line arguments") {
List<String> arguments = OS::get_singleton()->get_cmdline_args();
bool found = false;
- for (int i = 0; i < arguments.size(); i++) {
- if (arguments[i] == "--test") {
+ for (const String &arg : arguments) {
+ if (arg == "--test") {
found = true;
break;
}
diff --git a/tests/core/variant/test_dictionary.h b/tests/core/variant/test_dictionary.h
index 5bc56075da..aba20972d9 100644
--- a/tests/core/variant/test_dictionary.h
+++ b/tests/core/variant/test_dictionary.h
@@ -105,7 +105,7 @@ TEST_CASE("[Dictionary] get_key_lists()") {
map[1] = 3;
map.get_key_list(ptr);
CHECK(keys.size() == 1);
- CHECK(int(keys[0]) == 1);
+ CHECK(int(keys.front()->get()) == 1);
map[2] = 4;
map.get_key_list(ptr);
CHECK(keys.size() == 3);
diff --git a/tests/scene/test_sprite_frames.h b/tests/scene/test_sprite_frames.h
index bf127cd42c..55854b90e4 100644
--- a/tests/scene/test_sprite_frames.h
+++ b/tests/scene/test_sprite_frames.h
@@ -74,9 +74,10 @@ TEST_CASE("[SpriteFrames] Animation addition, list getter, renaming, removal, an
sname_list.size() == test_names.size(),
"StringName List getter returned list of expected size");
- for (int i = 0; i < test_names.size(); i++) {
+ int idx = 0;
+ for (List<StringName>::ConstIterator itr = sname_list.begin(); itr != sname_list.end(); ++itr, ++idx) {
CHECK_MESSAGE(
- sname_list[i] == StringName(test_names[i]),
+ *itr == StringName(test_names[idx]),
"StringName List getter returned expected values");
}
diff --git a/tests/test_main.cpp b/tests/test_main.cpp
index 56bd8739c6..038b045c68 100644
--- a/tests/test_main.cpp
+++ b/tests/test_main.cpp
@@ -187,7 +187,7 @@ int test_main(int argc, char *argv[]) {
}
// Doctest runner.
doctest::Context test_context;
- List<String> test_args;
+ LocalVector<String> test_args;
// Clean arguments of "--test" from the args.
for (int x = 0; x < argc; x++) {
@@ -200,7 +200,7 @@ int test_main(int argc, char *argv[]) {
if (test_args.size() > 0) {
// Convert Godot command line arguments back to standard arguments.
char **doctest_args = new char *[test_args.size()];
- for (int x = 0; x < test_args.size(); x++) {
+ for (uint32_t x = 0; x < test_args.size(); x++) {
// Operation to convert Godot string to non wchar string.
CharString cs = test_args[x].utf8();
const char *str = cs.get_data();
@@ -212,7 +212,7 @@ int test_main(int argc, char *argv[]) {
test_context.applyCommandLine(test_args.size(), doctest_args);
- for (int x = 0; x < test_args.size(); x++) {
+ for (uint32_t x = 0; x < test_args.size(); x++) {
delete[] doctest_args[x];
}
delete[] doctest_args;