[vala] glib-2.0: Add string.index_of



commit 9c9c5a178cca7ddb221336597585f0c75d570333
Author: Jürg Billeter <j bitron ch>
Date:   Sat Jan 15 21:11:31 2011 +0100

    glib-2.0: Add string.index_of
    
    This deprecates string.str.

 codegen/valadbusmodule.vala     |    2 +-
 codegen/valagvariantmodule.vala |    2 +-
 vala/valasymbol.vala            |    2 +-
 vapi/glib-2.0.vapi              |   17 ++++++++++++++++-
 4 files changed, 19 insertions(+), 4 deletions(-)
---
diff --git a/codegen/valadbusmodule.vala b/codegen/valadbusmodule.vala
index e4d2233..8c658f4 100644
--- a/codegen/valadbusmodule.vala
+++ b/codegen/valadbusmodule.vala
@@ -136,7 +136,7 @@ public class Vala.DBusModule : GAsyncModule {
 			}
 
 			var type_args = datatype.get_type_arguments ();
-			if (sig != null && sig.str ("%s") != null && type_args.size > 0) {
+			if (sig != null && "%s" in sig && type_args.size > 0) {
 				string element_sig = "";
 				foreach (DataType type_arg in type_args) {
 					var s = get_type_signature (type_arg);
diff --git a/codegen/valagvariantmodule.vala b/codegen/valagvariantmodule.vala
index fcc5f54..9a5fe30 100644
--- a/codegen/valagvariantmodule.vala
+++ b/codegen/valagvariantmodule.vala
@@ -132,7 +132,7 @@ public class Vala.GVariantModule : GAsyncModule {
 			}
 
 			var type_args = datatype.get_type_arguments ();
-			if (sig != null && sig.str ("%s") != null && type_args.size > 0) {
+			if (sig != null && "%s" in sig && type_args.size > 0) {
 				string element_sig = "";
 				foreach (DataType type_arg in type_args) {
 					var s = get_type_signature (type_arg);
diff --git a/vala/valasymbol.vala b/vala/valasymbol.vala
index e65f37a..eb3b434 100644
--- a/vala/valasymbol.vala
+++ b/vala/valasymbol.vala
@@ -217,7 +217,7 @@ public abstract class Vala.Symbol : CodeNode {
 
 		string parent_gir_name = parent_symbol.get_full_gir_name ();
 		string self_gir_name = gir_name.has_prefix (".") ? gir_name.substring (1) : gir_name;
-		if (parent_gir_name.str (".") != null) {
+		if ("." in parent_gir_name) {
 			return "%s%s".printf (parent_gir_name, self_gir_name);
 		} else {
 			return "%s.%s".printf (parent_gir_name, self_gir_name);
diff --git a/vapi/glib-2.0.vapi b/vapi/glib-2.0.vapi
index 5643c2d..b5fe72c 100644
--- a/vapi/glib-2.0.vapi
+++ b/vapi/glib-2.0.vapi
@@ -955,12 +955,27 @@ public enum NormalizeMode {
 [GIR (name = "utf8")]
 [CCode (cname = "gchar", const_cname = "const gchar", copy_function = "g_strdup", free_function = "g_free", cheader_filename = "stdlib.h,string.h,glib.h", type_id = "G_TYPE_STRING", marshaller_type_name = "STRING", param_spec_function = "g_param_spec_string", get_value_function = "g_value_get_string", set_value_function = "g_value_set_string", take_value_function = "g_value_take_string", type_signature = "s")]
 public class string {
+	[Deprecated (replacement = "string.index_of")]
 	[CCode (cname = "strstr")]
 	public unowned string? str (string needle);
 	[CCode (cname = "g_strrstr")]
 	public unowned string? rstr (string needle);
 	[CCode (cname = "g_strrstr_len")]
 	public unowned string? rstr_len (ssize_t haystack_len, string needle);
+
+	[CCode (cname = "strstr")]
+	static char* strstr (char* haystack, char* needle);
+
+	public int index_of (string needle, int start_index = 0) {
+		char* result = strstr ((char*) this + start_index, (char*) needle);
+
+		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")]
@@ -1209,7 +1224,7 @@ public class string {
 	}
 
 	public bool contains (string needle) {
-		return this.str (needle) != null;
+		return strstr ((char*) this, (char*) needle) != null;
 	}
 
 	public string replace (string old, string replacement) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]