Added next_token() function (strtok() replacement)
authorClifford Wolf <clifford@clifford.at>
Fri, 10 Oct 2014 16:33:55 +0000 (18:33 +0200)
committerClifford Wolf <clifford@clifford.at>
Fri, 10 Oct 2014 16:33:55 +0000 (18:33 +0200)
kernel/yosys.cc
kernel/yosys.h

index 7272c073b15c6fa7eb3a6568d23e43fac0cdd6d7..96fe5446db88fe6abcf81bcad4feed3444b0a6ad 100644 (file)
@@ -83,6 +83,23 @@ std::string vstringf(const char *fmt, va_list ap)
        return string;
 }
 
+std::string next_token(std::string &text, const char *sep)
+{
+       size_t pos_begin = text.find_first_not_of(sep);
+
+       if (pos_begin == string::npos)
+               pos_begin = text.size();
+
+       size_t pos_end = text.find_first_of(sep, pos_begin);
+
+       if (pos_end == string::npos)
+               pos_end = text.size();
+
+       std::string token = text.substr(pos_begin, pos_end-pos_begin);
+       text = text.substr(pos_end);
+       return token;
+}
+
 // this is very similar to fnmatch(). the exact rules used by this
 // function are:
 //
@@ -94,7 +111,7 @@ std::string vstringf(const char *fmt, va_list ap)
 // a backslash may be used to escape the next characters in the
 // pattern. each special character can also simply match itself.
 //
-static bool patmatch(const char *pattern, const char *string)
+bool patmatch(const char *pattern, const char *string)
 {
        if (*pattern == 0)
                return *string == 0;
index a796dd09fe3c00f85881d737b584518be20aea92..919e3bb984fe0788d7705e718ef226759f9d5e5c 100644 (file)
@@ -84,7 +84,7 @@ namespace RTLIL {
 
 std::string stringf(const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
 std::string vstringf(const char *fmt, va_list ap);
-
+std::string next_token(std::string &text, const char *sep);
 bool patmatch(const char *pattern, const char *string);
 
 template<typename T> int GetSize(const T &obj) { return obj.size(); }