Browse Source

HPCC-18356 Build break on latest Clang

Recoded using modern C++ constructs in place of variadic function.

Note there are warnings in hql for similar issues, but they have not been
turned into errors (yet) so we don't HAVE to fix them (yet).

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 7 years ago
parent
commit
1b72f6d3a8

+ 1 - 1
common/thorhelper/thorstats.cpp

@@ -22,7 +22,7 @@
 
 
 //Cycles are accumulated locally, time is updated once it is serialized or persisted
-const StatisticsMapping nestedSectionStatistics(StCycleLocalExecuteCycles, StTimeLocalExecute, StNumStarts, StNumStops, StKindNone);
+const StatisticsMapping nestedSectionStatistics({StCycleLocalExecuteCycles, StTimeLocalExecute, StNumStarts, StNumStops});
 
 ThorSectionTimer::ThorSectionTimer(const char * _name, CRuntimeStatistic & _starts, CRuntimeStatistic & _stops, CRuntimeStatistic & _elapsed)
 : starts(_starts), stops(_stops), elapsed(_elapsed), name(_name)

+ 1 - 1
roxie/ccd/ccdcontext.cpp

@@ -1126,7 +1126,7 @@ public:
 
 //---------------------------------------------------------------------------------------
 
-static const StatisticsMapping graphStatistics(StKindNone);
+static const StatisticsMapping graphStatistics({});
 class CRoxieContextBase : implements IRoxieSlaveContext, implements ICodeContext, implements roxiemem::ITimeLimiter, implements IRowAllocatorMetaActIdCacheCallback, public CInterface
 {
 protected:

+ 12 - 12
roxie/ccd/ccdserver.cpp

@@ -345,29 +345,29 @@ protected:
 
 // General activity statistics
 
-static const StatisticsMapping actStatistics(StWhenFirstRow, StTimeElapsed, StTimeLocalExecute, StTimeTotalExecute, StSizeMaxRowSize,
+static const StatisticsMapping actStatistics({StWhenFirstRow, StTimeElapsed, StTimeLocalExecute, StTimeTotalExecute, StSizeMaxRowSize,
                                               StNumRowsProcessed, StNumSlaves, StNumStarts, StNumStops, StNumStrands,
                                               StNumScansPerRow, StNumAllocations, StNumAllocationScans,
-                                              StTimeFirstExecute, StCycleLocalExecuteCycles, StCycleTotalExecuteCycles, StKindNone);
-static const StatisticsMapping joinStatistics(&actStatistics, StNumAtmostTriggered, StKindNone);
-static const StatisticsMapping keyedJoinStatistics(&joinStatistics, StNumServerCacheHits, StNumIndexSeeks, StNumIndexScans, StNumIndexWildSeeks,
+                                              StTimeFirstExecute, StCycleLocalExecuteCycles, StCycleTotalExecuteCycles});
+static const StatisticsMapping joinStatistics(&actStatistics, {StNumAtmostTriggered});
+static const StatisticsMapping keyedJoinStatistics(&joinStatistics, { StNumServerCacheHits, StNumIndexSeeks, StNumIndexScans, StNumIndexWildSeeks,
                                                     StNumIndexSkips, StNumIndexNullSkips, StNumIndexMerges, StNumIndexMergeCompares,
                                                     StNumPreFiltered, StNumPostFiltered, StNumIndexAccepted, StNumIndexRejected,
                                                     StNumIndexRowsRead, StNumDiskRowsRead, StNumDiskSeeks, StNumDiskAccepted,
                                                     StNumBlobCacheHits, StNumLeafCacheHits, StNumNodeCacheHits,
                                                     StNumBlobCacheAdds, StNumLeafCacheAdds, StNumNodeCacheAdds,
-                                                    StNumDiskRejected, StKindNone);
-static const StatisticsMapping indexStatistics(&actStatistics, StNumServerCacheHits, StNumIndexSeeks, StNumIndexScans, StNumIndexWildSeeks,
+                                                    StNumDiskRejected});
+static const StatisticsMapping indexStatistics(&actStatistics, {StNumServerCacheHits, StNumIndexSeeks, StNumIndexScans, StNumIndexWildSeeks,
                                                 StNumIndexSkips, StNumIndexNullSkips, StNumIndexMerges, StNumIndexMergeCompares,
                                                 StNumPreFiltered, StNumPostFiltered, StNumIndexAccepted, StNumIndexRejected,
                                                 StNumBlobCacheHits, StNumLeafCacheHits, StNumNodeCacheHits,
                                                 StNumBlobCacheAdds, StNumLeafCacheAdds, StNumNodeCacheAdds,
-                                                StNumIndexRowsRead, StKindNone);
-static const StatisticsMapping diskStatistics(&actStatistics, StNumServerCacheHits, StNumDiskRowsRead, StNumDiskSeeks, StNumDiskAccepted,
-                                               StNumDiskRejected, StKindNone);
-static const StatisticsMapping soapStatistics(&actStatistics, StTimeSoapcall, StKindNone);
-static const StatisticsMapping groupStatistics(&actStatistics, StNumGroups, StNumGroupMax, StKindNone);
-static const StatisticsMapping sortStatistics(&actStatistics, StTimeSortElapsed, StKindNone);
+                                                StNumIndexRowsRead});
+static const StatisticsMapping diskStatistics(&actStatistics, {StNumServerCacheHits, StNumDiskRowsRead, StNumDiskSeeks, StNumDiskAccepted,
+                                               StNumDiskRejected });
+static const StatisticsMapping soapStatistics(&actStatistics, { StTimeSoapcall });
+static const StatisticsMapping groupStatistics(&actStatistics, { StNumGroups, StNumGroupMax });
+static const StatisticsMapping sortStatistics(&actStatistics, { StTimeSortElapsed });
 
 //=================================================================================
 

+ 14 - 26
system/jlib/jstats.cpp

@@ -1086,39 +1086,27 @@ static int compareUnsigned(unsigned const * left, unsigned const * right)
     return (*left < *right) ? -1 : (*left > *right) ? +1 : 0;
 }
 
