ide: Fixed help issue (multiplying themes)

git-svn-id: svn://ultimatepp.org/upp/trunk@12993 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2019-04-13 11:58:45 +00:00
parent f49276f799
commit 837cd96b7d
5 changed files with 57 additions and 13 deletions

View file

@ -1,3 +1,16 @@
#ifdef COMPILER_MSC
template <class Range>
using ValueTypeOf = typename std::remove_reference<decltype(*std::remove_reference<Range>::type().begin())>::type;
template <class Range>
using IteratorOf = decltype(((typename std::remove_reference<Range>::type *)0)->begin());
template <class Range>
using ConstIteratorOf = decltype(((const typename std::remove_reference<Range>::type *)0)->begin());
#else
template <class Range>
using ValueTypeOf = typename std::remove_reference<decltype(*((typename std::remove_reference<Range>::type *)0)->begin())>::type;
@ -7,6 +20,8 @@ using IteratorOf = decltype(((typename std::remove_reference<Range>::type *)0)->
template <class Range>
using ConstIteratorOf = decltype(((const typename std::remove_reference<Range>::type *)0)->begin());
#endif
template <class I>
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 <class I>
@ -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 <class T>
@ -129,6 +146,7 @@ struct ReverseRangeClass {
template <class B> bool operator>(const B& x) const { return Compare(x) > 0; }
ReverseRangeClass(BaseRange& r) : r(r) {}
ReverseRangeClass() {} // MSC bug workaround
};
template <class BaseRange>
@ -170,6 +188,7 @@ struct ViewRangeClass {
template <class B> bool operator>(const B& x) const { return Compare(x) > 0; }
ViewRangeClass(BaseRange& r, Vector<int>&& ndx) : r(&r), ndx(pick(ndx)) {}
ViewRangeClass() {} // MSC bug workaround
};
template <class BaseRange>

View file

@ -2439,6 +2439,7 @@ void ArrayCtrl::SortA()
void ArrayCtrl::SortB(const Vector<int>& o)
{
DTIMING("SortB");
Vector<Line> narray;
narray.SetCount(array.GetCount());
Vector<Ln> nln;
@ -2488,7 +2489,8 @@ void ArrayCtrl::Sort(int from, int count, Gate<int, int> 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<int, int> 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<int (const Value& a, const Value& b)> 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;
}

View file

@ -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<String>& linkfile, V
|| HasFlag("MSC14") || HasFlag("MSC14X64")
|| HasFlag("MSC15") || HasFlag("MSC15X64")
|| HasFlag("MSC17") || HasFlag("MSC17X64")
|| HasFlag("MSC19") || HasFlag("MSC19X64")
;
Vector<Host::FileInfo> objinfo = host->GetFileInfo(obj);
for(int i = 0; i < obj.GetCount(); i++)
@ -597,7 +600,9 @@ bool MscBuilder::Link(const Vector<String>& 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);

View file

@ -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);
}

View file

@ -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, ";");