diff options
Diffstat (limited to 'src/tools/clangbackend/source/clangstring.h')
-rw-r--r-- | src/tools/clangbackend/source/clangstring.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/tools/clangbackend/source/clangstring.h b/src/tools/clangbackend/source/clangstring.h index 685055cff0..ad8373c837 100644 --- a/src/tools/clangbackend/source/clangstring.h +++ b/src/tools/clangbackend/source/clangstring.h @@ -91,6 +91,11 @@ public: return !isNull() && std::strlen(cString()) > 0; } + bool startsWith(const char* str) const + { + return std::strncmp(cString(), str, strlen(str)) == 0; + } + friend bool operator==(const ClangString &first, const ClangString &second) { return std::strcmp(first.cString(), second.cString()) == 0; @@ -107,6 +112,7 @@ public: { return second == first; } + template<typename Type, typename = typename std::enable_if<std::is_pointer<Type>::value>::type > @@ -123,6 +129,39 @@ public: return second == first; } + friend bool operator!=(const ClangString &first, const ClangString &second) + { + return !(first == second); + } + + template<std::size_t Size> + friend bool operator!=(const ClangString &first, const char(&second)[Size]) + { + return !(first == second); + } + + template<std::size_t Size> + friend bool operator!=(const char(&first)[Size], const ClangString &second) + { + return second != first; + } + + template<typename Type, + typename = typename std::enable_if<std::is_pointer<Type>::value>::type + > + friend bool operator!=(const ClangString &first, Type second) + { + return !(first == second); + } + + template<typename Type, + typename = typename std::enable_if<std::is_pointer<Type>::value>::type + > + friend bool operator!=(Type first, const ClangString &second) + { + return !(first == second); + } + friend std::ostream &operator<<(std::ostream &os, const ClangString &string) { return os << string.cString(); |