From 837cd96b7dba8e7eb439089ab100fa3b59cf2ad3 Mon Sep 17 00:00:00 2001 From: cxl Date: Sat, 13 Apr 2019 11:58:45 +0000 Subject: [PATCH] ide: Fixed help issue (multiplying themes) git-svn-id: svn://ultimatepp.org/upp/trunk@12993 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/Core/Range.h | 19 +++++++++++++++++++ uppsrc/CtrlLib/ArrayCtrl.cpp | 6 +++++- uppsrc/ide/Builders/MscBuilder.cpp | 13 ++++++++++--- uppsrc/ide/Help.cpp | 3 +++ uppsrc/ide/InstantSetup.cpp | 29 ++++++++++++++++++++--------- 5 files changed, 57 insertions(+), 13 deletions(-) diff --git a/uppsrc/Core/Range.h b/uppsrc/Core/Range.h index 8adee7a9a..c9be231d8 100644 --- a/uppsrc/Core/Range.h +++ b/uppsrc/Core/Range.h @@ -1,3 +1,16 @@ +#ifdef COMPILER_MSC + +template +using ValueTypeOf = typename std::remove_reference::type().begin())>::type; + +template +using IteratorOf = decltype(((typename std::remove_reference::type *)0)->begin()); + +template +using ConstIteratorOf = decltype(((const typename std::remove_reference::type *)0)->begin()); + +#else + template using ValueTypeOf = typename std::remove_reference::type *)0)->begin())>::type; @@ -7,6 +20,8 @@ using IteratorOf = decltype(((typename std::remove_reference::type *)0)-> template using ConstIteratorOf = decltype(((const typename std::remove_reference::type *)0)->begin()); +#endif + template class SubRangeClass { I l; @@ -34,6 +49,7 @@ public: SubRangeClass(I begin, int count) : l(begin), count(count) {} SubRangeClass(I begin, I end) : l(begin), count(int(end - begin)) {} + SubRangeClass() {} // MSC bug workaround }; template @@ -83,6 +99,7 @@ struct ConstRangeClass { ConstRangeClass(const T& value, int count) : value(value), count(count) {} ConstRangeClass(int count) : count(count) {} + ConstRangeClass() {} // MSC bug workaround }; template @@ -129,6 +146,7 @@ struct ReverseRangeClass { template bool operator>(const B& x) const { return Compare(x) > 0; } ReverseRangeClass(BaseRange& r) : r(r) {} + ReverseRangeClass() {} // MSC bug workaround }; template @@ -170,6 +188,7 @@ struct ViewRangeClass { template bool operator>(const B& x) const { return Compare(x) > 0; } ViewRangeClass(BaseRange& r, Vector&& ndx) : r(&r), ndx(pick(ndx)) {} + ViewRangeClass() {} // MSC bug workaround }; template diff --git a/uppsrc/CtrlLib/ArrayCtrl.cpp b/uppsrc/CtrlLib/ArrayCtrl.cpp index 796d48c21..cc33950f3 100644 --- a/uppsrc/CtrlLib/ArrayCtrl.cpp +++ b/uppsrc/CtrlLib/ArrayCtrl.cpp @@ -2439,6 +2439,7 @@ void ArrayCtrl::SortA() void ArrayCtrl::SortB(const Vector& o) { + DTIMING("SortB"); Vector narray; narray.SetCount(array.GetCount()); Vector nln; @@ -2488,7 +2489,8 @@ void ArrayCtrl::Sort(int from, int count, Gate order) for(int i = 0; i < array.GetCount(); i++) h.Add(i); SortA(); - StableSort(SubRange(h, from, count).Write(), order); + { DTIMING("StableSort"); + StableSort(SubRange(h, from, count).Write(), order); } SortB(h); Refresh(); SyncInfo(); @@ -2502,6 +2504,7 @@ void ArrayCtrl::Sort(Gate order) bool ArrayCtrl::OrderPred(int i1, int i2, const ArrayCtrl::Order *o) { + DTIMING("OrderPred"); return (*o)(array[i1].line, array[i2].line); } @@ -2522,6 +2525,7 @@ struct sAC_ColumnSort : public ValueOrder { Function cmp; virtual bool operator()(const Value& a, const Value& b) const { + DTIMING("Predicated"); return descending ? order ? (*order)(b, a) : cmp(b, a) < 0 : order ? (*order)(a, b) : cmp(a, b) < 0; } diff --git a/uppsrc/ide/Builders/MscBuilder.cpp b/uppsrc/ide/Builders/MscBuilder.cpp index ac729c055..4e2440fd3 100644 --- a/uppsrc/ide/Builders/MscBuilder.cpp +++ b/uppsrc/ide/Builders/MscBuilder.cpp @@ -124,7 +124,8 @@ bool MscBuilder::IsMsc89() const bool MscBuilder::IsMsc86() const { return HasFlag("MSC8") || HasFlag("MSC9") || HasFlag("MSC10") || HasFlag("MSC11") - || HasFlag("MSC12") || HasFlag("MSC15") || HasFlag("MSC14") || HasFlag("MSC17"); + || HasFlag("MSC12") || HasFlag("MSC15") || HasFlag("MSC14") || HasFlag("MSC17") + || HasFlag("MSC19"); } bool MscBuilder::IsMscArm() const @@ -135,7 +136,8 @@ bool MscBuilder::IsMscArm() const bool MscBuilder::IsMsc64() const { return HasFlag("MSC8X64") || HasFlag("MSC9X64") || HasFlag("MSC10X64") || HasFlag("MSC11X64") - || HasFlag("MSC12X64") || HasFlag("MSC14X64") || HasFlag("MSC15X64") || HasFlag("MSC17X64"); + || HasFlag("MSC12X64") || HasFlag("MSC14X64") || HasFlag("MSC15X64") || HasFlag("MSC17X64") + || HasFlag("MSC19X64"); } String MscBuilder::LinkerName() const @@ -462,6 +464,7 @@ bool MscBuilder::BuildPackage(const String& package, Vector& linkfile, V || HasFlag("MSC14") || HasFlag("MSC14X64") || HasFlag("MSC15") || HasFlag("MSC15X64") || HasFlag("MSC17") || HasFlag("MSC17X64") + || HasFlag("MSC19") || HasFlag("MSC19X64") ; Vector objinfo = host->GetFileInfo(obj); for(int i = 0; i < obj.GetCount(); i++) @@ -597,7 +600,9 @@ bool MscBuilder::Link(const Vector& linkfile, const String& linkoptions, || HasFlag("MSC12") || HasFlag("MSC12X64") || HasFlag("MSC14") || HasFlag("MSC14X64") || HasFlag("MSC15") || HasFlag("MSC15X64") - || HasFlag("MSC17") || HasFlag("MSC17X64"); + || HasFlag("MSC17") || HasFlag("MSC17X64") + || HasFlag("MSC19") || HasFlag("MSC19X64") + ; for(int i = 0; i < linkfile.GetCount(); i++) if(GetFileTime(linkfile[i]) > targettime) { String link, lib; @@ -728,6 +733,8 @@ INITIALIZER(MscBuilder) RegisterBuilder("MSC15X64", CreateMscBuilder); RegisterBuilder("MSC17", CreateMscBuilder); RegisterBuilder("MSC17X64", CreateMscBuilder); + RegisterBuilder("MSC19", CreateMscBuilder); + RegisterBuilder("MSC19X64", CreateMscBuilder); RegisterBuilder("EVC_ARM", CreateMscBuilder); RegisterBuilder("EVC_MIPS", CreateMscBuilder); RegisterBuilder("EVC_SH3", CreateMscBuilder); diff --git a/uppsrc/ide/Help.cpp b/uppsrc/ide/Help.cpp index 51f31a33e..502e093e1 100644 --- a/uppsrc/ide/Help.cpp +++ b/uppsrc/ide/Help.cpp @@ -7,6 +7,9 @@ struct GatherLinksIterator : RichText::Iterator { { for(int i = 0; i < para.GetCount(); i++) { String l = para[i].format.link; + int q = l.ReverseFind('#'); + if(q >= 0) + l.Trim(q); if(!IsNull(l)) link.FindAdd(l); } diff --git a/uppsrc/ide/InstantSetup.cpp b/uppsrc/ide/InstantSetup.cpp index e01b8695e..459a90bbd 100644 --- a/uppsrc/ide/InstantSetup.cpp +++ b/uppsrc/ide/InstantSetup.cpp @@ -127,16 +127,23 @@ void InstantSetup() bool dirty = false; - enum { VS_2015, VS_2017, BT_2017 }; + enum { VS_2015, VS_2017, BT_2017, VS_2019, BT_2019 }; - for(int version = VS_2015; version <= BT_2017; version++) + for(int version = VS_2015; version <= BT_2019; version++) for(int x64 = 0; x64 < 2; x64++) { - String x86method = decode(version, VS_2015, "MSVS15", VS_2017, "MSVS17", "MSBT17"); + String x86method = decode(version, VS_2015, "MSVS15", + VS_2017, "MSVS17", BT_2017, "MSBT17", + VS_2019, "MSVS19", BT_2019, "MSBT19", + "MSBT"); String x64s = x64 ? "x64" : ""; String method = x86method + x64s; - String builder = (version == VS_2015 ? "MSC15" : "MSC17") + ToUpper(x64s); + String builder = decode(version, VS_2015, "MSC15", + VS_2017, "MSC17", BT_2017, "MSC17", + VS_2019, "MSC19", BT_2019, "MSC19", + "MSC19" + ) + ToUpper(x64s); - #ifdef _DEBUG0 + #ifdef _DEBUG method << "Test"; #endif @@ -158,8 +165,11 @@ void InstantSetup() if(version == VS_2015) vc = df.Get("/microsoft visual studio 14.0/vc", "bin/cl.exe;bin/lib.exe;bin/link.exe;bin/mspdb140.dll"); else - vc = df.Get(version == BT_2017 ? "/microsoft visual studio/2017/buildtools/vc/tools/msvc" - : "/microsoft visual studio/2017/community/vc/tools/msvc", + vc = df.Get(decode(version, BT_2017, "/microsoft visual studio/2017/buildtools/vc/tools/msvc", + VS_2017, "/microsoft visual studio/2017/community/vc/tools/msvc", + BT_2019, "/microsoft visual studio/2019/buildtools/vc/tools/msvc", + VS_2019, "/microsoft visual studio/2019/community/vc/tools/msvc", + ""), x64 ? "bin/hostx64/x64/cl.exe;bin/hostx64/x64/mspdb140.dll" : "bin/hostx86/x86/cl.exe;bin/hostx86/x86/mspdb140.dll"); @@ -272,8 +282,9 @@ void InstantSetup() bmSet(bm, "RELEASE_FLAGS", ""); bmSet(bm, "RELEASE_LINK", x64 ? "/STACK:20000000" : "/STACK:10000000"); bmSet(bm, "DISABLE_BLITZ", ""); - bmSet(bm, "DEBUGGER", version == BT_2017 ? String() : GetFileFolder(vc) + "/Common7/IDE/devenv.exe"); - + bmSet(bm, "DEBUGGER", findarg(version, BT_2017, BT_2019) >= 0 ? String() + : GetFileFolder(vc) + "/Common7/IDE/devenv.exe"); + bm.GetAdd("PATH") = Join(bins, ";"); bm.GetAdd("INCLUDE") = Join(incs, ";"); bm.GetAdd("LIB") = Join(libs, ";");