summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/main.cpp7
-rw-r--r--src/util/stats.h20
2 files changed, 22 insertions, 5 deletions
diff --git a/src/main/main.cpp b/src/main/main.cpp
index fcd322e99..563fa472e 100644
--- a/src/main/main.cpp
+++ b/src/main/main.cpp
@@ -181,7 +181,7 @@ int runCvc4(int argc, char* argv[]) {
const char* filename = inputFromStdin ? "<stdin>" : argv[firstArgIndex];
ReferenceStat< const char* > s_statFilename("filename", filename);
- StatisticsRegistry::registerStat(&s_statFilename);
+ RegisterStatistic statFilenameReg(&s_statFilename);
if(options.inputLanguage == language::input::LANG_AUTO) {
if( inputFromStdin ) {
@@ -273,15 +273,12 @@ int runCvc4(int argc, char* argv[]) {
#endif
ReferenceStat< Result > s_statSatResult("sat/unsat", result);
- StatisticsRegistry::registerStat(&s_statSatResult);
+ RegisterStatistic statSatResultReg(&s_statSatResult);
if(options.statistics) {
StatisticsRegistry::flushStatistics(*options.err);
}
- StatisticsRegistry::unregisterStat(&s_statSatResult);
- StatisticsRegistry::unregisterStat(&s_statFilename);
-
return returnValue;
}
diff --git a/src/util/stats.h b/src/util/stats.h
index bf2e9d46c..978893a51 100644
--- a/src/util/stats.h
+++ b/src/util/stats.h
@@ -703,6 +703,26 @@ public:
} \
} _StatField
+/**
+ * Resource-acquisition-is-initialization idiom for statistics
+ * registry. Useful for stack-based statistics (like in the driver).
+ * Generally, for statistics kept in a member field of class, it's
+ * better to use the above KEEP_STATISTIC(), which does declaration of
+ * the member, construction of the statistic, and
+ * registration/unregistration. This RAII class only does
+ * registration and unregistration.
+ */
+class RegisterStatistic {
+ Stat* d_stat;
+public:
+ RegisterStatistic(Stat* stat) : d_stat(stat) {
+ StatisticsRegistry::registerStat(d_stat);
+ }
+ ~RegisterStatistic() {
+ StatisticsRegistry::unregisterStat(d_stat);
+ }
+};/* class RegisterStatistic */
+
#undef __CVC4_USE_STATISTICS
}/* CVC4 namespace */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback