diff --git a/src/Utility.cc b/src/Utility.cc index 854e02e..60fd0e7 100644 --- a/src/Utility.cc +++ b/src/Utility.cc @@ -10,6 +10,18 @@ std::string clangmm::to_string(CXString cx_string) { return string; } +clangmm::CString::CString(const CXString &cx_string) : cx_string(cx_string) { + if(cx_string.data!=NULL) + data=clang_getCString(cx_string); + else + data=""; +} + +clangmm::CString::~CString() { + if(cx_string.data!=NULL) + clang_disposeString(cx_string); +} + void clangmm::remove_include_guard(std::string &buffer) { static std::regex ifndef_regex1("^[ \t]*#[ \t]*ifndef[ \t]+([A-Za-z0-9_]+).*$"); static std::regex ifndef_regex2("^[ \t]*#[ \t]*if[ \t]+![ \t]*defined[ \t]*\\([ \t]*([A-Za-z0-9_]+).*$"); diff --git a/src/Utility.h b/src/Utility.h index dbc28a1..58ca6d2 100644 --- a/src/Utility.h +++ b/src/Utility.h @@ -2,10 +2,19 @@ #define UTILITY_H_ #include #include +#include namespace clangmm { std::string to_string(CXString cx_string); + class CString { + public: + CString(const CXString &cx_string); + ~CString(); + CXString cx_string; + const char *data; + }; + void remove_include_guard(std::string &buffer); }