| #ifndef PYTHON_CONSOLE_UTILS_H | |
| #define PYTHON_CONSOLE_UTILS_H | |
| #include <string> | |
| #include <vector> | |
| /** | |
| InputIterator has value type of std::string. | |
| */ | |
| template < class InputIterator > | |
| std::string LongestCommonPrefix( InputIterator begin, InputIterator end ) | |
| { | |
| if ( begin == end ) | |
| return ""; | |
| const std::string& str0 = *begin; | |
| if ( ! str0.size() ) | |
| return ""; | |
| int endIndex = str0.size() - 1; | |
| InputIterator it = begin; ++it; | |
| for (; it != end; ++it) | |
| { | |
| const std::string& str = *it; | |
| for (int j = 0; j <= endIndex; ++j) | |
| { | |
| if (j >= (int)str.size() || str[j] != str0[j]) | |
| endIndex = j - 1; | |
| } | |
| } | |
| return (endIndex > 0)? str0.substr(0, endIndex + 1) : ""; | |
| } | |
| #endif // PYTHON_CONSOLE_UTILS_H |