Forráskód Böngészése

[str.h] Adding function to get a slice of str

Vinicius Teshima 1 éve
szülő
commit
054e6d4a35
1 módosított fájl, 25 hozzáadás és 0 törlés
  1. 25 0
      src/str.h

+ 25 - 0
src/str.h

@@ -25,6 +25,8 @@ struct str str_strip(struct str str);
 struct str_tokenizer str_tokenize(struct str str, char c);
 struct str str_tokenizer_next(struct str_tokenizer *st);
 
+struct str str_slice(struct str str, size_t from, size_t to);
+
 bool str_eq_cstr(struct str str, const char *cstr, size_t cstr_size);
 
 #if defined(IMP) || defined(IMP_STR)
@@ -124,6 +126,29 @@ ret_err:
 	return str;
 }
 
+struct str 
+str_slice(struct str str, size_t from, size_t to)
+{
+	if ( from > str.size ) {
+		goto ret_err;
+	}
+	if ( from > to ) {
+		goto ret_err;
+	}
+
+	to = ( to > str.size ) * str.size \
+	     + ( to <= str.size ) * to;
+	
+	str.data += from;
+	str.size = from - to;
+
+	return str;
+
+ret_err:
+	str.data = "";
+	str.size = (size_t) -2;
+	return str;
+}
 
 bool 
 str_eq_cstr(struct str str, const char *cstr, size_t cstr_size)