-StatisticsMapping::StatisticsMapping(StatisticKind kind, ...)
+StatisticsMapping::StatisticsMapping(const std::initializer_list<StatisticKind> &kinds)
 {
-    if (kind != StKindNone)
+    for (auto kind : kinds)
     {
+        assert(kind != StKindNone);
+        assert(!indexToKind.contains(kind));
         indexToKind.append(kind);
-        va_list args;
-        va_start(args, kind);
-        for (;;)
-        {
-            unsigned next  = va_arg(args, unsigned);
-            if (!next)
-                break;
-            indexToKind.appendUniq(next);
-        }
-        va_end(args);
     }
     createMappings();
 }
 
-StatisticsMapping::StatisticsMapping(const StatisticsMapping * from, ...)
+StatisticsMapping::StatisticsMapping(const StatisticsMapping * from, const std::initializer_list<StatisticKind> &kinds)
 {
     ForEachItemIn(idx, from->indexToKind)
         indexToKind.append(from->indexToKind.item(idx));
-    va_list args;
-    va_start(args, from);
-    for (;;)
+    for (auto kind : kinds)
     {
-        unsigned next  = va_arg(args, unsigned);
-        if (!next)
-            break;
-        indexToKind.appendUniq(next);
+        assert(kind != StKindNone);
+        assert(!indexToKind.contains(kind));
+        indexToKind.append(kind);
     }
-    va_end(args);
     createMappings();
 }
 
@@ -1146,11 +1134,11 @@ void StatisticsMapping::createMappings()
 }
 
 const StatisticsMapping allStatistics;
-const StatisticsMapping heapStatistics(StNumAllocations, StNumAllocationScans, StKindNone);
-const StatisticsMapping diskLocalStatistics(StCycleDiskReadIOCycles, StSizeDiskRead, StNumDiskReads, StCycleDiskWriteIOCycles, StSizeDiskWrite, StNumDiskWrites, StNumDiskRetries, StKindNone);
-const StatisticsMapping diskRemoteStatistics(StTimeDiskReadIO, StSizeDiskRead, StNumDiskReads, StTimeDiskWriteIO, StSizeDiskWrite, StNumDiskWrites, StNumDiskRetries, StKindNone);
-const StatisticsMapping diskReadRemoteStatistics(StTimeDiskReadIO, StSizeDiskRead, StNumDiskReads, StNumDiskRetries, StKindNone);
-const StatisticsMapping diskWriteRemoteStatistics(StTimeDiskWriteIO, StSizeDiskWrite, StNumDiskWrites, StNumDiskRetries, StKindNone);
+const StatisticsMapping heapStatistics({StNumAllocations, StNumAllocationScans});
+const StatisticsMapping diskLocalStatistics({StCycleDiskReadIOCycles, StSizeDiskRead, StNumDiskReads, StCycleDiskWriteIOCycles, StSizeDiskWrite, StNumDiskWrites, StNumDiskRetries});
+const StatisticsMapping diskRemoteStatistics({StTimeDiskReadIO, StSizeDiskRead, StNumDiskReads, StTimeDiskWriteIO, StSizeDiskWrite, StNumDiskWrites, StNumDiskRetries});
+const StatisticsMapping diskReadRemoteStatistics({StTimeDiskReadIO, StSizeDiskRead, StNumDiskReads, StNumDiskRetries});
+const StatisticsMapping diskWriteRemoteStatistics({StTimeDiskWriteIO, StSizeDiskWrite, StNumDiskWrites, StNumDiskRetries});
 
 //--------------------------------------------------------------------------------------------------------------------
 

+ 5 - 4
system/jlib/jstats.h

@@ -22,6 +22,7 @@
 #include "jlib.hpp"
 #include "jmutex.hpp"
 #include <vector>
+#include <initializer_list>
 
 #include "jstatcodes.h"
 
@@ -359,10 +360,10 @@ protected:
 class jlib_decl StatisticsMapping
 {
 public:
-    //Takes a list of StatisticKind terminated by StKindNone
-    StatisticsMapping(StatisticKind kind, ...);
-    //Takes an existing Mapping, and extends it with a list of StatisticKind terminated by StKindNone
-    StatisticsMapping(const StatisticsMapping * from, ...);
+    //Takes a list of StatisticKind
+    StatisticsMapping(const std::initializer_list<StatisticKind> &kinds);
+    //Takes an existing Mapping, and extends it with a list of StatisticKind
+    StatisticsMapping(const StatisticsMapping * from, const std::initializer_list<StatisticKind> &kinds);
     //Accepts all StatisticKind values
     StatisticsMapping();
 

+ 1 - 1
thorlcr/thorutil/thormisc.cpp

@@ -1383,7 +1383,7 @@ IPerfMonHook *createThorMemStatsPerfMonHook(CJobBase &job, int maxLevel, IPerfMo
     return new CPerfMonHook(job, maxLevel, chain);
 }
 
-const StatisticsMapping spillStatistics(StTimeSpillElapsed, StTimeSortElapsed, StNumSpills, StSizeSpillFile, StKindNone);
+const StatisticsMapping spillStatistics({StTimeSpillElapsed, StTimeSortElapsed, StNumSpills, StSizeSpillFile});
 
 bool isOOMException(IException *_e)
 {