Daniele Bartolini 10 سال پیش
والد
کامیت
a60f13d669
2فایلهای تغییر یافته به همراه25 افزوده شده و 72 حذف شده
  1. 25 20
      src/core/strings/path.cpp
  2. 0 52
      src/core/strings/string_utils.h

+ 25 - 20
src/core/strings/path.cpp

@@ -99,15 +99,16 @@ namespace path
 		CE_ASSERT(path != NULL, "Path must be != NULL");
 		CE_ASSERT(str != NULL, "Str must be != NULL");
 
-		const char* last_separator = find_last(path, '/');
+		const char* last_separator = strrchr(path, '/');
+		const char* end = path + strlen(path) + 1;
 
-		if (last_separator == end(path))
+		if (last_separator == end)
 		{
 			strncpy(str, "", len);
 		}
 		else
 		{
-			substring(begin(path), last_separator, str, len);
+			substring(path, last_separator, str, len);
 		}
 	}
 
@@ -124,15 +125,16 @@ namespace path
 		CE_ASSERT(path != NULL, "Path must be != NULL");
 		CE_ASSERT(str != NULL, "Str must be != NULL");
 
-		const char* last_separator = find_last(path, '/');
+		const char* last_separator = strrchr(path, '/');
+		const char* end = str + strlen(path) + 1;
 
-		if (last_separator == end(path))
+		if (last_separator == end)
 		{
 			strncpy(str, "", len);
 		}
 		else
 		{
-			substring(last_separator + 1, end(path), str, len);
+			substring(last_separator + 1, end, str, len);
 		}
 	}
 
@@ -148,18 +150,19 @@ namespace path
 		CE_ASSERT(path != NULL, "Path must be != NULL");
 		CE_ASSERT(str != NULL, "Str must be != NULL");
 
-		const char* last_separator = find_last(path, '/');
-		const char* last_dot = find_last(path, '.');
+		const char* last_separator = strrchr(path, '/');
+		const char* last_dot = strrchr(path, '.');
+		const char* end = path + strlen(path) + 1;
 
-		if (last_separator == end(path) && last_dot != end(path))
+		if (last_separator == end && last_dot != end)
 		{
-			substring(begin(path), last_dot, str, len);
+			substring(path, last_dot, str, len);
 		}
-		else if (last_separator != end(path) && last_dot == end(path))
+		else if (last_separator != end && last_dot == end)
 		{
-			substring(last_separator + 1, end(path), str, len);
+			substring(last_separator + 1, end, str, len);
 		}
-		else if (last_separator == end(path) && last_dot == end(path))
+		else if (last_separator == end && last_dot == end)
 		{
 			strncpy(str, path, len);
 		}
@@ -180,15 +183,16 @@ namespace path
 		CE_ASSERT(path != NULL, "Path must be != NULL");
 		CE_ASSERT(str != NULL, "Str must be != NULL");
 
-		const char* last_dot = find_last(path, '.');
+		const char* last_dot = strrchr(path, '.');
+		const char* end = path + strlen(path) + 1;
 
-		if (last_dot == end(path))
+		if (last_dot == end)
 		{
 			strncpy(str, "", len);
 		}
 		else
 		{
-			substring(last_dot + 1, end(path), str, len);
+			substring(last_dot + 1, end, str, len);
 		}
 	}
 
@@ -203,9 +207,9 @@ namespace path
 		CE_ASSERT(path != NULL, "Path must be != NULL");
 		CE_ASSERT(str != NULL, "Str must be != NULL");
 
-		const char* last_dot = find_last(path, '.');
+		const char* last_dot = strrchr(path, '.');
 
-		substring(begin(path), last_dot, str, len);
+		substring(path, last_dot, str, len);
 	}
 
 	/// Fills 'ret' with the same path but without the trailing directory separator.
@@ -220,14 +224,15 @@ namespace path
 		CE_ASSERT(str != NULL, "Str must be != NULL");
 
 		size_t path_len = strlen(path);
+		const char* end = path + strlen(path) + 1;
 
 		if (path[path_len - 1] == '/')
 		{
-			substring(begin(path), end(path) - 2, str, len);
+			substring(path, end - 2, str, len);
 		}
 		else
 		{
-			substring(begin(path), end(path), str, len);
+			substring(path, end, str, len);
 		}
 	}
 } // namespace path

+ 0 - 52
src/core/strings/string_utils.h

@@ -61,58 +61,6 @@ inline const char* skip_block(const char* str, char a, char b)
 	return NULL;
 }
 
-inline const char* begin(const char* str)
-{
-	CE_ASSERT(str != NULL, "Str must be != NULL");
-
-	return str;
-}
-
-inline const char* end(const char* str)
-{
-	CE_ASSERT(str != NULL, "Str must be != NULL");
-
-	return str + strlen(str) + 1;
-}
-
-inline const char* find_first(const char* str, char c)
-{
-	CE_ASSERT(str != NULL, "Str must be != NULL");
-
-	const char* str_begin = begin(str);
-
-	while (str_begin != end(str))
-	{
-		if ((*str_begin) == c)
-		{
-			return str_begin;
-		}
-
-		str_begin++;
-	}
-
-	return end(str);
-}
-
-inline const char* find_last(const char* str, char c)
-{
-	CE_ASSERT(str != NULL, "Str must be != NULL");
-
-	const char* str_end = end(str) - 1;
-
-	while (str_end != begin(str) - 1)
-	{
-		if ((*str_end) == c)
-		{
-			return str_end;
-		}
-
-		str_end--;
-	}
-
-	return end(str);
-}
-
 inline void substring(const char* begin, const char* end, char* out, size_t len)
 {
 	CE_ASSERT(begin != NULL, "Begin must be != NULL");