From 12b30afb24ac03d69f091f18c25ed2bbefae1acd Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Thu, 16 Apr 2020 18:25:53 -0400 Subject: Workaround for matching of dxc diagnostics (#1324) * Specialized handling for comparison of dxc output that ignores line/column numbers. * Simplify areAllEqualWithSplit. --- source/core/slang-string-util.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'source/core/slang-string-util.cpp') diff --git a/source/core/slang-string-util.cpp b/source/core/slang-string-util.cpp index f961e6060..326bc3191 100644 --- a/source/core/slang-string-util.cpp +++ b/source/core/slang-string-util.cpp @@ -6,6 +6,32 @@ namespace Slang { // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! StringUtil !!!!!!!!!!!!!!!!!!!!!!!!!!! +/* static */bool StringUtil::areAllEqual(const List& a, const List& b, EqualFn equalFn) +{ + if (a.getCount() != b.getCount()) + { + return false; + } + + const Index count = a.getCount(); + for (Index i = 0; i < count; ++i) + { + if (!equalFn(a[i], b[i])) + { + return false; + } + } + return true; +} + +/* static */bool StringUtil::areAllEqualWithSplit(const UnownedStringSlice& a, const UnownedStringSlice& b, char splitChar, EqualFn equalFn) +{ + List slicesA, slicesB; + StringUtil::split(a, splitChar, slicesA); + StringUtil::split(b, splitChar, slicesB); + return areAllEqual(slicesA, slicesB, equalFn); +} + /* static */void StringUtil::split(const UnownedStringSlice& in, char splitChar, List& slicesOut) { slicesOut.clear(); -- cgit v1.2.3