From 3eaf044045fb87d2611eb95e6c9885a862fbecb0 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Fri, 23 Aug 2013 11:52:46 +0200 Subject: C++: replace a tree by a hash Be more environment friendly by using less trees. Change-Id: I54d3b23d697a3b72a6a803688a8da0eddaad3e17 Reviewed-by: Nikolai Kosjar --- src/libs/3rdparty/cplusplus/TranslationUnit.h | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'src/libs/3rdparty/cplusplus/TranslationUnit.h') diff --git a/src/libs/3rdparty/cplusplus/TranslationUnit.h b/src/libs/3rdparty/cplusplus/TranslationUnit.h index fb4ee91b7c..bf182b0801 100644 --- a/src/libs/3rdparty/cplusplus/TranslationUnit.h +++ b/src/libs/3rdparty/cplusplus/TranslationUnit.h @@ -27,7 +27,18 @@ #include "DiagnosticClient.h" #include #include -#include + +#if !(__cplusplus > 199711L || __GXX_EXPERIMENTAL_CXX0X__ || _MSC_VER >= 1600 || defined( _LIBCPP_VERSION )) +#define USE_TR1 +#endif + +#if defined(_MSC_VER) && _MSC_VER < 1600 +# include +#elif defined(USE_TR1) +# include +#else +# include +#endif namespace CPlusPlus { @@ -175,7 +186,15 @@ private: std::vector *_comments; std::vector _lineOffsets; std::vector _ppLines; - std::map > _expandedLineColumn; // TODO: Replace this for a hash +#if defined(_MSC_VER) && _MSC_VER < 1600 + // MSVC2008 and earlier do not implement TR1. + typedef std::map > TokenLineColumn; +#elif defined(USE_TR1) + typedef std::tr1::unordered_map > TokenLineColumn; +#else + typedef std::unordered_map > TokenLineColumn; +#endif + TokenLineColumn _expandedLineColumn; MemoryPool *_pool; AST *_ast; TranslationUnit *_previousTranslationUnit; -- cgit v1.2.3