From 45d3ec1437cf661533bc7750c623865def4424df Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 11 Apr 2007 13:07:51 +0000 Subject: merged with 1697 revision of trunk (which is post-rc1 but pre-rc2 git-svn-id: svn://localhost/ardour2/branches/2.1-staging@1698 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/pbd/strsplit.cc | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'libs/pbd/strsplit.cc') diff --git a/libs/pbd/strsplit.cc b/libs/pbd/strsplit.cc index 7f29a77887..1fb6112150 100644 --- a/libs/pbd/strsplit.cc +++ b/libs/pbd/strsplit.cc @@ -1,6 +1,7 @@ #include using namespace std; +using namespace Glib; void split (string str, vector& result, char splitchar) @@ -39,3 +40,41 @@ split (string str, vector& result, char splitchar) result.push_back (remaining); } } + +void +split (ustring str, vector& result, char splitchar) +{ + ustring::size_type pos; + ustring remaining; + ustring::size_type len = str.length(); + int cnt; + + cnt = 0; + + if (str.empty()) { + return; + } + + for (ustring::size_type n = 0; n < len; ++n) { + if (str[n] == gunichar(splitchar)) { + cnt++; + } + } + + if (cnt == 0) { + result.push_back (str); + return; + } + + remaining = str; + + while ((pos = remaining.find_first_of (':')) != ustring::npos) { + result.push_back (remaining.substr (0, pos)); + remaining = remaining.substr (pos+1); + } + + if (remaining.length()) { + + result.push_back (remaining); + } +} -- cgit v1.2.3