Jelajahi Sumber

Integrating changes from PR #4251 - add logging for rng

Ivan Savenko 1 tahun lalu
induk
melakukan
34b6eaa25e
3 mengubah file dengan 15 tambahan dan 0 penghapusan
  1. 1 0
      include/vstd/CLoggerBase.h
  2. 13 0
      lib/CRandomGenerator.cpp
  3. 1 0
      lib/logging/CLogger.cpp

+ 1 - 0
include/vstd/CLoggerBase.h

@@ -193,5 +193,6 @@ extern DLL_LINKAGE vstd::CLoggerBase * logNetwork;
 extern DLL_LINKAGE vstd::CLoggerBase * logAi;
 extern DLL_LINKAGE vstd::CLoggerBase * logAnim;
 extern DLL_LINKAGE vstd::CLoggerBase * logMod;
+extern DLL_LINKAGE vstd::CLoggerBase * logRng;
 
 VCMI_LIB_NAMESPACE_END

+ 13 - 0
lib/CRandomGenerator.cpp

@@ -15,21 +15,25 @@ VCMI_LIB_NAMESPACE_BEGIN
 
 CRandomGenerator::CRandomGenerator()
 {
+	logRng->trace("CRandomGenerator constructed");
 	resetSeed();
 }
 
 CRandomGenerator::CRandomGenerator(int seed)
 {
+	logRng->trace("CRandomGenerator constructed (%d)", seed);
 	setSeed(seed);
 }
 
 void CRandomGenerator::setSeed(int seed)
 {
+	logRng->trace("CRandomGenerator::setSeed (%d)", seed);
 	rand.seed(seed);
 }
 
 void CRandomGenerator::resetSeed()
 {
+	logRng->trace("CRandomGenerator::resetSeed");
 	boost::hash<std::string> stringHash;
 	auto threadIdHash = stringHash(boost::lexical_cast<std::string>(boost::this_thread::get_id()));
 	setSeed(static_cast<int>(threadIdHash * std::time(nullptr)));
@@ -37,16 +41,20 @@ void CRandomGenerator::resetSeed()
 
 int CRandomGenerator::nextInt(int upper)
 {
+	logRng->trace("CRandomGenerator::nextInt (%d)", upper);
 	return nextInt(0, upper);
 }
 
 int64_t CRandomGenerator::nextInt64(int64_t upper)
 {
+	logRng->trace("CRandomGenerator::nextInt64 (%d)", upper);
 	return nextInt64(0, upper);
 }
 
 int CRandomGenerator::nextInt(int lower, int upper)
 {
+	logRng->trace("CRandomGenerator::nextInt64 (%d, %d)", lower, upper);
+
 	if (lower > upper)
 		throw std::runtime_error("Invalid range provided: " + std::to_string(lower) + " ... " + std::to_string(upper));
 
@@ -55,17 +63,20 @@ int CRandomGenerator::nextInt(int lower, int upper)
 
 int CRandomGenerator::nextInt()
 {
+	logRng->trace("CRandomGenerator::nextInt64");
 	return TIntDist()(rand);
 }
 
 int CRandomGenerator::nextBinomialInt(int coinsCount, double coinChance)
 {
+	logRng->trace("CRandomGenerator::nextBinomialInt (%d, %f)", coinsCount, coinChance);
 	std::binomial_distribution<> distribution(coinsCount, coinChance);
 	return distribution(rand);
 }
 
 int64_t CRandomGenerator::nextInt64(int64_t lower, int64_t upper)
 {
+	logRng->trace("CRandomGenerator::nextInt64 (%d, %d)", lower, upper);
 	if (lower > upper)
 		throw std::runtime_error("Invalid range provided: " + std::to_string(lower) + " ... " + std::to_string(upper));
 
@@ -74,11 +85,13 @@ int64_t CRandomGenerator::nextInt64(int64_t lower, int64_t upper)
 
 double CRandomGenerator::nextDouble(double upper)
 {
+	logRng->trace("CRandomGenerator::nextDouble (%f)", upper);
 	return nextDouble(0, upper);
 }
 
 double CRandomGenerator::nextDouble(double lower, double upper)
 {
+	logRng->trace("CRandomGenerator::nextDouble (%f, %f)", lower, upper);
 	if(lower > upper)
 		throw std::runtime_error("Invalid range provided: " + std::to_string(lower) + " ... " + std::to_string(upper));
 

+ 1 - 0
lib/logging/CLogger.cpp

@@ -96,6 +96,7 @@ DLL_LINKAGE vstd::CLoggerBase * logNetwork = CLogger::getLogger(CLoggerDomain("n
 DLL_LINKAGE vstd::CLoggerBase * logAi = CLogger::getLogger(CLoggerDomain("ai"));
 DLL_LINKAGE vstd::CLoggerBase * logAnim = CLogger::getLogger(CLoggerDomain("animation"));
 DLL_LINKAGE vstd::CLoggerBase * logMod = CLogger::getLogger(CLoggerDomain("mod"));
+DLL_LINKAGE vstd::CLoggerBase * logRng = CLogger::getLogger(CLoggerDomain("rng"));
 
 CLogger * CLogger::getLogger(const CLoggerDomain & domain)
 {