diff options
author | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2010-08-29 03:19:48 +0000 |
---|---|---|
committer | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2010-08-29 03:19:48 +0000 |
commit | 163a913a226cca335544231da5051562891c286b (patch) | |
tree | d7a3dbe8f0866575a356966a39a389396011f54c /sca-cpp/trunk/kernel | |
parent | 88bf2a256b02e1858993bf097f4dc743d389e3f0 (diff) |
Make sure components execute in the correct contribution directory and fix support for Python relative module imports.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@990483 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-cpp/trunk/kernel')
-rw-r--r-- | sca-cpp/trunk/kernel/kernel-test.cpp | 9 | ||||
-rw-r--r-- | sca-cpp/trunk/kernel/sstream.hpp | 18 |
2 files changed, 27 insertions, 0 deletions
diff --git a/sca-cpp/trunk/kernel/kernel-test.cpp b/sca-cpp/trunk/kernel/kernel-test.cpp index 0096a9d6e3..9b87397b96 100644 --- a/sca-cpp/trunk/kernel/kernel-test.cpp +++ b/sca-cpp/trunk/kernel/kernel-test.cpp @@ -275,11 +275,20 @@ bool testZip() { } bool testTokenize() { + assert(tokenize("/", "") == list<string>()); + assert(tokenize("/", "aaa") == mklist<string>("aaa")); assert(tokenize("/", "aaa/bbb/ccc/ddd") == mklist<string>("aaa", "bbb", "ccc", "ddd")); assert(tokenize("/", "/bbb/ccc/ddd") == mklist<string>("", "bbb", "ccc", "ddd")); assert(tokenize("/", "/bbb/ccc/") == mklist<string>("", "bbb", "ccc")); assert(tokenize("/", "/bbb//ccc/") == mklist<string>("", "bbb", "", "ccc")); assert(tokenize("/", "abc/def/") == mklist<string>("abc", "def")); + + assert(join("/", list<string>()) == ""); + assert(join("/", mklist<string>("aaa")) == "aaa"); + assert(join("/", mklist<string>("aaa", "bbb", "ccc", "ddd")) == "aaa/bbb/ccc/ddd"); + assert(join("/", mklist<string>("", "bbb", "ccc", "ddd")) == "/bbb/ccc/ddd"); + assert(join("/", mklist<string>("bbb", "ccc", "")) == "bbb/ccc/"); + assert(join("/", mklist<string>("bbb", "", "ccc")) == "bbb//ccc"); return true; } diff --git a/sca-cpp/trunk/kernel/sstream.hpp b/sca-cpp/trunk/kernel/sstream.hpp index f5006606dd..693ba5f88f 100644 --- a/sca-cpp/trunk/kernel/sstream.hpp +++ b/sca-cpp/trunk/kernel/sstream.hpp @@ -196,6 +196,24 @@ const list<string> tokenize(const char* sep, const string& str) { } /** + * Join a list of strings into a single string. + */ +const string join(const char* sep, const list<string>& l) { + struct nested { + static ostringstream& join(const char* sep, const list<string>& l, ostringstream& os) { + if (isNil(l)) + return os; + os << car(l); + if (!isNil(cdr(l))) + os << sep; + return join(sep, cdr(l), os); + } + }; + ostringstream os; + return str(nested::join(sep, l, os)); +} + +/** * Returns a lazy list view of an input stream. */ struct ilistRead{ |