From: Jürg Billeter Date: Thu, 20 Jan 2011 21:10:27 +0000 (+0100) Subject: glib-2.0: Add string.last_index_of_char X-Git-Tag: 0.11.5~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f586e13e182eee9d73e6d44fb3f4439fad4b5114;p=thirdparty%2Fvala.git glib-2.0: Add string.last_index_of_char This deprecates string.rchr. --- diff --git a/compiler/valacompiler.vala b/compiler/valacompiler.vala index 1a4a9df19..95e6d198f 100644 --- a/compiler/valacompiler.vala +++ b/compiler/valacompiler.vala @@ -159,8 +159,8 @@ class Vala.Compiler { if (!ccode_only && !compile_only && output == null) { // strip extension if there is one // else we use the default output file of the C compiler - if (sources[0].rchr (-1, '.') != null) { - long dot = (long) ((char*) sources[0].rchr (-1, '.') - (char*) sources[0]); + if (sources[0].last_index_of_char ('.') != -1) { + int dot = sources[0].last_index_of_char ('.'); output = Path.get_basename (sources[0].substring (0, dot)); } } @@ -375,14 +375,13 @@ class Vala.Compiler { if (gir != null) { if (context.profile == Profile.GOBJECT) { long gir_len = gir.length; - unowned string? last_hyphen = gir.rchr (gir_len, '-'); + int last_hyphen = gir.last_index_of_char ('-'); - if (last_hyphen == null || !gir.has_suffix (".gir")) { + if (last_hyphen == -1 || !gir.has_suffix (".gir")) { Report.error (null, "GIR file name `%s' is not well-formed, expected NAME-VERSION.gir".printf (gir)); } else { - long offset = (long) ((char*) last_hyphen - (char*) gir); - string gir_namespace = gir.substring (0, offset); - string gir_version = gir.substring (offset + 1, gir_len - offset - 5); + string gir_namespace = gir.substring (0, last_hyphen); + string gir_version = gir.substring (last_hyphen + 1, gir_len - last_hyphen - 5); gir_version.canon ("0123456789.", '?'); if (gir_namespace == "" || gir_version == "" || !gir_version[0].isdigit () || gir_version.contains ("?")) { Report.error (null, "GIR file name `%s' is not well-formed, expected NAME-VERSION.gir".printf (gir)); diff --git a/vala/valasourcefile.vala b/vala/valasourcefile.vala index 8ab0e2f2f..3c0eb3929 100644 --- a/vala/valasourcefile.vala +++ b/vala/valasourcefile.vala @@ -193,7 +193,7 @@ public class Vala.SourceFile { } private string get_basename () { - long dot = (long) ((char*) filename.rchr (-1, '.') - (char*) filename); + int dot = filename.last_index_of_char ('.'); return Path.get_basename (filename.substring (0, dot)); } diff --git a/vapi/glib-2.0.vapi b/vapi/glib-2.0.vapi index 628192b88..71846b1d9 100644 --- a/vapi/glib-2.0.vapi +++ b/vapi/glib-2.0.vapi @@ -970,6 +970,8 @@ public class string { static char* strrstr (char* haystack, char* needle); [CCode (cname = "g_utf8_strchr")] static char* utf8_strchr (char* str, ssize_t len, unichar c); + [CCode (cname = "g_utf8_strrchr")] + static char* utf8_strrchr (char* str, ssize_t len, unichar c); public int index_of (string needle, int start_index = 0) { char* result = strstr ((char*) this + start_index, (char*) needle); @@ -1001,6 +1003,16 @@ public class string { } } + public int last_index_of_char (unichar c, int start_index = 0) { + char* result = utf8_strrchr ((char*) this + start_index, -1, c); + + if (result != null) { + return (int) (result - (char*) this); + } else { + return -1; + } + } + [CCode (cname = "g_str_has_prefix")] public bool has_prefix (string prefix); [CCode (cname = "g_str_has_suffix")] @@ -1080,6 +1092,7 @@ public class string { [Deprecated (replacement = "string.index_of_char")] [CCode (cname = "g_utf8_strchr")] public unowned string chr (ssize_t len, unichar c); + [Deprecated (replacement = "string.last_index_of_char")] [CCode (cname = "g_utf8_strrchr")] public unowned string rchr (ssize_t len, unichar c); [CCode (cname = "g_utf8_strreverse")]