void TagsOptionsData::FromJSON(const JSONElement& json) { m_version = json.namedObject("version").toSize_t(); m_ccFlags = json.namedObject(wxT("m_ccFlags")).toSize_t(m_ccFlags); m_ccColourFlags = json.namedObject(wxT("m_ccColourFlags")).toSize_t(m_ccColourFlags); m_tokens = json.namedObject(wxT("m_tokens")).toArrayString(); m_types = json.namedObject(wxT("m_types")).toArrayString(); m_fileSpec = json.namedObject(wxT("m_fileSpec")).toString(m_fileSpec); m_languages = json.namedObject(wxT("m_languages")).toArrayString(); m_minWordLen = json.namedObject(wxT("m_minWordLen")).toInt(m_minWordLen); m_parserSearchPaths = json.namedObject(wxT("m_parserSearchPaths")).toArrayString(); m_parserEnabled = json.namedObject(wxT("m_parserEnabled")).toBool(); m_parserExcludePaths = json.namedObject(wxT("m_parserExcludePaths")).toArrayString(); m_maxItemToColour = json.namedObject(wxT("m_maxItemToColour")).toInt(); m_macrosFiles = json.namedObject(wxT("m_macrosFiles")).toString(); m_clangOptions = json.namedObject(wxT("m_clangOptions")).toSize_t(); m_clangBinary = json.namedObject(wxT("m_clangBinary")).toString(); m_clangCmpOptions = json.namedObject(wxT("m_clangCmpOptions")).toString(); m_clangSearchPaths = json.namedObject(wxT("m_clangSearchPaths")).toArrayString(); m_clangMacros = json.namedObject(wxT("m_clangMacros")).toString(); m_clangCachePolicy = json.namedObject(wxT("m_clangCachePolicy")).toString(); m_ccNumberOfDisplayItems = json.namedObject(wxT("m_ccNumberOfDisplayItems")).toSize_t(m_ccNumberOfDisplayItems); if(!m_fileSpec.Contains("*.hxx")) { m_fileSpec = "*.cpp;*.cc;*.cxx;*.h;*.hpp;*.c;*.c++;*.tcc;*.hxx;*.h++"; } DoUpdateTokensWxMapReversed(); DoUpdateTokensWxMap(); m_ccFlags |= CC_ACCURATE_SCOPE_RESOLVING; }
void TagsOptionsData::Merge(const TagsOptionsData& tod) { clConfig conf; m_tokens = conf.MergeArrays(m_tokens, tod.m_tokens); m_types = conf.MergeArrays(m_types, tod.m_types); DoUpdateTokensWxMapReversed(); DoUpdateTokensWxMap(); }
wxString TagsOptionsData::ToString() { wxString options(wxEmptyString); static wxString file_name; wxString file_content; if(file_name.IsEmpty()) { char* ctagsReplacement = getenv("CTAGS_REPLACEMENTS"); if(ctagsReplacement) { file_name = wxString(ctagsReplacement, wxConvUTF8).c_str(); } } DoUpdateTokensWxMap(); std::map<wxString, wxString> tokensMap = GetTokensWxMap(); std::map<wxString, wxString>::iterator iter = tokensMap.begin(); if(tokensMap.empty() == false) { for(; iter != tokensMap.end(); ++iter) { if(!iter->second.IsEmpty() || (iter->second.IsEmpty() && iter->first.Find(wxT("%0")) != wxNOT_FOUND)) { // Key = Value pair. Place this one in the output file file_content << iter->first << wxT("=") << iter->second << wxT("\n"); } else { if(options.IsEmpty()) options = wxT(" -I"); options << iter->first; options << wxT(","); } } if(options.IsEmpty() == false) options.RemoveLast(); options += wxT(" "); } // write the file content if(file_name.IsEmpty() == false) { wxFFile fp(file_name, wxT("w+b")); if(fp.IsOpened()) { fp.Write(file_content); fp.Close(); } } if(GetLanguages().IsEmpty() == false) { options += wxT(" --language-force="); options += GetLanguages().Item(0); options += wxT(" "); } return options; }
void TagsOptionsData::Merge(const TagsOptionsData& tod) { clConfig conf; m_tokens = conf.MergeArrays(m_tokens, tod.m_tokens); m_types = conf.MergeArrays(m_types, tod.m_types); DoUpdateTokensWxMapReversed(); DoUpdateTokensWxMap(); if(m_version != TagsOptionsData::CURRENT_VERSION) { m_ccFlags |= CC_WORD_ASSIST; m_ccNumberOfDisplayItems = tod.m_ccNumberOfDisplayItems; } m_version = TagsOptionsData::CURRENT_VERSION; }
TagsOptionsData::TagsOptionsData() : clConfigItem("code-completion") , m_ccFlags(CC_DISP_FUNC_CALLTIP | CC_CPP_KEYWORD_ASISST | CC_COLOUR_VARS | CC_ACCURATE_SCOPE_RESOLVING | CC_COLOUR_WORKSPACE_TAGS | CC_DEEP_SCAN_USING_NAMESPACE_RESOLVING | CC_WORD_ASSIST) , m_ccColourFlags(CC_COLOUR_DEFAULT) , m_fileSpec(wxT("*.cpp;*.cc;*.cxx;*.h;*.hpp;*.c;*.c++;*.tcc;*.hxx;*.h++")) , m_minWordLen(3) , m_parserEnabled(true) , m_maxItemToColour(1000) #ifdef __WXMSW__ , m_macrosFiles(wxT("_mingw.h bits/c++config.h")) #elif defined(__WXMAC__) , m_macrosFiles(wxT("sys/cdefs.h bits/c++config.h AvailabilityMacros.h")) #else , m_macrosFiles(wxT("sys/cdefs.h bits/c++config.h")) #endif , m_clangOptions(0) , m_clangBinary(wxT("")) , m_clangCachePolicy(TagsOptionsData::CLANG_CACHE_ON_FILE_LOAD) , m_ccNumberOfDisplayItems(500) , m_version(0) { // Initialize defaults m_languages.Add(wxT("C++")); m_tokens.Add(wxT("EXPORT")); m_tokens.Add(wxT("_GLIBCXX_NOEXCEPT")); m_tokens.Add(wxT("WXDLLIMPEXP_CORE")); m_tokens.Add(wxT("WXDLLIMPEXP_BASE")); m_tokens.Add(wxT("WXDLLIMPEXP_XML")); m_tokens.Add(wxT("WXDLLIMPEXP_XRC")); m_tokens.Add(wxT("WXDLLIMPEXP_ADV")); m_tokens.Add(wxT("WXDLLIMPEXP_AUI")); m_tokens.Add(wxT("WXDLLIMPEXP_FWD_ADV")); m_tokens.Add(wxT("WXDLLIMPEXP_CL")); m_tokens.Add(wxT("WXDLLIMPEXP_LE_SDK")); m_tokens.Add(wxT("WXDLLIMPEXP_SQLITE3")); m_tokens.Add(wxT("WXDLLIMPEXP_SCI")); m_tokens.Add(wxT("WXDLLIMPEXP_FWD_AUI")); m_tokens.Add(wxT("WXDLLIMPEXP_FWD_PROPGRID")); m_tokens.Add(wxT("WXDLLIMPEXP_FWD_XML")); m_tokens.Add(wxT("WXMAKINGDLL")); m_tokens.Add(wxT("WXUSINGDLL")); m_tokens.Add(wxT("_CRTIMP")); m_tokens.Add(wxT("__CRT_INLINE")); m_tokens.Add(wxT("__cdecl")); m_tokens.Add(wxT("__stdcall")); m_tokens.Add(wxT("WXDLLEXPORT")); m_tokens.Add(wxT("WXDLLIMPORT")); m_tokens.Add(wxT("__MINGW_ATTRIB_PURE")); m_tokens.Add(wxT("__MINGW_ATTRIB_MALLOC")); m_tokens.Add(wxT("__GOMP_NOTHROW")); m_tokens.Add(wxT("wxT")); m_tokens.Add(wxT("SCI_SCOPE(%0)=%0")); m_tokens.Add(wxT("WINBASEAPI")); m_tokens.Add(wxT("WINAPI")); m_tokens.Add(wxT("__nonnull")); m_tokens.Add(wxT("noexcept")); #if defined(__WXGTK__) m_tokens.Add(wxT("wxTopLevelWindowNative=wxTopLevelWindowGTK")); m_tokens.Add(wxT("wxWindow=wxWindowGTK")); #elif defined(__WXMSW__) m_tokens.Add(wxT("wxTopLevelWindowNative=wxTopLevelWindowMSW")); m_tokens.Add(wxT("wxWindow=wxWindowMSW")); #else m_tokens.Add(wxT("wxTopLevelWindowNative=wxTopLevelWindowMac")); m_tokens.Add(wxT("wxWindow=wxWindowMac")); #endif m_tokens.Add(wxT("wxWindowNative=wxWindowBase")); m_tokens.Add(wxT("wxStatusBar=wxStatusBarBase")); m_tokens.Add(wxT("BEGIN_DECLARE_EVENT_TYPES()=enum {")); m_tokens.Add(wxT("END_DECLARE_EVENT_TYPES()=};")); m_tokens.Add(wxT("DECLARE_EVENT_TYPE")); m_tokens.Add(wxT("DECLARE_EXPORTED_EVENT_TYPE")); m_tokens.Add(wxT("WXUNUSED(%0)=%0")); m_tokens.Add(wxT("wxDEPRECATED(%0)=%0")); m_tokens.Add(wxT("_T")); m_tokens.Add(wxT("ATTRIBUTE_PRINTF_1")); m_tokens.Add(wxT("ATTRIBUTE_PRINTF_2")); m_tokens.Add(wxT("WXDLLIMPEXP_FWD_BASE")); m_tokens.Add(wxT("WXDLLIMPEXP_FWD_CORE")); m_tokens.Add(wxT("DLLIMPORT")); m_tokens.Add(wxT("DECLARE_INSTANCE_TYPE")); m_tokens.Add(wxT("emit")); m_tokens.Add(wxT("Q_OBJECT")); m_tokens.Add(wxT("Q_PACKED")); m_tokens.Add(wxT("Q_GADGET")); m_tokens.Add(wxT("QT_BEGIN_HEADER")); m_tokens.Add(wxT("QT_END_HEADER")); m_tokens.Add(wxT("Q_REQUIRED_RESULT")); m_tokens.Add(wxT("Q_INLINE_TEMPLATE")); m_tokens.Add(wxT("Q_OUTOFLINE_TEMPLATE")); m_tokens.Add(wxT("_GLIBCXX_BEGIN_NAMESPACE(%0)=namespace %0{")); m_tokens.Add(wxT("_GLIBCXX_END_NAMESPACE=}")); m_tokens.Add(wxT("_GLIBCXX_BEGIN_NESTED_NAMESPACE(%0, %1)=namespace %0{")); m_tokens.Add(wxT("wxDECLARE_EXPORTED_EVENT(%0,%1,%2)=int %1;")); m_tokens.Add(wxT("BOOST_FOREACH(%0, %1)=%0;")); m_tokens.Add(wxT("DECLARE_EVENT_TYPE(%0,%1)=int %0;")); m_tokens.Add(wxT("_GLIBCXX_END_NESTED_NAMESPACE=}")); m_tokens.Add(wxT("_GLIBCXX_VISIBILITY(%0)")); m_tokens.Add(wxT("_GLIBCXX_BEGIN_NAMESPACE_TR1=namespace tr1{")); m_tokens.Add(wxT("_GLIBCXX_END_NAMESPACE_TR1=}")); m_tokens.Add(wxT("_GLIBCXX_STD=std")); m_tokens.Add(wxT("_GLIBCXX_BEGIN_NAMESPACE_CONTAINER")); m_tokens.Add(wxT("__const=const")); m_tokens.Add(wxT("__restrict")); m_tokens.Add(wxT("__THROW")); m_tokens.Add(wxT("__wur")); m_tokens.Add(wxT("_STD_BEGIN=namespace std{")); m_tokens.Add(wxT("_STD_END=}")); m_tokens.Add(wxT("__CLRCALL_OR_CDECL")); m_tokens.Add(wxT("_CRTIMP2_PURE")); ; m_tokens.Add(wxT("_GLIBCXX_CONST")); m_tokens.Add(wxT("_GLIBCXX_CONSTEXPR")); m_tokens.Add(wxT("_GLIBCXX_NORETURN")); m_tokens.Add(wxT("_GLIBCXX_NOTHROW")); m_tokens.Add(wxT("_GLIBCXX_PURE")); m_tokens.Add(wxT("_GLIBCXX_THROW(%0)")); m_tokens.Add(wxT("_GLIBCXX_DEPRECATED")); m_tokens.Add("LLDB_API"); m_tokens.Add("PYTHON_API"); m_types.Add(wxT("std::vector::reference=_Tp")); m_types.Add(wxT("std::vector::const_reference=_Tp")); m_types.Add(wxT("std::vector::iterator=_Tp")); m_types.Add(wxT("std::vector::const_iterator=_Tp")); m_types.Add(wxT("std::queue::reference=_Tp")); m_types.Add(wxT("std::queue::const_reference=_Tp")); m_types.Add(wxT("std::set::const_iterator=_Key")); m_types.Add(wxT("std::set::iterator=_Key")); m_types.Add(wxT("std::deque::reference=_Tp")); m_types.Add(wxT("std::deque::const_reference=_Tp")); m_types.Add(wxT("std::map::iterator=std::pair<_Key, _Tp>")); m_types.Add(wxT("std::map::const_iterator=std::pair<_Key,_Tp>")); m_types.Add(wxT("std::multimap::iterator=std::pair<_Key,_Tp>")); m_types.Add(wxT("std::multimap::const_iterator=std::pair<_Key,_Tp>")); m_types.Add(wxT("wxOrderedMap::iterator=std::pair<Key,Value>")); m_types.Add(wxT("wxOrderedMap::const_iterator=std::pair<Key,Value>")); DoUpdateTokensWxMap(); DoUpdateTokensWxMapReversed(); }
void TagsOptionsData::SetTokens(const wxString& tokens) { this->m_tokens = ::wxStringTokenize(tokens, "\r\n", wxTOKEN_STRTOK); DoUpdateTokensWxMapReversed(); DoUpdateTokensWxMap(); }