mirror of https://github.com/godotengine/godot
Use `(r)find_char` instead of `(r)find` for single characters
This commit is contained in:
parent
5efd124ca1
commit
68f638cf02
|
|
@ -194,7 +194,7 @@ String ProjectSettings::localize_path(const String &p_path) const {
|
||||||
|
|
||||||
return cwd.replace_first(res_path, "res://");
|
return cwd.replace_first(res_path, "res://");
|
||||||
} else {
|
} else {
|
||||||
int sep = path.rfind("/");
|
int sep = path.rfind_char('/');
|
||||||
if (sep == -1) {
|
if (sep == -1) {
|
||||||
return "res://" + path;
|
return "res://" + path;
|
||||||
}
|
}
|
||||||
|
|
@ -300,7 +300,7 @@ bool ProjectSettings::_set(const StringName &p_name, const Variant &p_value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // Feature overrides.
|
{ // Feature overrides.
|
||||||
int dot = p_name.operator String().find(".");
|
int dot = p_name.operator String().find_char('.');
|
||||||
if (dot != -1) {
|
if (dot != -1) {
|
||||||
Vector<String> s = p_name.operator String().split(".");
|
Vector<String> s = p_name.operator String().split(".");
|
||||||
|
|
||||||
|
|
@ -435,7 +435,7 @@ void ProjectSettings::_get_property_list(List<PropertyInfo> *p_list) const {
|
||||||
|
|
||||||
for (const _VCSort &E : vclist) {
|
for (const _VCSort &E : vclist) {
|
||||||
String prop_info_name = E.name;
|
String prop_info_name = E.name;
|
||||||
int dot = prop_info_name.find(".");
|
int dot = prop_info_name.find_char('.');
|
||||||
if (dot != -1 && !custom_prop_info.has(prop_info_name)) {
|
if (dot != -1 && !custom_prop_info.has(prop_info_name)) {
|
||||||
prop_info_name = prop_info_name.substr(0, dot);
|
prop_info_name = prop_info_name.substr(0, dot);
|
||||||
}
|
}
|
||||||
|
|
@ -1092,7 +1092,7 @@ Error ProjectSettings::save_custom(const String &p_path, const CustomMap &p_cust
|
||||||
String category = E.name;
|
String category = E.name;
|
||||||
String name = E.name;
|
String name = E.name;
|
||||||
|
|
||||||
int div = category.find("/");
|
int div = category.find_char('/');
|
||||||
|
|
||||||
if (div < 0) {
|
if (div < 0) {
|
||||||
category = "";
|
category = "";
|
||||||
|
|
|
||||||
|
|
@ -163,7 +163,7 @@ void EngineDebugger::initialize(const String &p_uri, bool p_skip_breakpoints, co
|
||||||
|
|
||||||
for (int i = 0; i < p_breakpoints.size(); i++) {
|
for (int i = 0; i < p_breakpoints.size(); i++) {
|
||||||
const String &bp = p_breakpoints[i];
|
const String &bp = p_breakpoints[i];
|
||||||
int sp = bp.rfind(":");
|
int sp = bp.rfind_char(':');
|
||||||
ERR_CONTINUE_MSG(sp == -1, vformat("Invalid breakpoint: '%s', expected file:line format.", bp));
|
ERR_CONTINUE_MSG(sp == -1, vformat("Invalid breakpoint: '%s', expected file:line format.", bp));
|
||||||
|
|
||||||
singleton_script_debugger->insert_breakpoint(bp.substr(sp + 1, bp.length()).to_int(), bp.substr(0, sp));
|
singleton_script_debugger->insert_breakpoint(bp.substr(sp + 1, bp.length()).to_int(), bp.substr(0, sp));
|
||||||
|
|
|
||||||
|
|
@ -171,7 +171,7 @@ void LocalDebugger::debug(bool p_can_continue, bool p_is_error_breakpoint) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
String key_value = line.get_slicec(' ', 1);
|
String key_value = line.get_slicec(' ', 1);
|
||||||
int value_pos = key_value.find("=");
|
int value_pos = key_value.find_char('=');
|
||||||
|
|
||||||
if (value_pos < 0) {
|
if (value_pos < 0) {
|
||||||
print_line("Error: Invalid set format. Use: set key=value");
|
print_line("Error: Invalid set format. Use: set key=value");
|
||||||
|
|
@ -344,7 +344,7 @@ Pair<String, int> LocalDebugger::to_breakpoint(const String &p_line) {
|
||||||
String breakpoint_part = p_line.get_slicec(' ', 1);
|
String breakpoint_part = p_line.get_slicec(' ', 1);
|
||||||
Pair<String, int> breakpoint;
|
Pair<String, int> breakpoint;
|
||||||
|
|
||||||
int last_colon = breakpoint_part.rfind(":");
|
int last_colon = breakpoint_part.rfind_char(':');
|
||||||
if (last_colon < 0) {
|
if (last_colon < 0) {
|
||||||
print_line("Error: Invalid breakpoint format. Expected [source:line]");
|
print_line("Error: Invalid breakpoint format. Expected [source:line]");
|
||||||
return breakpoint;
|
return breakpoint;
|
||||||
|
|
|
||||||
|
|
@ -338,7 +338,7 @@ void RemoteDebugger::_send_stack_vars(List<String> &p_names, List<Variant> &p_va
|
||||||
}
|
}
|
||||||
|
|
||||||
Error RemoteDebugger::_try_capture(const String &p_msg, const Array &p_data, bool &r_captured) {
|
Error RemoteDebugger::_try_capture(const String &p_msg, const Array &p_data, bool &r_captured) {
|
||||||
const int idx = p_msg.find(":");
|
const int idx = p_msg.find_char(':');
|
||||||
r_captured = false;
|
r_captured = false;
|
||||||
if (idx < 0) { // No prefix, unknown message.
|
if (idx < 0) { // No prefix, unknown message.
|
||||||
return OK;
|
return OK;
|
||||||
|
|
@ -610,7 +610,7 @@ void RemoteDebugger::poll_events(bool p_is_idle) {
|
||||||
ERR_CONTINUE(arr[1].get_type() != Variant::ARRAY);
|
ERR_CONTINUE(arr[1].get_type() != Variant::ARRAY);
|
||||||
|
|
||||||
const String cmd = arr[0];
|
const String cmd = arr[0];
|
||||||
const int idx = cmd.find(":");
|
const int idx = cmd.find_char(':');
|
||||||
bool parsed = false;
|
bool parsed = false;
|
||||||
if (idx < 0) { // Not prefix, use scripts capture.
|
if (idx < 0) { // Not prefix, use scripts capture.
|
||||||
capture_parse("core", cmd, arr[1], parsed);
|
capture_parse("core", cmd, arr[1], parsed);
|
||||||
|
|
|
||||||
|
|
@ -224,7 +224,7 @@ RemoteDebuggerPeer *RemoteDebuggerPeerTCP::create(const String &p_uri) {
|
||||||
uint16_t debug_port = 6007;
|
uint16_t debug_port = 6007;
|
||||||
|
|
||||||
if (debug_host.contains(":")) {
|
if (debug_host.contains(":")) {
|
||||||
int sep_pos = debug_host.rfind(":");
|
int sep_pos = debug_host.rfind_char(':');
|
||||||
debug_port = debug_host.substr(sep_pos + 1).to_int();
|
debug_port = debug_host.substr(sep_pos + 1).to_int();
|
||||||
debug_host = debug_host.substr(0, sep_pos);
|
debug_host = debug_host.substr(0, sep_pos);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -236,7 +236,7 @@ void Input::get_argument_options(const StringName &p_function, int p_idx, List<S
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
String name = pi.name.substr(pi.name.find("/") + 1, pi.name.length());
|
String name = pi.name.substr(pi.name.find_char('/') + 1, pi.name.length());
|
||||||
r_options->push_back(name.quote());
|
r_options->push_back(name.quote());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,7 @@ void InputMap::get_argument_options(const StringName &p_function, int p_idx, Lis
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
String name = pi.name.substr(pi.name.find("/") + 1, pi.name.length());
|
String name = pi.name.substr(pi.name.find_char('/') + 1, pi.name.length());
|
||||||
r_options->push_back(name.quote());
|
r_options->push_back(name.quote());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -302,7 +302,7 @@ void InputMap::load_from_project_settings() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
String name = pi.name.substr(pi.name.find("/") + 1, pi.name.length());
|
String name = pi.name.substr(pi.name.find_char('/') + 1, pi.name.length());
|
||||||
|
|
||||||
Dictionary action = GLOBAL_GET(pi.name);
|
Dictionary action = GLOBAL_GET(pi.name);
|
||||||
float deadzone = action.has("deadzone") ? (float)action["deadzone"] : DEFAULT_DEADZONE;
|
float deadzone = action.has("deadzone") ? (float)action["deadzone"] : DEFAULT_DEADZONE;
|
||||||
|
|
|
||||||
|
|
@ -155,9 +155,9 @@ Error DirAccess::make_dir_recursive(const String &p_dir) {
|
||||||
} else if (full_dir.begins_with("user://")) {
|
} else if (full_dir.begins_with("user://")) {
|
||||||
base = "user://";
|
base = "user://";
|
||||||
} else if (full_dir.is_network_share_path()) {
|
} else if (full_dir.is_network_share_path()) {
|
||||||
int pos = full_dir.find("/", 2);
|
int pos = full_dir.find_char('/', 2);
|
||||||
ERR_FAIL_COND_V(pos < 0, ERR_INVALID_PARAMETER);
|
ERR_FAIL_COND_V(pos < 0, ERR_INVALID_PARAMETER);
|
||||||
pos = full_dir.find("/", pos + 1);
|
pos = full_dir.find_char('/', pos + 1);
|
||||||
ERR_FAIL_COND_V(pos < 0, ERR_INVALID_PARAMETER);
|
ERR_FAIL_COND_V(pos < 0, ERR_INVALID_PARAMETER);
|
||||||
base = full_dir.substr(0, pos + 1);
|
base = full_dir.substr(0, pos + 1);
|
||||||
} else if (full_dir.begins_with("/")) {
|
} else if (full_dir.begins_with("/")) {
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ Error HTTPClient::verify_headers(const Vector<String> &p_headers) {
|
||||||
for (int i = 0; i < p_headers.size(); i++) {
|
for (int i = 0; i < p_headers.size(); i++) {
|
||||||
String sanitized = p_headers[i].strip_edges();
|
String sanitized = p_headers[i].strip_edges();
|
||||||
ERR_FAIL_COND_V_MSG(sanitized.is_empty(), ERR_INVALID_PARAMETER, vformat("Invalid HTTP header at index %d: empty.", i));
|
ERR_FAIL_COND_V_MSG(sanitized.is_empty(), ERR_INVALID_PARAMETER, vformat("Invalid HTTP header at index %d: empty.", i));
|
||||||
ERR_FAIL_COND_V_MSG(sanitized.find(":") < 1, ERR_INVALID_PARAMETER,
|
ERR_FAIL_COND_V_MSG(sanitized.find_char(':') < 1, ERR_INVALID_PARAMETER,
|
||||||
vformat("Invalid HTTP header at index %d: String must contain header-value pair, delimited by ':', but was: '%s'.", i, p_headers[i]));
|
vformat("Invalid HTTP header at index %d: String must contain header-value pair, delimited by ':', but was: '%s'.", i, p_headers[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -113,7 +113,7 @@ Dictionary HTTPClient::_get_response_headers_as_dictionary() {
|
||||||
get_response_headers(&rh);
|
get_response_headers(&rh);
|
||||||
Dictionary ret;
|
Dictionary ret;
|
||||||
for (const String &s : rh) {
|
for (const String &s : rh) {
|
||||||
int sp = s.find(":");
|
int sp = s.find_char(':');
|
||||||
if (sp == -1) {
|
if (sp == -1) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -508,11 +508,11 @@ Error HTTPClientTCP::poll() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (s.begins_with("content-length:")) {
|
if (s.begins_with("content-length:")) {
|
||||||
body_size = s.substr(s.find(":") + 1, s.length()).strip_edges().to_int();
|
body_size = s.substr(s.find_char(':') + 1, s.length()).strip_edges().to_int();
|
||||||
body_left = body_size;
|
body_left = body_size;
|
||||||
|
|
||||||
} else if (s.begins_with("transfer-encoding:")) {
|
} else if (s.begins_with("transfer-encoding:")) {
|
||||||
String encoding = header.substr(header.find(":") + 1, header.length()).strip_edges();
|
String encoding = header.substr(header.find_char(':') + 1, header.length()).strip_edges();
|
||||||
if (encoding == "chunked") {
|
if (encoding == "chunked") {
|
||||||
chunked = true;
|
chunked = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -661,12 +661,12 @@ bool PList::load_string(const String &p_string, String &r_err_out) {
|
||||||
List<Ref<PListNode>> stack;
|
List<Ref<PListNode>> stack;
|
||||||
String key;
|
String key;
|
||||||
while (pos >= 0) {
|
while (pos >= 0) {
|
||||||
int open_token_s = p_string.find("<", pos);
|
int open_token_s = p_string.find_char('<', pos);
|
||||||
if (open_token_s == -1) {
|
if (open_token_s == -1) {
|
||||||
r_err_out = "Unexpected end of data. No tags found.";
|
r_err_out = "Unexpected end of data. No tags found.";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
int open_token_e = p_string.find(">", open_token_s);
|
int open_token_e = p_string.find_char('>', open_token_s);
|
||||||
pos = open_token_e;
|
pos = open_token_e;
|
||||||
|
|
||||||
String token = p_string.substr(open_token_s + 1, open_token_e - open_token_s - 1);
|
String token = p_string.substr(open_token_s + 1, open_token_e - open_token_s - 1);
|
||||||
|
|
@ -676,7 +676,7 @@ bool PList::load_string(const String &p_string, String &r_err_out) {
|
||||||
}
|
}
|
||||||
String value;
|
String value;
|
||||||
if (token[0] == '?' || token[0] == '!') { // Skip <?xml ... ?> and <!DOCTYPE ... >
|
if (token[0] == '?' || token[0] == '!') { // Skip <?xml ... ?> and <!DOCTYPE ... >
|
||||||
int end_token_e = p_string.find(">", open_token_s);
|
int end_token_e = p_string.find_char('>', open_token_s);
|
||||||
pos = end_token_e;
|
pos = end_token_e;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -769,7 +769,7 @@ bool PList::load_string(const String &p_string, String &r_err_out) {
|
||||||
r_err_out = vformat("Mismatched <%s> tag.", token);
|
r_err_out = vformat("Mismatched <%s> tag.", token);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
int end_token_e = p_string.find(">", end_token_s);
|
int end_token_e = p_string.find_char('>', end_token_s);
|
||||||
pos = end_token_e;
|
pos = end_token_e;
|
||||||
String end_token = p_string.substr(end_token_s + 2, end_token_e - end_token_s - 2);
|
String end_token = p_string.substr(end_token_s + 2, end_token_e - end_token_s - 2);
|
||||||
if (end_token != token) {
|
if (end_token != token) {
|
||||||
|
|
|
||||||
|
|
@ -1206,7 +1206,7 @@ String ResourceLoader::_path_remap(const String &p_path, bool *r_translation_rem
|
||||||
|
|
||||||
int best_score = 0;
|
int best_score = 0;
|
||||||
for (int i = 0; i < res_remaps.size(); i++) {
|
for (int i = 0; i < res_remaps.size(); i++) {
|
||||||
int split = res_remaps[i].rfind(":");
|
int split = res_remaps[i].rfind_char(':');
|
||||||
if (split == -1) {
|
if (split == -1) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -1498,11 +1498,11 @@ Vector<String> ResourceLoader::list_directory(const String &p_directory) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (d.ends_with(".import") || d.ends_with(".remap") || d.ends_with(".uid")) {
|
if (d.ends_with(".import") || d.ends_with(".remap") || d.ends_with(".uid")) {
|
||||||
d = d.substr(0, d.rfind("."));
|
d = d.substr(0, d.rfind_char('.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d.ends_with(".gdc")) {
|
if (d.ends_with(".gdc")) {
|
||||||
d = d.substr(0, d.rfind("."));
|
d = d.substr(0, d.rfind_char('.'));
|
||||||
d += ".gd";
|
d += ".gd";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ Ref<Resource> TranslationLoaderPO::load_translation(Ref<FileAccess> f, Error *r_
|
||||||
// Record plural rule.
|
// Record plural rule.
|
||||||
int p_start = config.find("Plural-Forms");
|
int p_start = config.find("Plural-Forms");
|
||||||
if (p_start != -1) {
|
if (p_start != -1) {
|
||||||
int p_end = config.find("\n", p_start);
|
int p_end = config.find_char('\n', p_start);
|
||||||
translation->set_plural_rule(config.substr(p_start, p_end - p_start));
|
translation->set_plural_rule(config.substr(p_start, p_end - p_start));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -224,7 +224,7 @@ Ref<Resource> TranslationLoaderPO::load_translation(Ref<FileAccess> f, Error *r_
|
||||||
// Record plural rule.
|
// Record plural rule.
|
||||||
int p_start = config.find("Plural-Forms");
|
int p_start = config.find("Plural-Forms");
|
||||||
if (p_start != -1) {
|
if (p_start != -1) {
|
||||||
int p_end = config.find("\n", p_start);
|
int p_end = config.find_char('\n', p_start);
|
||||||
translation->set_plural_rule(config.substr(p_start, p_end - p_start));
|
translation->set_plural_rule(config.substr(p_start, p_end - p_start));
|
||||||
plural_forms = translation->get_plural_forms();
|
plural_forms = translation->get_plural_forms();
|
||||||
}
|
}
|
||||||
|
|
@ -324,7 +324,7 @@ Ref<Resource> TranslationLoaderPO::load_translation(Ref<FileAccess> f, Error *r_
|
||||||
Vector<String> configs = config.split("\n");
|
Vector<String> configs = config.split("\n");
|
||||||
for (int i = 0; i < configs.size(); i++) {
|
for (int i = 0; i < configs.size(); i++) {
|
||||||
String c = configs[i].strip_edges();
|
String c = configs[i].strip_edges();
|
||||||
int p = c.find(":");
|
int p = c.find_char(':');
|
||||||
if (p == -1) {
|
if (p == -1) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -407,7 +407,7 @@ NodePath::NodePath(const String &p_path) {
|
||||||
bool absolute = (path[0] == '/');
|
bool absolute = (path[0] == '/');
|
||||||
bool last_is_slash = true;
|
bool last_is_slash = true;
|
||||||
int slices = 0;
|
int slices = 0;
|
||||||
int subpath_pos = path.find(":");
|
int subpath_pos = path.find_char(':');
|
||||||
|
|
||||||
if (subpath_pos != -1) {
|
if (subpath_pos != -1) {
|
||||||
int from = subpath_pos + 1;
|
int from = subpath_pos + 1;
|
||||||
|
|
|
||||||
|
|
@ -227,11 +227,11 @@ void TranslationPO::set_plural_rule(const String &p_plural_rule) {
|
||||||
// Set plural_forms and plural_rule.
|
// Set plural_forms and plural_rule.
|
||||||
// p_plural_rule passed in has the form "Plural-Forms: nplurals=2; plural=(n >= 2);".
|
// p_plural_rule passed in has the form "Plural-Forms: nplurals=2; plural=(n >= 2);".
|
||||||
|
|
||||||
int first_semi_col = p_plural_rule.find(";");
|
int first_semi_col = p_plural_rule.find_char(';');
|
||||||
plural_forms = p_plural_rule.substr(p_plural_rule.find("=") + 1, first_semi_col - (p_plural_rule.find("=") + 1)).to_int();
|
plural_forms = p_plural_rule.substr(p_plural_rule.find_char('=') + 1, first_semi_col - (p_plural_rule.find_char('=') + 1)).to_int();
|
||||||
|
|
||||||
int expression_start = p_plural_rule.find("=", first_semi_col) + 1;
|
int expression_start = p_plural_rule.find_char('=', first_semi_col) + 1;
|
||||||
int second_semi_col = p_plural_rule.rfind(";");
|
int second_semi_col = p_plural_rule.rfind_char(';');
|
||||||
plural_rule = p_plural_rule.substr(expression_start, second_semi_col - expression_start).strip_edges();
|
plural_rule = p_plural_rule.substr(expression_start, second_semi_col - expression_start).strip_edges();
|
||||||
|
|
||||||
// Setup the cache to make evaluating plural rule faster later on.
|
// Setup the cache to make evaluating plural rule faster later on.
|
||||||
|
|
|
||||||
|
|
@ -246,27 +246,27 @@ Error String::parse_url(String &r_scheme, String &r_host, int &r_port, String &r
|
||||||
base = base.substr(pos + 3, base.length() - pos - 3);
|
base = base.substr(pos + 3, base.length() - pos - 3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pos = base.find("#");
|
pos = base.find_char('#');
|
||||||
// Fragment
|
// Fragment
|
||||||
if (pos != -1) {
|
if (pos != -1) {
|
||||||
r_fragment = base.substr(pos + 1);
|
r_fragment = base.substr(pos + 1);
|
||||||
base = base.substr(0, pos);
|
base = base.substr(0, pos);
|
||||||
}
|
}
|
||||||
pos = base.find("/");
|
pos = base.find_char('/');
|
||||||
// Path
|
// Path
|
||||||
if (pos != -1) {
|
if (pos != -1) {
|
||||||
r_path = base.substr(pos, base.length() - pos);
|
r_path = base.substr(pos, base.length() - pos);
|
||||||
base = base.substr(0, pos);
|
base = base.substr(0, pos);
|
||||||
}
|
}
|
||||||
// Host
|
// Host
|
||||||
pos = base.find("@");
|
pos = base.find_char('@');
|
||||||
if (pos != -1) {
|
if (pos != -1) {
|
||||||
// Strip credentials
|
// Strip credentials
|
||||||
base = base.substr(pos + 1, base.length() - pos - 1);
|
base = base.substr(pos + 1, base.length() - pos - 1);
|
||||||
}
|
}
|
||||||
if (base.begins_with("[")) {
|
if (base.begins_with("[")) {
|
||||||
// Literal IPv6
|
// Literal IPv6
|
||||||
pos = base.rfind("]");
|
pos = base.rfind_char(']');
|
||||||
if (pos == -1) {
|
if (pos == -1) {
|
||||||
return ERR_INVALID_PARAMETER;
|
return ERR_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
@ -277,7 +277,7 @@ Error String::parse_url(String &r_scheme, String &r_host, int &r_port, String &r
|
||||||
if (base.get_slice_count(":") > 2) {
|
if (base.get_slice_count(":") > 2) {
|
||||||
return ERR_INVALID_PARAMETER;
|
return ERR_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
pos = base.rfind(":");
|
pos = base.rfind_char(':');
|
||||||
if (pos == -1) {
|
if (pos == -1) {
|
||||||
r_host = base;
|
r_host = base;
|
||||||
base = "";
|
base = "";
|
||||||
|
|
@ -2641,7 +2641,7 @@ int64_t String::to_int() const {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int to = (find(".") >= 0) ? find(".") : length();
|
int to = (find_char('.') >= 0) ? find_char('.') : length();
|
||||||
|
|
||||||
int64_t integer = 0;
|
int64_t integer = 0;
|
||||||
int64_t sign = 1;
|
int64_t sign = 1;
|
||||||
|
|
@ -4580,7 +4580,7 @@ String String::simplify_path() const {
|
||||||
if (p == -1) {
|
if (p == -1) {
|
||||||
p = s.find(":\\");
|
p = s.find(":\\");
|
||||||
}
|
}
|
||||||
if (p != -1 && p < s.find("/")) {
|
if (p != -1 && p < s.find_char('/')) {
|
||||||
drive = s.substr(0, p + 2);
|
drive = s.substr(0, p + 2);
|
||||||
s = s.substr(p + 2);
|
s = s.substr(p + 2);
|
||||||
}
|
}
|
||||||
|
|
@ -5025,7 +5025,7 @@ String String::xml_unescape() const {
|
||||||
|
|
||||||
String String::pad_decimals(int p_digits) const {
|
String String::pad_decimals(int p_digits) const {
|
||||||
String s = *this;
|
String s = *this;
|
||||||
int c = s.find(".");
|
int c = s.find_char('.');
|
||||||
|
|
||||||
if (c == -1) {
|
if (c == -1) {
|
||||||
if (p_digits <= 0) {
|
if (p_digits <= 0) {
|
||||||
|
|
@ -5049,7 +5049,7 @@ String String::pad_decimals(int p_digits) const {
|
||||||
|
|
||||||
String String::pad_zeros(int p_digits) const {
|
String String::pad_zeros(int p_digits) const {
|
||||||
String s = *this;
|
String s = *this;
|
||||||
int end = s.find(".");
|
int end = s.find_char('.');
|
||||||
|
|
||||||
if (end == -1) {
|
if (end == -1) {
|
||||||
end = s.length();
|
end = s.length();
|
||||||
|
|
@ -5316,7 +5316,7 @@ String String::validate_filename() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool String::is_valid_ip_address() const {
|
bool String::is_valid_ip_address() const {
|
||||||
if (find(":") >= 0) {
|
if (find_char(':') >= 0) {
|
||||||
Vector<String> ip = split(":");
|
Vector<String> ip = split(":");
|
||||||
for (int i = 0; i < ip.size(); i++) {
|
for (int i = 0; i < ip.size(); i++) {
|
||||||
const String &n = ip[i];
|
const String &n = ip[i];
|
||||||
|
|
@ -5386,13 +5386,13 @@ String String::get_base_dir() const {
|
||||||
// Windows UNC network share path.
|
// Windows UNC network share path.
|
||||||
if (end == 0) {
|
if (end == 0) {
|
||||||
if (is_network_share_path()) {
|
if (is_network_share_path()) {
|
||||||
basepos = find("/", 2);
|
basepos = find_char('/', 2);
|
||||||
if (basepos == -1) {
|
if (basepos == -1) {
|
||||||
basepos = find("\\", 2);
|
basepos = find_char('\\', 2);
|
||||||
}
|
}
|
||||||
int servpos = find("/", basepos + 1);
|
int servpos = find_char('/', basepos + 1);
|
||||||
if (servpos == -1) {
|
if (servpos == -1) {
|
||||||
servpos = find("\\", basepos + 1);
|
servpos = find_char('\\', basepos + 1);
|
||||||
}
|
}
|
||||||
if (servpos != -1) {
|
if (servpos != -1) {
|
||||||
end = servpos + 1;
|
end = servpos + 1;
|
||||||
|
|
@ -5416,7 +5416,7 @@ String String::get_base_dir() const {
|
||||||
rs = *this;
|
rs = *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sep = MAX(rs.rfind("/"), rs.rfind("\\"));
|
int sep = MAX(rs.rfind_char('/'), rs.rfind_char('\\'));
|
||||||
if (sep == -1) {
|
if (sep == -1) {
|
||||||
return base;
|
return base;
|
||||||
}
|
}
|
||||||
|
|
@ -5425,7 +5425,7 @@ String String::get_base_dir() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
String String::get_file() const {
|
String String::get_file() const {
|
||||||
int sep = MAX(rfind("/"), rfind("\\"));
|
int sep = MAX(rfind_char('/'), rfind_char('\\'));
|
||||||
if (sep == -1) {
|
if (sep == -1) {
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
@ -5434,8 +5434,8 @@ String String::get_file() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
String String::get_extension() const {
|
String String::get_extension() const {
|
||||||
int pos = rfind(".");
|
int pos = rfind_char('.');
|
||||||
if (pos < 0 || pos < MAX(rfind("/"), rfind("\\"))) {
|
if (pos < 0 || pos < MAX(rfind_char('/'), rfind_char('\\'))) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -5533,8 +5533,8 @@ String String::validate_node_name() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
String String::get_basename() const {
|
String String::get_basename() const {
|
||||||
int pos = rfind(".");
|
int pos = rfind_char('.');
|
||||||
if (pos < 0 || pos < MAX(rfind("/"), rfind("\\"))) {
|
if (pos < 0 || pos < MAX(rfind_char('/'), rfind_char('\\'))) {
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ Error AudioDriverALSA::init_output_device() {
|
||||||
status = snd_pcm_open(&pcm_handle, "default", SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK);
|
status = snd_pcm_open(&pcm_handle, "default", SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK);
|
||||||
} else {
|
} else {
|
||||||
String device = output_device_name;
|
String device = output_device_name;
|
||||||
int pos = device.find(";");
|
int pos = device.find_char(';');
|
||||||
if (pos != -1) {
|
if (pos != -1) {
|
||||||
device = device.substr(0, pos);
|
device = device.substr(0, pos);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -860,7 +860,7 @@ String OS_Unix::get_locale() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
String locale = get_environment("LANG");
|
String locale = get_environment("LANG");
|
||||||
int tp = locale.find(".");
|
int tp = locale.find_char('.');
|
||||||
if (tp != -1) {
|
if (tp != -1) {
|
||||||
locale = locale.substr(0, tp);
|
locale = locale.substr(0, tp);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -230,7 +230,7 @@ String DirAccessWindows::get_current_dir(bool p_include_drive) const {
|
||||||
return cdir;
|
return cdir;
|
||||||
} else {
|
} else {
|
||||||
if (_get_root_string().is_empty()) {
|
if (_get_root_string().is_empty()) {
|
||||||
int pos = cdir.find(":");
|
int pos = cdir.find_char(':');
|
||||||
if (pos != -1) {
|
if (pos != -1) {
|
||||||
return cdir.substr(pos + 1);
|
return cdir.substr(pos + 1);
|
||||||
}
|
}
|
||||||
|
|
@ -344,7 +344,7 @@ String DirAccessWindows::get_filesystem_type() const {
|
||||||
return "Network Share";
|
return "Network Share";
|
||||||
}
|
}
|
||||||
|
|
||||||
int unit_end = path.find(":");
|
int unit_end = path.find_char(':');
|
||||||
ERR_FAIL_COND_V(unit_end == -1, String());
|
ERR_FAIL_COND_V(unit_end == -1, String());
|
||||||
String unit = path.substr(0, unit_end + 1) + "\\";
|
String unit = path.substr(0, unit_end + 1) + "\\";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ bool FileAccessWindows::is_path_invalid(const String &p_path) {
|
||||||
// Check for invalid operating system file.
|
// Check for invalid operating system file.
|
||||||
String fname = p_path.get_file().to_lower();
|
String fname = p_path.get_file().to_lower();
|
||||||
|
|
||||||
int dot = fname.find(".");
|
int dot = fname.find_char('.');
|
||||||
if (dot != -1) {
|
if (dot != -1) {
|
||||||
fname = fname.substr(0, dot);
|
fname = fname.substr(0, dot);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -275,7 +275,7 @@ void AnimationBezierTrackEdit::_notification(int p_what) {
|
||||||
}
|
}
|
||||||
|
|
||||||
String base_path = animation->track_get_path(i);
|
String base_path = animation->track_get_path(i);
|
||||||
int end = base_path.find(":");
|
int end = base_path.find_char(':');
|
||||||
if (end != -1) {
|
if (end != -1) {
|
||||||
base_path = base_path.substr(0, end + 1);
|
base_path = base_path.substr(0, end + 1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4340,7 +4340,7 @@ void AnimationTrackEditor::insert_node_value_key(Node *p_node, const String &p_p
|
||||||
if (track_path == np) {
|
if (track_path == np) {
|
||||||
actual_value = value; // All good.
|
actual_value = value; // All good.
|
||||||
} else {
|
} else {
|
||||||
int sep = track_path.rfind(":");
|
int sep = track_path.rfind_char(':');
|
||||||
if (sep != -1) {
|
if (sep != -1) {
|
||||||
String base_path = track_path.substr(0, sep);
|
String base_path = track_path.substr(0, sep);
|
||||||
if (base_path == np) {
|
if (base_path == np) {
|
||||||
|
|
@ -6495,7 +6495,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
||||||
path = NodePath(node->get_path().get_names(), path.get_subnames(), true); // Store full path instead for copying.
|
path = NodePath(node->get_path().get_names(), path.get_subnames(), true); // Store full path instead for copying.
|
||||||
} else {
|
} else {
|
||||||
text = path;
|
text = path;
|
||||||
int sep = text.find(":");
|
int sep = text.find_char(':');
|
||||||
if (sep != -1) {
|
if (sep != -1) {
|
||||||
text = text.substr(sep + 1, text.length());
|
text = text.substr(sep + 1, text.length());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -524,7 +524,7 @@ void ConnectDialog::set_dst_node(Node *p_node) {
|
||||||
StringName ConnectDialog::get_dst_method_name() const {
|
StringName ConnectDialog::get_dst_method_name() const {
|
||||||
String txt = dst_method->get_text();
|
String txt = dst_method->get_text();
|
||||||
if (txt.contains("(")) {
|
if (txt.contains("(")) {
|
||||||
txt = txt.left(txt.find("(")).strip_edges();
|
txt = txt.left(txt.find_char('(')).strip_edges();
|
||||||
}
|
}
|
||||||
return txt;
|
return txt;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -160,13 +160,13 @@ bool CreateDialog::_should_hide_type(const StringName &p_type) const {
|
||||||
|
|
||||||
String script_path = ScriptServer::get_global_class_path(p_type);
|
String script_path = ScriptServer::get_global_class_path(p_type);
|
||||||
if (script_path.begins_with("res://addons/")) {
|
if (script_path.begins_with("res://addons/")) {
|
||||||
int i = script_path.find("/", 13); // 13 is length of "res://addons/".
|
int i = script_path.find_char('/', 13); // 13 is length of "res://addons/".
|
||||||
while (i > -1) {
|
while (i > -1) {
|
||||||
const String plugin_path = script_path.substr(0, i).path_join("plugin.cfg");
|
const String plugin_path = script_path.substr(0, i).path_join("plugin.cfg");
|
||||||
if (FileAccess::exists(plugin_path)) {
|
if (FileAccess::exists(plugin_path)) {
|
||||||
return !EditorNode::get_singleton()->is_addon_plugin_enabled(plugin_path);
|
return !EditorNode::get_singleton()->is_addon_plugin_enabled(plugin_path);
|
||||||
}
|
}
|
||||||
i = script_path.find("/", i + 1);
|
i = script_path.find_char('/', i + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -147,7 +147,7 @@ Dictionary DebugAdapterParser::req_initialize(const Dictionary &p_params) const
|
||||||
for (List<String>::Element *E = breakpoints.front(); E; E = E->next()) {
|
for (List<String>::Element *E = breakpoints.front(); E; E = E->next()) {
|
||||||
String breakpoint = E->get();
|
String breakpoint = E->get();
|
||||||
|
|
||||||
String path = breakpoint.left(breakpoint.find(":", 6)); // Skip initial part of path, aka "res://"
|
String path = breakpoint.left(breakpoint.find_char(':', 6)); // Skip initial part of path, aka "res://"
|
||||||
int line = breakpoint.substr(path.size()).to_int();
|
int line = breakpoint.substr(path.size()).to_int();
|
||||||
|
|
||||||
DebugAdapterProtocol::get_singleton()->on_debug_breakpoint_toggled(path, line, true);
|
DebugAdapterProtocol::get_singleton()->on_debug_breakpoint_toggled(path, line, true);
|
||||||
|
|
|
||||||
|
|
@ -160,9 +160,9 @@ void EditorDebuggerNode::_text_editor_stack_goto(const ScriptEditorDebugger *p_d
|
||||||
} else {
|
} else {
|
||||||
// If the script is built-in, it can be opened only if the scene is loaded in memory.
|
// If the script is built-in, it can be opened only if the scene is loaded in memory.
|
||||||
int i = file.find("::");
|
int i = file.find("::");
|
||||||
int j = file.rfind("(", i);
|
int j = file.rfind_char('(', i);
|
||||||
if (j > -1) { // If the script is named, the string is "name (file)", so we need to extract the path.
|
if (j > -1) { // If the script is named, the string is "name (file)", so we need to extract the path.
|
||||||
file = file.substr(j + 1, file.find(")", i) - j - 1);
|
file = file.substr(j + 1, file.find_char(')', i) - j - 1);
|
||||||
}
|
}
|
||||||
Ref<PackedScene> ps = ResourceLoader::load(file.get_slice("::", 0));
|
Ref<PackedScene> ps = ResourceLoader::load(file.get_slice("::", 0));
|
||||||
stack_script = ResourceLoader::load(file);
|
stack_script = ResourceLoader::load(file);
|
||||||
|
|
@ -183,9 +183,9 @@ void EditorDebuggerNode::_text_editor_stack_clear(const ScriptEditorDebugger *p_
|
||||||
} else {
|
} else {
|
||||||
// If the script is built-in, it can be opened only if the scene is loaded in memory.
|
// If the script is built-in, it can be opened only if the scene is loaded in memory.
|
||||||
int i = file.find("::");
|
int i = file.find("::");
|
||||||
int j = file.rfind("(", i);
|
int j = file.rfind_char('(', i);
|
||||||
if (j > -1) { // If the script is named, the string is "name (file)", so we need to extract the path.
|
if (j > -1) { // If the script is named, the string is "name (file)", so we need to extract the path.
|
||||||
file = file.substr(j + 1, file.find(")", i) - j - 1);
|
file = file.substr(j + 1, file.find_char(')', i) - j - 1);
|
||||||
}
|
}
|
||||||
Ref<PackedScene> ps = ResourceLoader::load(file.get_slice("::", 0));
|
Ref<PackedScene> ps = ResourceLoader::load(file.get_slice("::", 0));
|
||||||
stack_script = ResourceLoader::load(file);
|
stack_script = ResourceLoader::load(file);
|
||||||
|
|
|
||||||
|
|
@ -382,7 +382,7 @@ void EditorDebuggerTree::_item_menu_id_pressed(int p_option) {
|
||||||
text = ".";
|
text = ".";
|
||||||
} else {
|
} else {
|
||||||
text = text.replace("/root/", "");
|
text = text.replace("/root/", "");
|
||||||
int slash = text.find("/");
|
int slash = text.find_char('/');
|
||||||
if (slash < 0) {
|
if (slash < 0) {
|
||||||
text = ".";
|
text = ".";
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -471,7 +471,7 @@ void DependencyRemoveDialog::_find_localization_remaps_of_removed_files(Vector<R
|
||||||
for (int j = 0; j < remap_keys.size(); j++) {
|
for (int j = 0; j < remap_keys.size(); j++) {
|
||||||
PackedStringArray remapped_files = remaps[remap_keys[j]];
|
PackedStringArray remapped_files = remaps[remap_keys[j]];
|
||||||
for (int k = 0; k < remapped_files.size(); k++) {
|
for (int k = 0; k < remapped_files.size(); k++) {
|
||||||
int splitter_pos = remapped_files[k].rfind(":");
|
int splitter_pos = remapped_files[k].rfind_char(':');
|
||||||
String res_path = remapped_files[k].substr(0, splitter_pos);
|
String res_path = remapped_files[k].substr(0, splitter_pos);
|
||||||
if (res_path == path) {
|
if (res_path == path) {
|
||||||
String locale_name = remapped_files[k].substr(splitter_pos + 1);
|
String locale_name = remapped_files[k].substr(splitter_pos + 1);
|
||||||
|
|
|
||||||
|
|
@ -142,7 +142,7 @@ void DirectoryCreateDialog::config(const String &p_base_dir, const Callable &p_a
|
||||||
validation_panel->update();
|
validation_panel->update();
|
||||||
|
|
||||||
if (p_mode == MODE_FILE) {
|
if (p_mode == MODE_FILE) {
|
||||||
int extension_pos = p_default_name.rfind(".");
|
int extension_pos = p_default_name.rfind_char('.');
|
||||||
if (extension_pos > -1) {
|
if (extension_pos > -1) {
|
||||||
dir_path->select(0, extension_pos);
|
dir_path->select(0, extension_pos);
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -130,14 +130,14 @@ void EditorAssetInstaller::open_asset(const String &p_path, bool p_autoskip_topl
|
||||||
|
|
||||||
// Create intermediate directories if they aren't reported by unzip.
|
// Create intermediate directories if they aren't reported by unzip.
|
||||||
// We are only interested in subfolders, so skip the root slash.
|
// We are only interested in subfolders, so skip the root slash.
|
||||||
int separator = source_name.find("/", 1);
|
int separator = source_name.find_char('/', 1);
|
||||||
while (separator != -1) {
|
while (separator != -1) {
|
||||||
String dir_name = source_name.substr(0, separator + 1);
|
String dir_name = source_name.substr(0, separator + 1);
|
||||||
if (!dir_name.is_empty() && !asset_files.has(dir_name)) {
|
if (!dir_name.is_empty() && !asset_files.has(dir_name)) {
|
||||||
asset_files.insert(dir_name);
|
asset_files.insert(dir_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
separator = source_name.find("/", separator + 1);
|
separator = source_name.find_char('/', separator + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!source_name.is_empty() && !asset_files.has(source_name)) {
|
if (!source_name.is_empty() && !asset_files.has(source_name)) {
|
||||||
|
|
@ -214,7 +214,7 @@ void EditorAssetInstaller::_rebuild_source_tree() {
|
||||||
|
|
||||||
TreeItem *parent_item;
|
TreeItem *parent_item;
|
||||||
|
|
||||||
int separator = path.rfind("/");
|
int separator = path.rfind_char('/');
|
||||||
if (separator == -1) {
|
if (separator == -1) {
|
||||||
parent_item = root;
|
parent_item = root;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -313,7 +313,7 @@ void EditorAssetInstaller::_rebuild_destination_tree() {
|
||||||
|
|
||||||
TreeItem *parent_item;
|
TreeItem *parent_item;
|
||||||
|
|
||||||
int separator = path.rfind("/");
|
int separator = path.rfind_char('/');
|
||||||
if (separator == -1) {
|
if (separator == -1) {
|
||||||
parent_item = root;
|
parent_item = root;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -249,7 +249,7 @@ void EditorFolding::_do_object_unfolds(Object *p_object, HashSet<Ref<Resource>>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else { //path
|
} else { //path
|
||||||
int last = E.name.rfind("/");
|
int last = E.name.rfind_char('/');
|
||||||
if (last != -1) {
|
if (last != -1) {
|
||||||
bool can_revert = EditorPropertyRevert::can_property_revert(p_object, E.name);
|
bool can_revert = EditorPropertyRevert::can_property_revert(p_object, E.name);
|
||||||
if (can_revert) {
|
if (can_revert) {
|
||||||
|
|
|
||||||
|
|
@ -148,7 +148,7 @@ static String _contextualize_class_specifier(const String &p_class_specifier, co
|
||||||
|
|
||||||
// Here equal length + begins_with from above implies p_class_specifier == p_edited_class :)
|
// Here equal length + begins_with from above implies p_class_specifier == p_edited_class :)
|
||||||
if (p_class_specifier.length() == p_edited_class.length()) {
|
if (p_class_specifier.length() == p_edited_class.length()) {
|
||||||
int rfind = p_class_specifier.rfind(".");
|
int rfind = p_class_specifier.rfind_char('.');
|
||||||
if (rfind == -1) { // Single identifier
|
if (rfind == -1) { // Single identifier
|
||||||
return p_class_specifier;
|
return p_class_specifier;
|
||||||
}
|
}
|
||||||
|
|
@ -234,7 +234,7 @@ void EditorHelp::_class_desc_select(const String &p_select) {
|
||||||
enum_class_name = "@GlobalScope";
|
enum_class_name = "@GlobalScope";
|
||||||
enum_name = link;
|
enum_name = link;
|
||||||
} else {
|
} else {
|
||||||
const int dot_pos = link.rfind(".");
|
const int dot_pos = link.rfind_char('.');
|
||||||
if (dot_pos >= 0) {
|
if (dot_pos >= 0) {
|
||||||
enum_class_name = link.left(dot_pos);
|
enum_class_name = link.left(dot_pos);
|
||||||
enum_name = link.substr(dot_pos + 1);
|
enum_name = link.substr(dot_pos + 1);
|
||||||
|
|
@ -3252,7 +3252,7 @@ EditorHelpBit::HelpData EditorHelpBit::_get_property_help_data(const StringName
|
||||||
enum_class_name = "@GlobalScope";
|
enum_class_name = "@GlobalScope";
|
||||||
enum_name = property.enumeration;
|
enum_name = property.enumeration;
|
||||||
} else {
|
} else {
|
||||||
const int dot_pos = property.enumeration.rfind(".");
|
const int dot_pos = property.enumeration.rfind_char('.');
|
||||||
if (dot_pos >= 0) {
|
if (dot_pos >= 0) {
|
||||||
enum_class_name = property.enumeration.left(dot_pos);
|
enum_class_name = property.enumeration.left(dot_pos);
|
||||||
enum_name = property.enumeration.substr(dot_pos + 1);
|
enum_name = property.enumeration.substr(dot_pos + 1);
|
||||||
|
|
@ -3619,7 +3619,7 @@ void EditorHelpBit::_meta_clicked(const String &p_select) {
|
||||||
enum_class_name = "@GlobalScope";
|
enum_class_name = "@GlobalScope";
|
||||||
enum_name = link;
|
enum_name = link;
|
||||||
} else {
|
} else {
|
||||||
const int dot_pos = link.rfind(".");
|
const int dot_pos = link.rfind_char('.');
|
||||||
if (dot_pos >= 0) {
|
if (dot_pos >= 0) {
|
||||||
enum_class_name = link.left(dot_pos);
|
enum_class_name = link.left(dot_pos);
|
||||||
enum_name = link.substr(dot_pos + 1);
|
enum_name = link.substr(dot_pos + 1);
|
||||||
|
|
|
||||||
|
|
@ -3131,7 +3131,7 @@ void EditorInspector::update_tree() {
|
||||||
|
|
||||||
if (!array_prefix.is_empty()) {
|
if (!array_prefix.is_empty()) {
|
||||||
path = path.trim_prefix(array_prefix);
|
path = path.trim_prefix(array_prefix);
|
||||||
int char_index = path.find("/");
|
int char_index = path.find_char('/');
|
||||||
if (char_index >= 0) {
|
if (char_index >= 0) {
|
||||||
path = path.right(-char_index - 1);
|
path = path.right(-char_index - 1);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -3171,10 +3171,10 @@ void EditorInspector::update_tree() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the property label's string.
|
// Get the property label's string.
|
||||||
String name_override = (path.contains("/")) ? path.substr(path.rfind("/") + 1) : path;
|
String name_override = (path.contains("/")) ? path.substr(path.rfind_char('/') + 1) : path;
|
||||||
String feature_tag;
|
String feature_tag;
|
||||||
{
|
{
|
||||||
const int dot = name_override.find(".");
|
const int dot = name_override.find_char('.');
|
||||||
if (dot != -1) {
|
if (dot != -1) {
|
||||||
feature_tag = name_override.substr(dot);
|
feature_tag = name_override.substr(dot);
|
||||||
name_override = name_override.substr(0, dot);
|
name_override = name_override.substr(0, dot);
|
||||||
|
|
@ -3189,7 +3189,7 @@ void EditorInspector::update_tree() {
|
||||||
const String property_label_string = EditorPropertyNameProcessor::get_singleton()->process_name(name_override, name_style, p.name, doc_name) + feature_tag;
|
const String property_label_string = EditorPropertyNameProcessor::get_singleton()->process_name(name_override, name_style, p.name, doc_name) + feature_tag;
|
||||||
|
|
||||||
// Remove the property from the path.
|
// Remove the property from the path.
|
||||||
int idx = path.rfind("/");
|
int idx = path.rfind_char('/');
|
||||||
if (idx > -1) {
|
if (idx > -1) {
|
||||||
path = path.left(idx);
|
path = path.left(idx);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -3320,7 +3320,7 @@ void EditorInspector::update_tree() {
|
||||||
array_element_prefix = class_name_components[0];
|
array_element_prefix = class_name_components[0];
|
||||||
editor_inspector_array = memnew(EditorInspectorArray(all_read_only));
|
editor_inspector_array = memnew(EditorInspectorArray(all_read_only));
|
||||||
|
|
||||||
String array_label = path.contains("/") ? path.substr(path.rfind("/") + 1) : path;
|
String array_label = path.contains("/") ? path.substr(path.rfind_char('/') + 1) : path;
|
||||||
array_label = EditorPropertyNameProcessor::get_singleton()->process_name(property_label_string, property_name_style, p.name, doc_name);
|
array_label = EditorPropertyNameProcessor::get_singleton()->process_name(property_label_string, property_name_style, p.name, doc_name);
|
||||||
int page = per_array_page.has(array_element_prefix) ? per_array_page[array_element_prefix] : 0;
|
int page = per_array_page.has(array_element_prefix) ? per_array_page[array_element_prefix] : 0;
|
||||||
editor_inspector_array->setup_with_move_element_function(object, array_label, array_element_prefix, page, c, use_folding);
|
editor_inspector_array->setup_with_move_element_function(object, array_label, array_element_prefix, page, c, use_folding);
|
||||||
|
|
|
||||||
|
|
@ -253,8 +253,8 @@ void EditorNode::disambiguate_filenames(const Vector<String> p_full_paths, Vecto
|
||||||
// append that to yield "folder/foo.tscn".
|
// append that to yield "folder/foo.tscn".
|
||||||
if (difference > 0) {
|
if (difference > 0) {
|
||||||
String parent = full_path.substr(0, difference);
|
String parent = full_path.substr(0, difference);
|
||||||
int slash_idx = parent.rfind("/");
|
int slash_idx = parent.rfind_char('/');
|
||||||
slash_idx = parent.rfind("/", slash_idx - 1);
|
slash_idx = parent.rfind_char('/', slash_idx - 1);
|
||||||
parent = (slash_idx >= 0 && parent.length() > 1) ? parent.substr(slash_idx + 1) : parent;
|
parent = (slash_idx >= 0 && parent.length() > 1) ? parent.substr(slash_idx + 1) : parent;
|
||||||
r_filenames.write[set_idx] = parent + r_filenames[set_idx];
|
r_filenames.write[set_idx] = parent + r_filenames[set_idx];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -740,10 +740,10 @@ void EditorPropertyArray::setup(Variant::Type p_array_type, const String &p_hint
|
||||||
// The format of p_hint_string is:
|
// The format of p_hint_string is:
|
||||||
// subType/subTypeHint:nextSubtype ... etc.
|
// subType/subTypeHint:nextSubtype ... etc.
|
||||||
if (!p_hint_string.is_empty()) {
|
if (!p_hint_string.is_empty()) {
|
||||||
int hint_subtype_separator = p_hint_string.find(":");
|
int hint_subtype_separator = p_hint_string.find_char(':');
|
||||||
if (hint_subtype_separator >= 0) {
|
if (hint_subtype_separator >= 0) {
|
||||||
String subtype_string = p_hint_string.substr(0, hint_subtype_separator);
|
String subtype_string = p_hint_string.substr(0, hint_subtype_separator);
|
||||||
int slash_pos = subtype_string.find("/");
|
int slash_pos = subtype_string.find_char('/');
|
||||||
if (slash_pos >= 0) {
|
if (slash_pos >= 0) {
|
||||||
subtype_hint = PropertyHint(subtype_string.substr(slash_pos + 1, subtype_string.size() - slash_pos - 1).to_int());
|
subtype_hint = PropertyHint(subtype_string.substr(slash_pos + 1, subtype_string.size() - slash_pos - 1).to_int());
|
||||||
subtype_string = subtype_string.substr(0, slash_pos);
|
subtype_string = subtype_string.substr(0, slash_pos);
|
||||||
|
|
@ -1006,10 +1006,10 @@ void EditorPropertyDictionary::setup(PropertyHint p_hint, const String &p_hint_s
|
||||||
PackedStringArray types = p_hint_string.split(";");
|
PackedStringArray types = p_hint_string.split(";");
|
||||||
if (types.size() > 0 && !types[0].is_empty()) {
|
if (types.size() > 0 && !types[0].is_empty()) {
|
||||||
String key = types[0];
|
String key = types[0];
|
||||||
int hint_key_subtype_separator = key.find(":");
|
int hint_key_subtype_separator = key.find_char(':');
|
||||||
if (hint_key_subtype_separator >= 0) {
|
if (hint_key_subtype_separator >= 0) {
|
||||||
String key_subtype_string = key.substr(0, hint_key_subtype_separator);
|
String key_subtype_string = key.substr(0, hint_key_subtype_separator);
|
||||||
int slash_pos = key_subtype_string.find("/");
|
int slash_pos = key_subtype_string.find_char('/');
|
||||||
if (slash_pos >= 0) {
|
if (slash_pos >= 0) {
|
||||||
key_subtype_hint = PropertyHint(key_subtype_string.substr(slash_pos + 1, key_subtype_string.size() - slash_pos - 1).to_int());
|
key_subtype_hint = PropertyHint(key_subtype_string.substr(slash_pos + 1, key_subtype_string.size() - slash_pos - 1).to_int());
|
||||||
key_subtype_string = key_subtype_string.substr(0, slash_pos);
|
key_subtype_string = key_subtype_string.substr(0, slash_pos);
|
||||||
|
|
@ -1025,10 +1025,10 @@ void EditorPropertyDictionary::setup(PropertyHint p_hint, const String &p_hint_s
|
||||||
}
|
}
|
||||||
if (types.size() > 1 && !types[1].is_empty()) {
|
if (types.size() > 1 && !types[1].is_empty()) {
|
||||||
String value = types[1];
|
String value = types[1];
|
||||||
int hint_value_subtype_separator = value.find(":");
|
int hint_value_subtype_separator = value.find_char(':');
|
||||||
if (hint_value_subtype_separator >= 0) {
|
if (hint_value_subtype_separator >= 0) {
|
||||||
String value_subtype_string = value.substr(0, hint_value_subtype_separator);
|
String value_subtype_string = value.substr(0, hint_value_subtype_separator);
|
||||||
int slash_pos = value_subtype_string.find("/");
|
int slash_pos = value_subtype_string.find_char('/');
|
||||||
if (slash_pos >= 0) {
|
if (slash_pos >= 0) {
|
||||||
value_subtype_hint = PropertyHint(value_subtype_string.substr(slash_pos + 1, value_subtype_string.size() - slash_pos - 1).to_int());
|
value_subtype_hint = PropertyHint(value_subtype_string.substr(slash_pos + 1, value_subtype_string.size() - slash_pos - 1).to_int());
|
||||||
value_subtype_string = value_subtype_string.substr(0, slash_pos);
|
value_subtype_string = value_subtype_string.substr(0, slash_pos);
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ class SectionedInspectorFilter : public Object {
|
||||||
List<PropertyInfo> pinfo;
|
List<PropertyInfo> pinfo;
|
||||||
edited->get_property_list(&pinfo);
|
edited->get_property_list(&pinfo);
|
||||||
for (PropertyInfo &pi : pinfo) {
|
for (PropertyInfo &pi : pinfo) {
|
||||||
int sp = pi.name.find("/");
|
int sp = pi.name.find_char('/');
|
||||||
|
|
||||||
if (pi.name == "resource_path" || pi.name == "resource_name" || pi.name == "resource_local_to_scene" || pi.name.begins_with("script/") || pi.name.begins_with("_global_script")) { //skip resource stuff
|
if (pi.name == "resource_path" || pi.name == "resource_name" || pi.name == "resource_local_to_scene" || pi.name.begins_with("script/") || pi.name.begins_with("_global_script")) { //skip resource stuff
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -255,7 +255,7 @@ void SectionedInspector::update_category_list() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sp = pi.name.find("/");
|
int sp = pi.name.find_char('/');
|
||||||
if (sp == -1) {
|
if (sp == -1) {
|
||||||
pi.name = "global/" + pi.name;
|
pi.name = "global/" + pi.name;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -240,8 +240,8 @@ EngineUpdateLabel::VersionType EngineUpdateLabel::_get_version_type(const String
|
||||||
}
|
}
|
||||||
|
|
||||||
String EngineUpdateLabel::_extract_sub_string(const String &p_line) const {
|
String EngineUpdateLabel::_extract_sub_string(const String &p_line) const {
|
||||||
int j = p_line.find("\"") + 1;
|
int j = p_line.find_char('"') + 1;
|
||||||
return p_line.substr(j, p_line.find("\"", j) - j);
|
return p_line.substr(j, p_line.find_char('"', j) - j);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EngineUpdateLabel::_notification(int p_what) {
|
void EngineUpdateLabel::_notification(int p_what) {
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,7 @@ bool FileSystemList::edit_selected() {
|
||||||
|
|
||||||
String name = get_item_text(s);
|
String name = get_item_text(s);
|
||||||
line_editor->set_text(name);
|
line_editor->set_text(name);
|
||||||
line_editor->select(0, name.rfind("."));
|
line_editor->select(0, name.rfind_char('.'));
|
||||||
|
|
||||||
popup_edit_commited = false; // Start edit popup processing.
|
popup_edit_commited = false; // Start edit popup processing.
|
||||||
popup_editor->popup();
|
popup_editor->popup();
|
||||||
|
|
@ -2432,7 +2432,7 @@ void FileSystemDock::_file_option(int p_option, const Vector<String> &p_selected
|
||||||
|
|
||||||
if (to_rename.is_file) {
|
if (to_rename.is_file) {
|
||||||
String name = to_rename.path.get_file();
|
String name = to_rename.path.get_file();
|
||||||
tree->set_editor_selection(0, name.rfind("."));
|
tree->set_editor_selection(0, name.rfind_char('.'));
|
||||||
} else {
|
} else {
|
||||||
String name = to_rename.path.left(-1).get_file(); // Removes the "/" suffix for folders.
|
String name = to_rename.path.left(-1).get_file(); // Removes the "/" suffix for folders.
|
||||||
tree->set_editor_selection(0, name.length());
|
tree->set_editor_selection(0, name.length());
|
||||||
|
|
@ -3658,10 +3658,10 @@ void FileSystemDock::_file_list_gui_input(Ref<InputEvent> p_event) {
|
||||||
tree_item->select(0);
|
tree_item->select(0);
|
||||||
} else {
|
} else {
|
||||||
// Find parent folder.
|
// Find parent folder.
|
||||||
fpath = fpath.substr(0, fpath.rfind("/") + 1);
|
fpath = fpath.substr(0, fpath.rfind_char('/') + 1);
|
||||||
if (fpath.size() > String("res://").size()) {
|
if (fpath.size() > String("res://").size()) {
|
||||||
fpath = fpath.left(fpath.size() - 2); // Remove last '/'.
|
fpath = fpath.left(fpath.size() - 2); // Remove last '/'.
|
||||||
const int slash_idx = fpath.rfind("/");
|
const int slash_idx = fpath.rfind_char('/');
|
||||||
fpath = fpath.substr(slash_idx + 1, fpath.size() - slash_idx - 1);
|
fpath = fpath.substr(slash_idx + 1, fpath.size() - slash_idx - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -156,7 +156,7 @@ void EditorFileDialog::popup_file_dialog() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorFileDialog::_focus_file_text() {
|
void EditorFileDialog::_focus_file_text() {
|
||||||
int lp = file->get_text().rfind(".");
|
int lp = file->get_text().rfind_char('.');
|
||||||
if (lp != -1) {
|
if (lp != -1) {
|
||||||
file->select(0, lp);
|
file->select(0, lp);
|
||||||
file->grab_focus();
|
file->grab_focus();
|
||||||
|
|
@ -1263,7 +1263,7 @@ void EditorFileDialog::set_current_path(const String &p_path) {
|
||||||
if (!p_path.size()) {
|
if (!p_path.size()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int pos = MAX(p_path.rfind("/"), p_path.rfind("\\"));
|
int pos = MAX(p_path.rfind_char('/'), p_path.rfind_char('\\'));
|
||||||
if (pos == -1) {
|
if (pos == -1) {
|
||||||
set_current_file(p_path);
|
set_current_file(p_path);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -199,7 +199,7 @@ Error ResourceImporterImageFont::import(ResourceUID::ID p_source_id, const Strin
|
||||||
case STEP_OFF_Y_BEGIN: {
|
case STEP_OFF_Y_BEGIN: {
|
||||||
// Read advance and offset.
|
// Read advance and offset.
|
||||||
if (range[c] == ' ') {
|
if (range[c] == ' ') {
|
||||||
int next = range.find(" ", c + 1);
|
int next = range.find_char(' ', c + 1);
|
||||||
if (next < c) {
|
if (next < c) {
|
||||||
next = range.length();
|
next = range.length();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -441,7 +441,7 @@ void LocalizationEditor::_filesystem_files_moved(const String &p_old_file, const
|
||||||
bool remapped_files_updated = false;
|
bool remapped_files_updated = false;
|
||||||
|
|
||||||
for (int j = 0; j < remapped_files.size(); j++) {
|
for (int j = 0; j < remapped_files.size(); j++) {
|
||||||
int splitter_pos = remapped_files[j].rfind(":");
|
int splitter_pos = remapped_files[j].rfind_char(':');
|
||||||
String res_path = remapped_files[j].substr(0, splitter_pos);
|
String res_path = remapped_files[j].substr(0, splitter_pos);
|
||||||
|
|
||||||
if (res_path == p_old_file) {
|
if (res_path == p_old_file) {
|
||||||
|
|
@ -482,7 +482,7 @@ void LocalizationEditor::_filesystem_file_removed(const String &p_file) {
|
||||||
for (int i = 0; i < remap_keys.size() && !remaps_changed; i++) {
|
for (int i = 0; i < remap_keys.size() && !remaps_changed; i++) {
|
||||||
PackedStringArray remapped_files = remaps[remap_keys[i]];
|
PackedStringArray remapped_files = remaps[remap_keys[i]];
|
||||||
for (int j = 0; j < remapped_files.size() && !remaps_changed; j++) {
|
for (int j = 0; j < remapped_files.size() && !remaps_changed; j++) {
|
||||||
int splitter_pos = remapped_files[j].rfind(":");
|
int splitter_pos = remapped_files[j].rfind_char(':');
|
||||||
String res_path = remapped_files[j].substr(0, splitter_pos);
|
String res_path = remapped_files[j].substr(0, splitter_pos);
|
||||||
remaps_changed = p_file == res_path;
|
remaps_changed = p_file == res_path;
|
||||||
if (remaps_changed) {
|
if (remaps_changed) {
|
||||||
|
|
@ -567,7 +567,7 @@ void LocalizationEditor::update_translations() {
|
||||||
PackedStringArray selected = remaps[keys[i]];
|
PackedStringArray selected = remaps[keys[i]];
|
||||||
for (int j = 0; j < selected.size(); j++) {
|
for (int j = 0; j < selected.size(); j++) {
|
||||||
const String &s2 = selected[j];
|
const String &s2 = selected[j];
|
||||||
int qp = s2.rfind(":");
|
int qp = s2.rfind_char(':');
|
||||||
String path = s2.substr(0, qp);
|
String path = s2.substr(0, qp);
|
||||||
String locale = s2.substr(qp + 1, s2.length());
|
String locale = s2.substr(qp + 1, s2.length());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -907,7 +907,7 @@ void EditorAssetLibrary::_image_request_completed(int p_status, int p_code, cons
|
||||||
for (int i = 0; i < headers.size(); i++) {
|
for (int i = 0; i < headers.size(); i++) {
|
||||||
if (headers[i].findn("ETag:") == 0) { // Save etag
|
if (headers[i].findn("ETag:") == 0) { // Save etag
|
||||||
String cache_filename_base = EditorPaths::get_singleton()->get_cache_dir().path_join("assetimage_" + image_queue[p_queue_id].image_url.md5_text());
|
String cache_filename_base = EditorPaths::get_singleton()->get_cache_dir().path_join("assetimage_" + image_queue[p_queue_id].image_url.md5_text());
|
||||||
String new_etag = headers[i].substr(headers[i].find(":") + 1, headers[i].length()).strip_edges();
|
String new_etag = headers[i].substr(headers[i].find_char(':') + 1, headers[i].length()).strip_edges();
|
||||||
Ref<FileAccess> file = FileAccess::open(cache_filename_base + ".etag", FileAccess::WRITE);
|
Ref<FileAccess> file = FileAccess::open(cache_filename_base + ".etag", FileAccess::WRITE);
|
||||||
if (file.is_valid()) {
|
if (file.is_valid()) {
|
||||||
file->store_line(new_etag);
|
file->store_line(new_etag);
|
||||||
|
|
|
||||||
|
|
@ -282,7 +282,7 @@ void ScriptTextEditor::_warning_clicked(const Variant &p_line) {
|
||||||
CodeEdit *text_editor = code_editor->get_text_editor();
|
CodeEdit *text_editor = code_editor->get_text_editor();
|
||||||
String prev_line = line > 0 ? text_editor->get_line(line - 1) : "";
|
String prev_line = line > 0 ? text_editor->get_line(line - 1) : "";
|
||||||
if (prev_line.contains("@warning_ignore")) {
|
if (prev_line.contains("@warning_ignore")) {
|
||||||
const int closing_bracket_idx = prev_line.find(")");
|
const int closing_bracket_idx = prev_line.find_char(')');
|
||||||
const String text_to_insert = ", " + code.quote(quote_style);
|
const String text_to_insert = ", " + code.quote(quote_style);
|
||||||
text_editor->insert_text(text_to_insert, line - 1, closing_bracket_idx);
|
text_editor->insert_text(text_to_insert, line - 1, closing_bracket_idx);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1205,7 +1205,7 @@ void ScriptTextEditor::_update_connected_methods() {
|
||||||
|
|
||||||
// Account for inner classes by stripping the class names from the method,
|
// Account for inner classes by stripping the class names from the method,
|
||||||
// starting from the right since our inner class might be inside of another inner class.
|
// starting from the right since our inner class might be inside of another inner class.
|
||||||
int pos = raw_name.rfind(".");
|
int pos = raw_name.rfind_char('.');
|
||||||
if (pos != -1) {
|
if (pos != -1) {
|
||||||
name = raw_name.substr(pos + 1);
|
name = raw_name.substr(pos + 1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1970,7 +1970,7 @@ void ProjectConverter3To4::process_gdscript_line(String &line, const RegExContai
|
||||||
// -- func c(var a, var b) -> func c(a, b)
|
// -- func c(var a, var b) -> func c(a, b)
|
||||||
if (line.contains("func ") && line.contains("var ")) {
|
if (line.contains("func ") && line.contains("var ")) {
|
||||||
int start = line.find("func ");
|
int start = line.find("func ");
|
||||||
start = line.substr(start).find("(") + start;
|
start = line.substr(start).find_char('(') + start;
|
||||||
int end = get_end_parenthesis(line.substr(start)) + 1;
|
int end = get_end_parenthesis(line.substr(start)) + 1;
|
||||||
if (end > -1) {
|
if (end > -1) {
|
||||||
Vector<String> parts = parse_arguments(line.substr(start, end));
|
Vector<String> parts = parse_arguments(line.substr(start, end));
|
||||||
|
|
@ -2120,12 +2120,12 @@ void ProjectConverter3To4::process_gdscript_line(String &line, const RegExContai
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// -- func _init(p_x:int).(p_x): -> func _init(p_x:int):\n\tsuper(p_x) Object # https://github.com/godotengine/godot/issues/70542
|
// -- func _init(p_x:int).(p_x): -> func _init(p_x:int):\n\tsuper(p_x) Object # https://github.com/godotengine/godot/issues/70542
|
||||||
if (line.contains(" _init(") && line.rfind(":") > 0) {
|
if (line.contains(" _init(") && line.rfind_char(':') > 0) {
|
||||||
// func _init(p_arg1).(super4, super5, super6)->void:
|
// func _init(p_arg1).(super4, super5, super6)->void:
|
||||||
// ^--^indent ^super_start super_end^
|
// ^--^indent ^super_start super_end^
|
||||||
int indent = line.count("\t", 0, line.find("func"));
|
int indent = line.count("\t", 0, line.find("func"));
|
||||||
int super_start = line.find(".(");
|
int super_start = line.find(".(");
|
||||||
int super_end = line.rfind(")");
|
int super_end = line.rfind_char(')');
|
||||||
if (super_start > 0 && super_end > super_start) {
|
if (super_start > 0 && super_end > super_start) {
|
||||||
line = line.substr(0, super_start) + line.substr(super_end + 1) + "\n" + String("\t").repeat(indent + 1) + "super" + line.substr(super_start + 1, super_end - super_start);
|
line = line.substr(0, super_start) + line.substr(super_end + 1) + "\n" + String("\t").repeat(indent + 1) + "super" + line.substr(super_start + 1, super_end - super_start);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -144,7 +144,7 @@ void ScriptCreateDialog::_notification(int p_what) {
|
||||||
|
|
||||||
void ScriptCreateDialog::_path_hbox_sorted() {
|
void ScriptCreateDialog::_path_hbox_sorted() {
|
||||||
if (is_visible()) {
|
if (is_visible()) {
|
||||||
int filename_start_pos = file_path->get_text().rfind("/") + 1;
|
int filename_start_pos = file_path->get_text().rfind_char('/') + 1;
|
||||||
int filename_end_pos = file_path->get_text().get_basename().length();
|
int filename_end_pos = file_path->get_text().get_basename().length();
|
||||||
|
|
||||||
if (!is_built_in) {
|
if (!is_built_in) {
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@ void ShaderCreateDialog::_update_language_info() {
|
||||||
|
|
||||||
void ShaderCreateDialog::_path_hbox_sorted() {
|
void ShaderCreateDialog::_path_hbox_sorted() {
|
||||||
if (is_visible()) {
|
if (is_visible()) {
|
||||||
int filename_start_pos = initial_base_path.rfind("/") + 1;
|
int filename_start_pos = initial_base_path.rfind_char('/') + 1;
|
||||||
int filename_end_pos = initial_base_path.length();
|
int filename_end_pos = initial_base_path.length();
|
||||||
|
|
||||||
if (!is_built_in) {
|
if (!is_built_in) {
|
||||||
|
|
|
||||||
|
|
@ -1598,7 +1598,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
||||||
} else if (arg.ends_with("project.godot")) {
|
} else if (arg.ends_with("project.godot")) {
|
||||||
String path;
|
String path;
|
||||||
String file = arg;
|
String file = arg;
|
||||||
int sep = MAX(file.rfind("/"), file.rfind("\\"));
|
int sep = MAX(file.rfind_char('/'), file.rfind_char('\\'));
|
||||||
if (sep == -1) {
|
if (sep == -1) {
|
||||||
path = ".";
|
path = ".";
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -4145,7 +4145,7 @@ int Main::start() {
|
||||||
local_game_path = "res://" + local_game_path;
|
local_game_path = "res://" + local_game_path;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
int sep = local_game_path.rfind("/");
|
int sep = local_game_path.rfind_char('/');
|
||||||
|
|
||||||
if (sep == -1) {
|
if (sep == -1) {
|
||||||
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||||
|
|
|
||||||
|
|
@ -140,7 +140,7 @@ void GDScriptDocGen::_doctype_from_gdtype(const GDType &p_gdtype, String &r_type
|
||||||
r_enum = String(p_gdtype.native_type).replace("::", ".");
|
r_enum = String(p_gdtype.native_type).replace("::", ".");
|
||||||
if (r_enum.begins_with("res://")) {
|
if (r_enum.begins_with("res://")) {
|
||||||
r_enum = r_enum.trim_prefix("res://");
|
r_enum = r_enum.trim_prefix("res://");
|
||||||
int dot_pos = r_enum.rfind(".");
|
int dot_pos = r_enum.rfind_char('.');
|
||||||
if (dot_pos >= 0) {
|
if (dot_pos >= 0) {
|
||||||
r_enum = r_enum.left(dot_pos).quote() + r_enum.substr(dot_pos);
|
r_enum = r_enum.left(dot_pos).quote() + r_enum.substr(dot_pos);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -163,7 +163,7 @@ Dictionary GDScriptSyntaxHighlighter::_get_line_syntax_highlighting_impl(int p_l
|
||||||
}
|
}
|
||||||
if (from + end_key_length > line_length) {
|
if (from + end_key_length > line_length) {
|
||||||
// If it's key length and there is a '\', dont skip to highlight esc chars.
|
// If it's key length and there is a '\', dont skip to highlight esc chars.
|
||||||
if (str.find("\\", from) >= 0) {
|
if (str.find_char('\\', from) >= 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -236,7 +236,7 @@ Dictionary GDScriptSyntaxHighlighter::_get_line_syntax_highlighting_impl(int p_l
|
||||||
for (; from < line_length; from++) {
|
for (; from < line_length; from++) {
|
||||||
if (line_length - from < end_key_length) {
|
if (line_length - from < end_key_length) {
|
||||||
// Don't break if '\' to highlight esc chars.
|
// Don't break if '\' to highlight esc chars.
|
||||||
if (str.find("\\", from) < 0) {
|
if (str.find_char('\\', from) < 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3472,7 +3472,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
|
||||||
}
|
}
|
||||||
String arg = arg_itr->name;
|
String arg = arg_itr->name;
|
||||||
if (arg.contains(":")) {
|
if (arg.contains(":")) {
|
||||||
arg = arg.substr(0, arg.find(":"));
|
arg = arg.substr(0, arg.find_char(':'));
|
||||||
}
|
}
|
||||||
method_hint += arg;
|
method_hint += arg;
|
||||||
if (use_type_hint) {
|
if (use_type_hint) {
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ static bool _get_blender_version(const String &p_path, int &r_major, int &r_mino
|
||||||
}
|
}
|
||||||
pipe = pipe.substr(bl);
|
pipe = pipe.substr(bl);
|
||||||
pipe = pipe.replace_first("Blender ", "");
|
pipe = pipe.replace_first("Blender ", "");
|
||||||
int pp = pipe.find(".");
|
int pp = pipe.find_char('.');
|
||||||
if (pp == -1) {
|
if (pp == -1) {
|
||||||
if (r_err) {
|
if (r_err) {
|
||||||
*r_err = vformat(TTR("Couldn't extract version information from Blender executable at: %s."), p_path);
|
*r_err = vformat(TTR("Couldn't extract version information from Blender executable at: %s."), p_path);
|
||||||
|
|
@ -96,7 +96,7 @@ static bool _get_blender_version(const String &p_path, int &r_major, int &r_mino
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pp2 = pipe.find(".", pp + 1);
|
int pp2 = pipe.find_char('.', pp + 1);
|
||||||
r_minor = pp2 > pp ? pipe.substr(pp + 1, pp2 - pp - 1).to_int() : 0;
|
r_minor = pp2 > pp ? pipe.substr(pp + 1, pp2 - pp - 1).to_int() : 0;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -689,7 +689,7 @@ void GLTFDocument::_compute_node_heights(Ref<GLTFState> p_state) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static Vector<uint8_t> _parse_base64_uri(const String &p_uri) {
|
static Vector<uint8_t> _parse_base64_uri(const String &p_uri) {
|
||||||
int start = p_uri.find(",");
|
int start = p_uri.find_char(',');
|
||||||
ERR_FAIL_COND_V(start == -1, Vector<uint8_t>());
|
ERR_FAIL_COND_V(start == -1, Vector<uint8_t>());
|
||||||
|
|
||||||
CharString substr = p_uri.substr(start + 1).ascii();
|
CharString substr = p_uri.substr(start + 1).ascii();
|
||||||
|
|
|
||||||
|
|
@ -2817,7 +2817,7 @@ Ref<Resource> ResourceFormatLoaderCSharpScript::load(const String &p_path, const
|
||||||
if (p_path.begins_with("csharp://")) {
|
if (p_path.begins_with("csharp://")) {
|
||||||
// This is a virtual path used by generic types, extract the real path.
|
// This is a virtual path used by generic types, extract the real path.
|
||||||
real_path = "res://" + p_path.trim_prefix("csharp://");
|
real_path = "res://" + p_path.trim_prefix("csharp://");
|
||||||
real_path = real_path.substr(0, real_path.rfind(":"));
|
real_path = real_path.substr(0, real_path.rfind_char(':'));
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<CSharpScript> scr;
|
Ref<CSharpScript> scr;
|
||||||
|
|
|
||||||
|
|
@ -190,7 +190,7 @@ String BindingsGenerator::bbcode_to_text(const String &p_bbcode, const TypeInter
|
||||||
|
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
while (pos < bbcode.length()) {
|
while (pos < bbcode.length()) {
|
||||||
int brk_pos = bbcode.find("[", pos);
|
int brk_pos = bbcode.find_char('[', pos);
|
||||||
|
|
||||||
if (brk_pos < 0) {
|
if (brk_pos < 0) {
|
||||||
brk_pos = bbcode.length();
|
brk_pos = bbcode.length();
|
||||||
|
|
@ -210,7 +210,7 @@ String BindingsGenerator::bbcode_to_text(const String &p_bbcode, const TypeInter
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int brk_end = bbcode.find("]", brk_pos + 1);
|
int brk_end = bbcode.find_char(']', brk_pos + 1);
|
||||||
|
|
||||||
if (brk_end == -1) {
|
if (brk_end == -1) {
|
||||||
String text = bbcode.substr(brk_pos, bbcode.length() - brk_pos);
|
String text = bbcode.substr(brk_pos, bbcode.length() - brk_pos);
|
||||||
|
|
@ -239,7 +239,7 @@ String BindingsGenerator::bbcode_to_text(const String &p_bbcode, const TypeInter
|
||||||
output.append("[");
|
output.append("[");
|
||||||
pos = brk_pos + 1;
|
pos = brk_pos + 1;
|
||||||
} else if (tag.begins_with("method ") || tag.begins_with("constructor ") || tag.begins_with("operator ") || tag.begins_with("member ") || tag.begins_with("signal ") || tag.begins_with("enum ") || tag.begins_with("constant ") || tag.begins_with("theme_item ") || tag.begins_with("param ")) {
|
} else if (tag.begins_with("method ") || tag.begins_with("constructor ") || tag.begins_with("operator ") || tag.begins_with("member ") || tag.begins_with("signal ") || tag.begins_with("enum ") || tag.begins_with("constant ") || tag.begins_with("theme_item ") || tag.begins_with("param ")) {
|
||||||
const int tag_end = tag.find(" ");
|
const int tag_end = tag.find_char(' ');
|
||||||
const String link_tag = tag.substr(0, tag_end);
|
const String link_tag = tag.substr(0, tag_end);
|
||||||
const String link_target = tag.substr(tag_end + 1, tag.length()).lstrip(" ");
|
const String link_target = tag.substr(tag_end + 1, tag.length()).lstrip(" ");
|
||||||
|
|
||||||
|
|
@ -385,7 +385,7 @@ String BindingsGenerator::bbcode_to_text(const String &p_bbcode, const TypeInter
|
||||||
pos = brk_end + 1;
|
pos = brk_end + 1;
|
||||||
tag_stack.push_front(tag);
|
tag_stack.push_front(tag);
|
||||||
} else if (tag == "url") {
|
} else if (tag == "url") {
|
||||||
int end = bbcode.find("[", brk_end);
|
int end = bbcode.find_char('[', brk_end);
|
||||||
if (end == -1) {
|
if (end == -1) {
|
||||||
end = bbcode.length();
|
end = bbcode.length();
|
||||||
}
|
}
|
||||||
|
|
@ -403,7 +403,7 @@ String BindingsGenerator::bbcode_to_text(const String &p_bbcode, const TypeInter
|
||||||
pos = brk_end + 1;
|
pos = brk_end + 1;
|
||||||
tag_stack.push_front("url");
|
tag_stack.push_front("url");
|
||||||
} else if (tag == "img") {
|
} else if (tag == "img") {
|
||||||
int end = bbcode.find("[", brk_end);
|
int end = bbcode.find_char('[', brk_end);
|
||||||
if (end == -1) {
|
if (end == -1) {
|
||||||
end = bbcode.length();
|
end = bbcode.length();
|
||||||
}
|
}
|
||||||
|
|
@ -455,7 +455,7 @@ String BindingsGenerator::bbcode_to_xml(const String &p_bbcode, const TypeInterf
|
||||||
|
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
while (pos < bbcode.length()) {
|
while (pos < bbcode.length()) {
|
||||||
int brk_pos = bbcode.find("[", pos);
|
int brk_pos = bbcode.find_char('[', pos);
|
||||||
|
|
||||||
if (brk_pos < 0) {
|
if (brk_pos < 0) {
|
||||||
brk_pos = bbcode.length();
|
brk_pos = bbcode.length();
|
||||||
|
|
@ -488,7 +488,7 @@ String BindingsGenerator::bbcode_to_xml(const String &p_bbcode, const TypeInterf
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int brk_end = bbcode.find("]", brk_pos + 1);
|
int brk_end = bbcode.find_char(']', brk_pos + 1);
|
||||||
|
|
||||||
if (brk_end == -1) {
|
if (brk_end == -1) {
|
||||||
if (!line_del) {
|
if (!line_del) {
|
||||||
|
|
@ -551,7 +551,7 @@ String BindingsGenerator::bbcode_to_xml(const String &p_bbcode, const TypeInterf
|
||||||
xml_output.append("[");
|
xml_output.append("[");
|
||||||
pos = brk_pos + 1;
|
pos = brk_pos + 1;
|
||||||
} else if (tag.begins_with("method ") || tag.begins_with("constructor ") || tag.begins_with("operator ") || tag.begins_with("member ") || tag.begins_with("signal ") || tag.begins_with("enum ") || tag.begins_with("constant ") || tag.begins_with("theme_item ") || tag.begins_with("param ")) {
|
} else if (tag.begins_with("method ") || tag.begins_with("constructor ") || tag.begins_with("operator ") || tag.begins_with("member ") || tag.begins_with("signal ") || tag.begins_with("enum ") || tag.begins_with("constant ") || tag.begins_with("theme_item ") || tag.begins_with("param ")) {
|
||||||
const int tag_end = tag.find(" ");
|
const int tag_end = tag.find_char(' ');
|
||||||
const String link_tag = tag.substr(0, tag_end);
|
const String link_tag = tag.substr(0, tag_end);
|
||||||
const String link_target = tag.substr(tag_end + 1, tag.length()).lstrip(" ");
|
const String link_target = tag.substr(tag_end + 1, tag.length()).lstrip(" ");
|
||||||
|
|
||||||
|
|
@ -696,7 +696,7 @@ String BindingsGenerator::bbcode_to_xml(const String &p_bbcode, const TypeInterf
|
||||||
pos = brk_end + 1;
|
pos = brk_end + 1;
|
||||||
tag_stack.push_front(tag);
|
tag_stack.push_front(tag);
|
||||||
} else if (tag == "code" || tag.begins_with("code ")) {
|
} else if (tag == "code" || tag.begins_with("code ")) {
|
||||||
int end = bbcode.find("[", brk_end);
|
int end = bbcode.find_char('[', brk_end);
|
||||||
if (end == -1) {
|
if (end == -1) {
|
||||||
end = bbcode.length();
|
end = bbcode.length();
|
||||||
}
|
}
|
||||||
|
|
@ -751,7 +751,7 @@ String BindingsGenerator::bbcode_to_xml(const String &p_bbcode, const TypeInterf
|
||||||
pos = brk_end + 1;
|
pos = brk_end + 1;
|
||||||
tag_stack.push_front(tag);
|
tag_stack.push_front(tag);
|
||||||
} else if (tag == "url") {
|
} else if (tag == "url") {
|
||||||
int end = bbcode.find("[", brk_end);
|
int end = bbcode.find_char('[', brk_end);
|
||||||
if (end == -1) {
|
if (end == -1) {
|
||||||
end = bbcode.length();
|
end = bbcode.length();
|
||||||
}
|
}
|
||||||
|
|
@ -772,7 +772,7 @@ String BindingsGenerator::bbcode_to_xml(const String &p_bbcode, const TypeInterf
|
||||||
pos = brk_end + 1;
|
pos = brk_end + 1;
|
||||||
tag_stack.push_front("url");
|
tag_stack.push_front("url");
|
||||||
} else if (tag == "img") {
|
} else if (tag == "img") {
|
||||||
int end = bbcode.find("[", brk_end);
|
int end = bbcode.find_char('[', brk_end);
|
||||||
if (end == -1) {
|
if (end == -1) {
|
||||||
end = bbcode.length();
|
end = bbcode.length();
|
||||||
}
|
}
|
||||||
|
|
@ -1619,7 +1619,7 @@ void BindingsGenerator::_generate_global_constants(StringBuilder &p_output) {
|
||||||
|
|
||||||
bool enum_in_static_class = false;
|
bool enum_in_static_class = false;
|
||||||
|
|
||||||
if (enum_proxy_name.find(".") > 0) {
|
if (enum_proxy_name.find_char('.') > 0) {
|
||||||
enum_in_static_class = true;
|
enum_in_static_class = true;
|
||||||
String enum_class_name = enum_proxy_name.get_slicec('.', 0);
|
String enum_class_name = enum_proxy_name.get_slicec('.', 0);
|
||||||
enum_proxy_name = enum_proxy_name.get_slicec('.', 1);
|
enum_proxy_name = enum_proxy_name.get_slicec('.', 1);
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@ PackedStringArray get_code_completion(CompletionKind p_kind, const String &p_scr
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
String name = prop.name.substr(prop.name.find("/") + 1, prop.name.length());
|
String name = prop.name.substr(prop.name.find_char('/') + 1, prop.name.length());
|
||||||
suggestions.push_back(quoted(name));
|
suggestions.push_back(quoted(name));
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
|
||||||
|
|
@ -212,7 +212,7 @@ String relative_to_impl(const String &p_path, const String &p_relative_to) {
|
||||||
#ifdef WINDOWS_ENABLED
|
#ifdef WINDOWS_ENABLED
|
||||||
String get_drive_letter(const String &p_norm_path) {
|
String get_drive_letter(const String &p_norm_path) {
|
||||||
int idx = p_norm_path.find(":/");
|
int idx = p_norm_path.find(":/");
|
||||||
if (idx != -1 && idx < p_norm_path.find("/")) {
|
if (idx != -1 && idx < p_norm_path.find_char('/')) {
|
||||||
return p_norm_path.substr(0, idx + 1);
|
return p_norm_path.substr(0, idx + 1);
|
||||||
}
|
}
|
||||||
return String();
|
return String();
|
||||||
|
|
|
||||||
|
|
@ -375,7 +375,7 @@ void ReplicationEditor::_add_pressed() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int idx = np_text.find(":");
|
int idx = np_text.find_char(':');
|
||||||
if (idx == -1) {
|
if (idx == -1) {
|
||||||
np_text = ".:" + np_text;
|
np_text = ".:" + np_text;
|
||||||
} else if (idx == 0) {
|
} else if (idx == 0) {
|
||||||
|
|
@ -554,7 +554,7 @@ void ReplicationEditor::_add_property(const NodePath &p_property, bool p_spawn,
|
||||||
Node *root_node = current && !current->get_root_path().is_empty() ? current->get_node(current->get_root_path()) : nullptr;
|
Node *root_node = current && !current->get_root_path().is_empty() ? current->get_node(current->get_root_path()) : nullptr;
|
||||||
Ref<Texture2D> icon = _get_class_icon(root_node);
|
Ref<Texture2D> icon = _get_class_icon(root_node);
|
||||||
if (root_node) {
|
if (root_node) {
|
||||||
String path = prop.substr(0, prop.find(":"));
|
String path = prop.substr(0, prop.find_char(':'));
|
||||||
String subpath = prop.substr(path.size());
|
String subpath = prop.substr(path.size());
|
||||||
Node *node = root_node->get_node_or_null(path);
|
Node *node = root_node->get_node_or_null(path);
|
||||||
if (!node) {
|
if (!node) {
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ void ImageLoaderSVG::_replace_color_property(const HashMap<Color, Color> &p_colo
|
||||||
int pos = r_string.find(p_prefix);
|
int pos = r_string.find(p_prefix);
|
||||||
while (pos != -1) {
|
while (pos != -1) {
|
||||||
pos += prefix_len; // Skip prefix.
|
pos += prefix_len; // Skip prefix.
|
||||||
int end_pos = r_string.find("\"", pos);
|
int end_pos = r_string.find_char('"', pos);
|
||||||
ERR_FAIL_COND_MSG(end_pos == -1, vformat("Malformed SVG string after property \"%s\".", p_prefix));
|
ERR_FAIL_COND_MSG(end_pos == -1, vformat("Malformed SVG string after property \"%s\".", p_prefix));
|
||||||
const String color_code = r_string.substr(pos, end_pos - pos);
|
const String color_code = r_string.substr(pos, end_pos - pos);
|
||||||
if (color_code != "none" && !color_code.begins_with("url(")) {
|
if (color_code != "none" && !color_code.begins_with("url(")) {
|
||||||
|
|
|
||||||
|
|
@ -1564,7 +1564,7 @@ void EditorExportPlatformAndroid::_fix_resources(const Ref<EditorExportPreset> &
|
||||||
str = get_project_name(package_name);
|
str = get_project_name(package_name);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
String lang = str.substr(str.rfind("-") + 1, str.length()).replace("-", "_");
|
String lang = str.substr(str.rfind_char('-') + 1, str.length()).replace("-", "_");
|
||||||
if (appnames.has(lang)) {
|
if (appnames.has(lang)) {
|
||||||
str = appnames[lang];
|
str = appnames[lang];
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -970,7 +970,7 @@ Error EditorExportPlatformMacOS::_notarize(const Ref<EditorExportPreset> &p_pres
|
||||||
return Error::FAILED;
|
return Error::FAILED;
|
||||||
} else {
|
} else {
|
||||||
print_verbose("rcodesign (" + p_path + "):\n" + str);
|
print_verbose("rcodesign (" + p_path + "):\n" + str);
|
||||||
int next_nl = str.find("\n", rq_offset);
|
int next_nl = str.find_char('\n', rq_offset);
|
||||||
String request_uuid = (next_nl == -1) ? str.substr(rq_offset + 23, -1) : str.substr(rq_offset + 23, next_nl - rq_offset - 23);
|
String request_uuid = (next_nl == -1) ? str.substr(rq_offset + 23, -1) : str.substr(rq_offset + 23, next_nl - rq_offset - 23);
|
||||||
add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), vformat(TTR("Notarization request UUID: \"%s\""), request_uuid));
|
add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), vformat(TTR("Notarization request UUID: \"%s\""), request_uuid));
|
||||||
add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), TTR("The notarization process generally takes less than an hour."));
|
add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), TTR("The notarization process generally takes less than an hour."));
|
||||||
|
|
@ -1054,7 +1054,7 @@ Error EditorExportPlatformMacOS::_notarize(const Ref<EditorExportPreset> &p_pres
|
||||||
return Error::FAILED;
|
return Error::FAILED;
|
||||||
} else {
|
} else {
|
||||||
print_verbose("notarytool (" + p_path + "):\n" + str);
|
print_verbose("notarytool (" + p_path + "):\n" + str);
|
||||||
int next_nl = str.find("\n", rq_offset);
|
int next_nl = str.find_char('\n', rq_offset);
|
||||||
String request_uuid = (next_nl == -1) ? str.substr(rq_offset + 4, -1) : str.substr(rq_offset + 4, next_nl - rq_offset - 4);
|
String request_uuid = (next_nl == -1) ? str.substr(rq_offset + 4, -1) : str.substr(rq_offset + 4, next_nl - rq_offset - 4);
|
||||||
add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), vformat(TTR("Notarization request UUID: \"%s\""), request_uuid));
|
add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), vformat(TTR("Notarization request UUID: \"%s\""), request_uuid));
|
||||||
add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), TTR("The notarization process generally takes less than an hour."));
|
add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), TTR("The notarization process generally takes less than an hour."));
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ void WebToolsEditorPlugin::_download_zip() {
|
||||||
const String output_path = String("/tmp").path_join(output_name);
|
const String output_path = String("/tmp").path_join(output_name);
|
||||||
|
|
||||||
zipFile zip = zipOpen2(output_path.utf8().get_data(), APPEND_STATUS_CREATE, nullptr, &io);
|
zipFile zip = zipOpen2(output_path.utf8().get_data(), APPEND_STATUS_CREATE, nullptr, &io);
|
||||||
const String base_path = resource_path.substr(0, resource_path.rfind("/")) + "/";
|
const String base_path = resource_path.substr(0, resource_path.rfind_char('/')) + "/";
|
||||||
_zip_recursive(resource_path, base_path, zip);
|
_zip_recursive(resource_path, base_path, zip);
|
||||||
zipClose(zip, nullptr);
|
zipClose(zip, nullptr);
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ void FileDialog::popup_file_dialog() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileDialog::_focus_file_text() {
|
void FileDialog::_focus_file_text() {
|
||||||
int lp = file->get_text().rfind(".");
|
int lp = file->get_text().rfind_char('.');
|
||||||
if (lp != -1) {
|
if (lp != -1) {
|
||||||
file->select(0, lp);
|
file->select(0, lp);
|
||||||
if (file->is_inside_tree() && !is_part_of_edited_scene()) {
|
if (file->is_inside_tree() && !is_part_of_edited_scene()) {
|
||||||
|
|
@ -1001,7 +1001,7 @@ void FileDialog::set_current_path(const String &p_path) {
|
||||||
if (!p_path.size()) {
|
if (!p_path.size()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int pos = MAX(p_path.rfind("/"), p_path.rfind("\\"));
|
int pos = MAX(p_path.rfind_char('/'), p_path.rfind_char('\\'));
|
||||||
if (pos == -1) {
|
if (pos == -1) {
|
||||||
set_current_file(p_path);
|
set_current_file(p_path);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -4845,7 +4845,7 @@ void RichTextLabel::append_text(const String &p_bbcode) {
|
||||||
String tooltip;
|
String tooltip;
|
||||||
bool size_in_percent = false;
|
bool size_in_percent = false;
|
||||||
if (!bbcode_value.is_empty()) {
|
if (!bbcode_value.is_empty()) {
|
||||||
int sep = bbcode_value.find("x");
|
int sep = bbcode_value.find_char('x');
|
||||||
if (sep == -1) {
|
if (sep == -1) {
|
||||||
width = bbcode_value.to_int();
|
width = bbcode_value.to_int();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ String HTTPRequest::get_header_value(const PackedStringArray &p_headers, const S
|
||||||
|
|
||||||
String lowwer_case_header_name = p_header_name.to_lower();
|
String lowwer_case_header_name = p_header_name.to_lower();
|
||||||
for (int i = 0; i < p_headers.size(); i++) {
|
for (int i = 0; i < p_headers.size(); i++) {
|
||||||
if (p_headers[i].find(":") > 0) {
|
if (p_headers[i].find_char(':') > 0) {
|
||||||
Vector<String> parts = p_headers[i].split(":", false, 1);
|
Vector<String> parts = p_headers[i].split(":", false, 1);
|
||||||
if (parts.size() > 1 && parts[0].strip_edges().to_lower() == lowwer_case_header_name) {
|
if (parts.size() > 1 && parts[0].strip_edges().to_lower() == lowwer_case_header_name) {
|
||||||
value = parts[1].strip_edges();
|
value = parts[1].strip_edges();
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,7 @@ Variant PropertyUtils::get_property_default_value(const Object *p_object, const
|
||||||
// Heuristically check if this is a synthetic property (whatever/0, whatever/1, etc.)
|
// Heuristically check if this is a synthetic property (whatever/0, whatever/1, etc.)
|
||||||
// because they are not in the class DB yet must have a default (null).
|
// because they are not in the class DB yet must have a default (null).
|
||||||
String prop_str = String(p_property);
|
String prop_str = String(p_property);
|
||||||
int p = prop_str.rfind("/");
|
int p = prop_str.rfind_char('/');
|
||||||
if (p != -1 && p < prop_str.length() - 1) {
|
if (p != -1 && p < prop_str.length() - 1) {
|
||||||
bool all_digits = true;
|
bool all_digits = true;
|
||||||
for (int i = p + 1; i < prop_str.length(); i++) {
|
for (int i = p + 1; i < prop_str.length(); i++) {
|
||||||
|
|
|
||||||
|
|
@ -1734,7 +1734,7 @@ Error FontFile::_load_bitmap_font(const String &p_path, List<String> *r_image_fi
|
||||||
while (true) {
|
while (true) {
|
||||||
String line = f->get_line();
|
String line = f->get_line();
|
||||||
|
|
||||||
int delimiter = line.find(" ");
|
int delimiter = line.find_char(' ');
|
||||||
String type = line.substr(0, delimiter);
|
String type = line.substr(0, delimiter);
|
||||||
int pos = delimiter + 1;
|
int pos = delimiter + 1;
|
||||||
HashMap<String, String> keys;
|
HashMap<String, String> keys;
|
||||||
|
|
@ -1744,7 +1744,7 @@ Error FontFile::_load_bitmap_font(const String &p_path, List<String> *r_image_fi
|
||||||
}
|
}
|
||||||
|
|
||||||
while (pos < line.size()) {
|
while (pos < line.size()) {
|
||||||
int eq = line.find("=", pos);
|
int eq = line.find_char('=', pos);
|
||||||
if (eq == -1) {
|
if (eq == -1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -1752,14 +1752,14 @@ Error FontFile::_load_bitmap_font(const String &p_path, List<String> *r_image_fi
|
||||||
int end = -1;
|
int end = -1;
|
||||||
String value;
|
String value;
|
||||||
if (line[eq + 1] == '"') {
|
if (line[eq + 1] == '"') {
|
||||||
end = line.find("\"", eq + 2);
|
end = line.find_char('"', eq + 2);
|
||||||
if (end == -1) {
|
if (end == -1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
value = line.substr(eq + 2, end - 1 - eq - 1);
|
value = line.substr(eq + 2, end - 1 - eq - 1);
|
||||||
pos = end + 1;
|
pos = end + 1;
|
||||||
} else {
|
} else {
|
||||||
end = line.find(" ", eq + 1);
|
end = line.find_char(' ', eq + 1);
|
||||||
if (end == -1) {
|
if (end == -1) {
|
||||||
end = line.size();
|
end = line.size();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1315,7 +1315,7 @@ bool ArrayMesh::_set(const StringName &p_name, const Variant &p_value) {
|
||||||
String sname = p_name;
|
String sname = p_name;
|
||||||
|
|
||||||
if (sname.begins_with("surface_")) {
|
if (sname.begins_with("surface_")) {
|
||||||
int sl = sname.find("/");
|
int sl = sname.find_char('/');
|
||||||
if (sl == -1) {
|
if (sl == -1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -1708,7 +1708,7 @@ bool ArrayMesh::_get(const StringName &p_name, Variant &r_ret) const {
|
||||||
|
|
||||||
String sname = p_name;
|
String sname = p_name;
|
||||||
if (sname.begins_with("surface_")) {
|
if (sname.begins_with("surface_")) {
|
||||||
int sl = sname.find("/");
|
int sl = sname.find_char('/');
|
||||||
if (sl == -1) {
|
if (sl == -1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -822,10 +822,10 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Has
|
||||||
value = missing_resource_properties[E.name];
|
value = missing_resource_properties[E.name];
|
||||||
}
|
}
|
||||||
} else if (E.type == Variant::ARRAY && E.hint == PROPERTY_HINT_TYPE_STRING) {
|
} else if (E.type == Variant::ARRAY && E.hint == PROPERTY_HINT_TYPE_STRING) {
|
||||||
int hint_subtype_separator = E.hint_string.find(":");
|
int hint_subtype_separator = E.hint_string.find_char(':');
|
||||||
if (hint_subtype_separator >= 0) {
|
if (hint_subtype_separator >= 0) {
|
||||||
String subtype_string = E.hint_string.substr(0, hint_subtype_separator);
|
String subtype_string = E.hint_string.substr(0, hint_subtype_separator);
|
||||||
int slash_pos = subtype_string.find("/");
|
int slash_pos = subtype_string.find_char('/');
|
||||||
PropertyHint subtype_hint = PropertyHint::PROPERTY_HINT_NONE;
|
PropertyHint subtype_hint = PropertyHint::PROPERTY_HINT_NONE;
|
||||||
if (slash_pos >= 0) {
|
if (slash_pos >= 0) {
|
||||||
subtype_hint = PropertyHint(subtype_string.get_slice("/", 1).to_int());
|
subtype_hint = PropertyHint(subtype_string.get_slice("/", 1).to_int());
|
||||||
|
|
@ -851,11 +851,11 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Has
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (E.type == Variant::DICTIONARY && E.hint == PROPERTY_HINT_TYPE_STRING) {
|
} else if (E.type == Variant::DICTIONARY && E.hint == PROPERTY_HINT_TYPE_STRING) {
|
||||||
int key_value_separator = E.hint_string.find(";");
|
int key_value_separator = E.hint_string.find_char(';');
|
||||||
if (key_value_separator >= 0) {
|
if (key_value_separator >= 0) {
|
||||||
int key_subtype_separator = E.hint_string.find(":");
|
int key_subtype_separator = E.hint_string.find_char(':');
|
||||||
String key_subtype_string = E.hint_string.substr(0, key_subtype_separator);
|
String key_subtype_string = E.hint_string.substr(0, key_subtype_separator);
|
||||||
int key_slash_pos = key_subtype_string.find("/");
|
int key_slash_pos = key_subtype_string.find_char('/');
|
||||||
PropertyHint key_subtype_hint = PropertyHint::PROPERTY_HINT_NONE;
|
PropertyHint key_subtype_hint = PropertyHint::PROPERTY_HINT_NONE;
|
||||||
if (key_slash_pos >= 0) {
|
if (key_slash_pos >= 0) {
|
||||||
key_subtype_hint = PropertyHint(key_subtype_string.get_slice("/", 1).to_int());
|
key_subtype_hint = PropertyHint(key_subtype_string.get_slice("/", 1).to_int());
|
||||||
|
|
@ -864,9 +864,9 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Has
|
||||||
Variant::Type key_subtype = Variant::Type(key_subtype_string.to_int());
|
Variant::Type key_subtype = Variant::Type(key_subtype_string.to_int());
|
||||||
bool convert_key = key_subtype == Variant::OBJECT && key_subtype_hint == PROPERTY_HINT_NODE_TYPE;
|
bool convert_key = key_subtype == Variant::OBJECT && key_subtype_hint == PROPERTY_HINT_NODE_TYPE;
|
||||||
|
|
||||||
int value_subtype_separator = E.hint_string.find(":", key_value_separator) - (key_value_separator + 1);
|
int value_subtype_separator = E.hint_string.find_char(':', key_value_separator) - (key_value_separator + 1);
|
||||||
String value_subtype_string = E.hint_string.substr(key_value_separator + 1, value_subtype_separator);
|
String value_subtype_string = E.hint_string.substr(key_value_separator + 1, value_subtype_separator);
|
||||||
int value_slash_pos = value_subtype_string.find("/");
|
int value_slash_pos = value_subtype_string.find_char('/');
|
||||||
PropertyHint value_subtype_hint = PropertyHint::PROPERTY_HINT_NONE;
|
PropertyHint value_subtype_hint = PropertyHint::PROPERTY_HINT_NONE;
|
||||||
if (value_slash_pos >= 0) {
|
if (value_slash_pos >= 0) {
|
||||||
value_subtype_hint = PropertyHint(value_subtype_string.get_slice("/", 1).to_int());
|
value_subtype_hint = PropertyHint(value_subtype_string.get_slice("/", 1).to_int());
|
||||||
|
|
|
||||||
|
|
@ -1782,7 +1782,7 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path, const Ref<Reso
|
||||||
for (KeyValue<Ref<Resource>, String> &E : external_resources) {
|
for (KeyValue<Ref<Resource>, String> &E : external_resources) {
|
||||||
String cached_id = E.key->get_id_for_path(local_path);
|
String cached_id = E.key->get_id_for_path(local_path);
|
||||||
if (cached_id.is_empty() || cached_ids_found.has(cached_id)) {
|
if (cached_id.is_empty() || cached_ids_found.has(cached_id)) {
|
||||||
int sep_pos = E.value.find("_");
|
int sep_pos = E.value.find_char('_');
|
||||||
if (sep_pos != -1) {
|
if (sep_pos != -1) {
|
||||||
E.value = E.value.substr(0, sep_pos + 1); // Keep the order found, for improved thread loading performance.
|
E.value = E.value.substr(0, sep_pos + 1); // Keep the order found, for improved thread loading performance.
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -205,7 +205,7 @@ Dictionary CodeHighlighter::_get_line_syntax_highlighting_impl(int p_line) {
|
||||||
if (end_key_length == 0 || color_regions[c].line_only || from + end_key_length > line_length) {
|
if (end_key_length == 0 || color_regions[c].line_only || from + end_key_length > line_length) {
|
||||||
if (from + end_key_length > line_length && (color_regions[in_region].start_key == "\"" || color_regions[in_region].start_key == "\'")) {
|
if (from + end_key_length > line_length && (color_regions[in_region].start_key == "\"" || color_regions[in_region].start_key == "\'")) {
|
||||||
// If it's key length and there is a '\', dont skip to highlight esc chars.
|
// If it's key length and there is a '\', dont skip to highlight esc chars.
|
||||||
if (str.find("\\", from) >= 0) {
|
if (str.find_char('\\', from) >= 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -242,7 +242,7 @@ Dictionary CodeHighlighter::_get_line_syntax_highlighting_impl(int p_line) {
|
||||||
for (; from < line_length; from++) {
|
for (; from < line_length; from++) {
|
||||||
if (line_length - from < end_key_length) {
|
if (line_length - from < end_key_length) {
|
||||||
// Don't break if '\' to highlight esc chars.
|
// Don't break if '\' to highlight esc chars.
|
||||||
if (!is_string || str.find("\\", from) < 0) {
|
if (!is_string || str.find_char('\\', from) < 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue