All of your labs and homework for this class will need to implement logging,
the official documentation for the logging library we will be using is here
here are a few programs followed by the output of the logs when they are run
Example 1
File: main1.cpp
#include "cmpslib19.h"
// INCLUDE THE LIBRARY FOR THE LOGGING FUNCTIONS AND THE MACRO TO INITIALIZE IT
#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
void PrintArray(int*,int);
int main()
{
// set up the logger
InitializeLogger("main1.log");
LOG(INFO) << "Here is just a general comment to be logged to the file\n";
// also displays to screen like cout
LOG(WARNING) << "Warning level comments have a higher priority \n";
// also displays to screen like cout
LOG (ERROR) << "Error level comments have the highest priority \n";
return 0;
}
void PrintArray(int* arr, int count)
{
/* here is a function to print the contents of an integer array
we will do a lot of logging to try to give an example of the levels */
// log that you are starting a function and the name of the that function
// this is info becuase its not vital
LOG(INFO) << "Start " << __PRETTY_FUNCTION__ << endl;
// an example of an error level message .. this is a real problem
if( arr == nullptr)
LOG (ERROR) << __PRETTY_FUNCTION__ << " was called incorrectly, 1st parameter is a nullpointer this must point to a valid array" << endl;
// an example of an warning level message .. this is a potential problem
if( count < 1 )
LOG (WARNING) << __PRETTY_FUNCTION__ << " was called with a count of less than 1, you cant exactly print out < 1 values from an array..function will do nothing" << endl;
// go ahead and print out the values
for (int loop=0;loop<count;loop++)
{
// log some more diagnostic messages inside the loop
LOG (INFO) << "inside for loop loop=" << loop << endl;
std::cout << "array[" << loop << "] value:" << arr[loop] << endl;
}
// log that you are ending a function and the name of the that function
// this is info becuase its not vital
LOG(INFO) << "End " << __PRETTY_FUNCTION__ << endl;
}
output of main1.log
File: main1.log
2021-11-28 16:26:42,248 INFO [default] Here is just a general comment to be logged to the file
2021-11-28 16:26:42,249 WARNING [default] Warning level comments have a higher priority
2021-11-28 16:26:42,249 ERROR [default] Error level comments have the highest priority
Example 2
File: main2.cpp
#include "cmpslib19.h"
// INCLUDE THE LIBRARY FOR THE LOGGING FUNCTIONS AND THE MACRO TO INITIALIZE IT
#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
int main()
{
// set up the logger
InitializeLogger("main2.log");
int iValOne =23;
LOG (INFO) << "Here is just a general comment to be logged to the file\n";
// it works like a cout statement, you can display the values of variables
LOG (INFO) << "iValOne is an integer and it has the value " << iValOne << endl;
LOG (INFO) << "iValone one doubled is " << (iValOne*2) << " and trippled it is " << (iValOne*3) << endl;
return 0;
}
output of main2.log
File: main2.log
2021-11-28 16:26:43,181 INFO [default] Here is just a general comment to be logged to the file
2021-11-28 16:26:43,181 INFO [default] iValOne is an integer and it has the value 23
2021-11-28 16:26:43,181 INFO [default] iValone one doubled is 46 and trippled it is 69
Example 3
File: main3.cpp
#include "cmpslib19.h"
// INCLUDE THE LIBRARY FOR THE LOGGING FUNCTIONS AND THE MACRO TO INITIALIZE IT
#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
int main()
{
// set up the logger
InitializeLogger("main3.log");
LOG(INFO) << "testing conditional logging " << endl;
for (int loop =0; loop<10; loop++)
{
LOG(INFO) << "loop=" << loop << endl;
LOG_IF(loop==5, INFO) << "Logged only when loop==5 . loop=" << loop << endl;
}
LOG(INFO) << endl << endl; // a couple blank lines
for (int loop =0; loop<10; loop++)
{
LOG(INFO) << "loop=" << loop << endl;
LOG_EVERY_N(2, INFO) << "Logged every second iteration. loop=" << loop << endl;
}
LOG(INFO) << endl << endl; // a couple blank lines
for (int loop =0; loop<10; loop++)
{
LOG(INFO) << "loop=" << loop << endl;
LOG_AFTER_N(2, INFO) << "Log after 2 hits. loop=" << loop << endl;
}
LOG(INFO) << endl << endl; // a couple blank lines
for (int loop =0; loop<10; loop++)
{
LOG(INFO) << "loop=" << loop << endl;
LOG_N_TIMES(3, INFO) << "Log only 3 times. loop=" << loop << endl;
}
return 0;
}
output of main3.log
File: main3.log
2021-11-28 16:26:44,125 INFO [default] testing conditional logging
2021-11-28 16:26:44,125 INFO [default] loop=0
2021-11-28 16:26:44,125 INFO [default] loop=1
2021-11-28 16:26:44,125 INFO [default] loop=2
2021-11-28 16:26:44,125 INFO [default] loop=3
2021-11-28 16:26:44,125 INFO [default] loop=4
2021-11-28 16:26:44,125 INFO [default] loop=5
2021-11-28 16:26:44,125 INFO [default] Logged only when loop==5 . loop=5
2021-11-28 16:26:44,125 INFO [default] loop=6
2021-11-28 16:26:44,125 INFO [default] loop=7
2021-11-28 16:26:44,125 INFO [default] loop=8
2021-11-28 16:26:44,125 INFO [default] loop=9
2021-11-28 16:26:44,125 INFO [default]
2021-11-28 16:26:44,125 INFO [default] loop=0
2021-11-28 16:26:44,125 INFO [default] loop=1
2021-11-28 16:26:44,125 INFO [default] Logged every second iteration. loop=1
2021-11-28 16:26:44,125 INFO [default] loop=2
2021-11-28 16:26:44,125 INFO [default] loop=3
2021-11-28 16:26:44,125 INFO [default] Logged every second iteration. loop=3
2021-11-28 16:26:44,125 INFO [default] loop=4
2021-11-28 16:26:44,125 INFO [default] loop=5
2021-11-28 16:26:44,125 INFO [default] Logged every second iteration. loop=5
2021-11-28 16:26:44,125 INFO [default] loop=6
2021-11-28 16:26:44,125 INFO [default] loop=7
2021-11-28 16:26:44,125 INFO [default] Logged every second iteration. loop=7
2021-11-28 16:26:44,125 INFO [default] loop=8
2021-11-28 16:26:44,125 INFO [default] loop=9
2021-11-28 16:26:44,125 INFO [default] Logged every second iteration. loop=9
2021-11-28 16:26:44,125 INFO [default]
2021-11-28 16:26:44,125 INFO [default] loop=0
2021-11-28 16:26:44,125 INFO [default] loop=1
2021-11-28 16:26:44,125 INFO [default] loop=2
2021-11-28 16:26:44,125 INFO [default] Log after 2 hits. loop=2
2021-11-28 16:26:44,125 INFO [default] loop=3
2021-11-28 16:26:44,125 INFO [default] Log after 2 hits. loop=3
2021-11-28 16:26:44,125 INFO [default] loop=4
2021-11-28 16:26:44,125 INFO [default] Log after 2 hits. loop=4
2021-11-28 16:26:44,125 INFO [default] loop=5
2021-11-28 16:26:44,125 INFO [default] Log after 2 hits. loop=5
2021-11-28 16:26:44,125 INFO [default] loop=6
2021-11-28 16:26:44,125 INFO [default] Log after 2 hits. loop=6
2021-11-28 16:26:44,125 INFO [default] loop=7
2021-11-28 16:26:44,125 INFO [default] Log after 2 hits. loop=7
2021-11-28 16:26:44,125 INFO [default] loop=8
2021-11-28 16:26:44,125 INFO [default] Log after 2 hits. loop=8
2021-11-28 16:26:44,125 INFO [default] loop=9
2021-11-28 16:26:44,125 INFO [default] Log after 2 hits. loop=9
2021-11-28 16:26:44,125 INFO [default]
2021-11-28 16:26:44,125 INFO [default] loop=0
2021-11-28 16:26:44,126 INFO [default] Log only 3 times. loop=0
2021-11-28 16:26:44,126 INFO [default] loop=1
2021-11-28 16:26:44,126 INFO [default] Log only 3 times. loop=1
2021-11-28 16:26:44,126 INFO [default] loop=2
2021-11-28 16:26:44,126 INFO [default] Log only 3 times. loop=2
2021-11-28 16:26:44,126 INFO [default] loop=3
2021-11-28 16:26:44,126 INFO [default] loop=4
2021-11-28 16:26:44,126 INFO [default] loop=5
2021-11-28 16:26:44,126 INFO [default] loop=6
2021-11-28 16:26:44,126 INFO [default] loop=7
2021-11-28 16:26:44,126 INFO [default] loop=8
2021-11-28 16:26:44,126 INFO [default] loop=9
Example 4
File: main4.cpp
#include "cmpslib19.h"
// INCLUDE THE LIBRARY FOR THE LOGGING FUNCTIONS AND THE MACRO TO INITIALIZE IT
#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
typedef struct
{
int age;
string name;
} PugDog;
int main()
{
// set up the logger
InitializeLogger("main4.log");
int one =111;
LOG (INFO) << "The value of one is " << one << "\n";
LOG (INFO) << "The datatype of one is " << typeid(one).name() << "\n"; // standard library
LOG (INFO) << "The classname of one is " << GetClassName(one) << "\n"; // GetClassName is in cmpslib19.h
LOG (INFO) << "The address of one is " << &one << "\n";
return 0;
}
output of main4.log
File: main4.log
2021-11-28 16:26:45,051 INFO [default] The value of one is 111
2021-11-28 16:26:45,051 INFO [default] The datatype of one is i
2021-11-28 16:26:45,052 INFO [default] The classname of one is int
2021-11-28 16:26:45,052 INFO [default] The address of one is 0x7ffd00ac364c
Example 5
File: main5.cpp
#include "cmpslib19.h"
// INCLUDE THE LIBRARY FOR THE LOGGING FUNCTIONS AND THE MACRO TO INITIALIZE IT
#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
#define ARRAYSIZE 50
// returns a value that is half of the input
double Half(int input)
{
// ALWAYS log the start of the functions FIRST , Log ALL the parameters in order
LOG(INFO) << "Start " << __PRETTY_FUNCTION__ << endl;
LOG(INFO) << "Params: " << endl;
LOG(INFO) << VarInfo(input) << endl;
double temp = input/2.0;
LOG(INFO) << "End " << __PRETTY_FUNCTION__ << endl;
LOG(INFO) << "End Params: " << input << endl;// log the values at the end
return temp;
}
// return the larger of two values
int LargerValue(int one, int two)
{
// ALWAYS log the start of the functions FIRST , Log ALL the parameters in order
LOG(INFO) << "Start " << __PRETTY_FUNCTION__ << endl;
LOG(INFO) << "Params: " << endl;
LOG(INFO) << VarInfo(one) << endl;// VarInfo is a macro defined in cmpslib19.h shows type, value and size.... dont use for variables of a custom class
LOG(INFO) << VarInfo(two) << endl;
if (one > two)
{
LOG(INFO) << "End " << __PRETTY_FUNCTION__ << endl;
LOG(INFO) << "Returning: " << one << endl;// since this function does not return void log that you are about to return a value
return one;
}
else
{
LOG(INFO) << "End " << __PRETTY_FUNCTION__ << endl;
LOG(INFO) << "Returning: " << two << endl;// since this function does not return void log that you are about to return a value
return two;
}
}
// find the larger of two values and store it in parmeter 3
void LargerValue(long unsigned int one, long unsigned int two, long unsigned int & result)
{
// ALWAYS log the start of the functions FIRST , Log ALL the parameters in order
LOG(INFO) << "Start " << __PRETTY_FUNCTION__ << endl;
LOG(INFO) << "Params: " << endl;
LOG(INFO) << VarInfo(one) << endl;// VarInfo is a macro defined in cmpslib19.h shows type, value and size.... dont use for variables of a custom class
LOG(INFO) << VarInfo(two) << endl;
LOG(INFO) << VarInfo(result) << endl;
if (one > two)
result = one;
else
result = two;
LOG(INFO) << "End " << __PRETTY_FUNCTION__ << endl;
LOG(INFO) << "End Params: " << one << " , " << two << " , " << result << endl;// log the values at the end
}
int main()
{
// set up the logger
InitializeLogger("main5.log");
// test the Half function
int iValOne =23;
double dValOne = Half( iValOne );
cout << Half(iValOne) << endl;
cout <<"Test Half " << ((dValOne == 11.5 ) ? "Pass" : "Fail") << endl;
iValOne=10;
dValOne = Half(iValOne);
cout <<"Test Half " << ((dValOne ==5 ) ? "Pass" : "Fail") << endl;
iValOne=0;
dValOne = Half(iValOne);
cout <<"Test Half " << ((dValOne ==0 ) ? "Pass" : "Fail") << endl;
cout <<"Test LargerValue " << ((LargerValue(5,0) == 5 ) ? "Pass" : "Fail") << endl;
cout <<"Test LargerValue " << ((LargerValue(0,0) == 0 ) ? "Pass" : "Fail") << endl;
cout <<"Test LargerValue " << ((LargerValue(-5,0) == 0 ) ? "Pass" : "Fail") << endl;
cout <<"Test LargerValue " << ((LargerValue(55,0) == 55 ) ? "Pass" : "Fail") << endl;
cout <<"Test LargerValue " << ((LargerValue(5,100) == 100) ? "Pass" : "Fail") << endl;
long unsigned int luiValOne = 2000000000;
long unsigned int luiValTwo = 3000000000;
long unsigned int result;
LargerValue(luiValOne,luiValTwo,result);
cout <<"Test LargerValue " << ((result == luiValTwo ) ? "Pass" : "Fail") << endl;
LargerValue(luiValTwo,luiValOne,result);
cout <<"Test LargerValue " << ((result == luiValTwo ) ? "Pass" : "Fail") << endl;
return 0;
}
output of main5.log
File: main5.log
2021-11-28 16:32:32,099 INFO [default] Preparing to fill array with random numbers
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 44into iData[0]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 14into iData[1]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 15into iData[2]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 23into iData[3]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 6into iData[4]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 40into iData[5]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 16into iData[6]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 29into iData[7]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 4into iData[8]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 47into iData[9]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 35into iData[10]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 28into iData[11]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 18into iData[12]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 3into iData[13]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 32into iData[14]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 33into iData[15]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 35into iData[16]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 16into iData[17]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 2into iData[18]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 42into iData[19]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 1into iData[20]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 42into iData[21]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 43into iData[22]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 42into iData[23]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 43into iData[24]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 36into iData[25]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 9into iData[26]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 26into iData[27]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 7into iData[28]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 39into iData[29]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 11into iData[30]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 1into iData[31]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 2into iData[32]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 26into iData[33]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 25into iData[34]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 10into iData[35]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 17into iData[36]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 42into iData[37]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 38into iData[38]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 20into iData[39]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 40into iData[40]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 22into iData[41]
2021-11-28 16:32:32,099 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,099 INFO [default] Storing 50into iData[42]
2021-11-28 16:32:32,100 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] Storing 7into iData[43]
2021-11-28 16:32:32,100 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] Storing 25into iData[44]
2021-11-28 16:32:32,100 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] Storing 31into iData[45]
2021-11-28 16:32:32,100 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] Storing 41into iData[46]
2021-11-28 16:32:32,100 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] Storing 9into iData[47]
2021-11-28 16:32:32,100 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] Storing 48into iData[48]
2021-11-28 16:32:32,100 INFO [default] Start int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] End int CreateARandomNumber(int, int)
2021-11-28 16:32:32,100 INFO [default] Storing 45into iData[49]
2021-11-28 16:32:32,100 INFO [default] Start void SortArray(T*, int, bool) [with T = int]
2021-11-28 16:32:32,100 INFO [default] Sorting the array ascending order
2021-11-28 16:32:32,100 INFO [default] Swaping postion 0 and 1
2021-11-28 16:32:32,100 INFO [default] Swaping postion 1 and 2
2021-11-28 16:32:32,100 INFO [default] Swaping postion 2 and 3
2021-11-28 16:32:32,100 INFO [default] Swaping postion 3 and 4
2021-11-28 16:32:32,100 INFO [default] Swaping postion 4 and 5
2021-11-28 16:32:32,100 INFO [default] Swaping postion 5 and 6
2021-11-28 16:32:32,100 INFO [default] Swaping postion 6 and 7
2021-11-28 16:32:32,100 INFO [default] Swaping postion 7 and 8
2021-11-28 16:32:32,100 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,100 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,100 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,100 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,100 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,100 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,100 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,100 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,100 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,100 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,100 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,100 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,100 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,100 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,100 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,100 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,100 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,100 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,100 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,100 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,100 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,100 INFO [default] Swaping postion 30 and 31
2021-11-28 16:32:32,100 INFO [default] Swaping postion 31 and 32
2021-11-28 16:32:32,100 INFO [default] Swaping postion 32 and 33
2021-11-28 16:32:32,100 INFO [default] Swaping postion 33 and 34
2021-11-28 16:32:32,100 INFO [default] Swaping postion 34 and 35
2021-11-28 16:32:32,100 INFO [default] Swaping postion 35 and 36
2021-11-28 16:32:32,100 INFO [default] Swaping postion 36 and 37
2021-11-28 16:32:32,100 INFO [default] Swaping postion 37 and 38
2021-11-28 16:32:32,100 INFO [default] Swaping postion 38 and 39
2021-11-28 16:32:32,100 INFO [default] Swaping postion 39 and 40
2021-11-28 16:32:32,100 INFO [default] Swaping postion 40 and 41
2021-11-28 16:32:32,100 INFO [default] Swaping postion 42 and 43
2021-11-28 16:32:32,100 INFO [default] Swaping postion 43 and 44
2021-11-28 16:32:32,100 INFO [default] Swaping postion 44 and 45
2021-11-28 16:32:32,100 INFO [default] Swaping postion 45 and 46
2021-11-28 16:32:32,100 INFO [default] Swaping postion 46 and 47
2021-11-28 16:32:32,100 INFO [default] Swaping postion 47 and 48
2021-11-28 16:32:32,100 INFO [default] Swaping postion 48 and 49
2021-11-28 16:32:32,100 WARNING [default] --At the end of pass 1 through the array, swapped 47 values
2021-11-28 16:32:32,100 INFO [default] Swaping postion 2 and 3
2021-11-28 16:32:32,100 INFO [default] Swaping postion 4 and 5
2021-11-28 16:32:32,100 INFO [default] Swaping postion 5 and 6
2021-11-28 16:32:32,100 INFO [default] Swaping postion 6 and 7
2021-11-28 16:32:32,100 INFO [default] Swaping postion 8 and 9
2021-11-28 16:32:32,100 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,100 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,100 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,100 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,100 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,100 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,100 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,100 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,100 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,100 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,100 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,100 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,100 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,100 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,100 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,100 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,100 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,100 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,100 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,100 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,100 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,100 INFO [default] Swaping postion 30 and 31
2021-11-28 16:32:32,100 INFO [default] Swaping postion 31 and 32
2021-11-28 16:32:32,100 INFO [default] Swaping postion 32 and 33
2021-11-28 16:32:32,100 INFO [default] Swaping postion 33 and 34
2021-11-28 16:32:32,100 INFO [default] Swaping postion 34 and 35
2021-11-28 16:32:32,100 INFO [default] Swaping postion 35 and 36
2021-11-28 16:32:32,100 INFO [default] Swaping postion 36 and 37
2021-11-28 16:32:32,100 INFO [default] Swaping postion 37 and 38
2021-11-28 16:32:32,100 INFO [default] Swaping postion 38 and 39
2021-11-28 16:32:32,100 INFO [default] Swaping postion 39 and 40
2021-11-28 16:32:32,100 INFO [default] Swaping postion 41 and 42
2021-11-28 16:32:32,100 INFO [default] Swaping postion 42 and 43
2021-11-28 16:32:32,100 INFO [default] Swaping postion 43 and 44
2021-11-28 16:32:32,100 INFO [default] Swaping postion 44 and 45
2021-11-28 16:32:32,100 INFO [default] Swaping postion 45 and 46
2021-11-28 16:32:32,100 INFO [default] Swaping postion 47 and 48
2021-11-28 16:32:32,100 WARNING [default] --At the end of pass 2 through the array, swapped 42 values
2021-11-28 16:32:32,100 INFO [default] Swaping postion 1 and 2
2021-11-28 16:32:32,100 INFO [default] Swaping postion 3 and 4
2021-11-28 16:32:32,100 INFO [default] Swaping postion 5 and 6
2021-11-28 16:32:32,100 INFO [default] Swaping postion 7 and 8
2021-11-28 16:32:32,100 INFO [default] Swaping postion 8 and 9
2021-11-28 16:32:32,100 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,100 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,100 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,100 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,100 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,100 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,100 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,100 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,100 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,100 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,100 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,100 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,100 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,100 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,100 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,100 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,101 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,101 INFO [default] Swaping postion 30 and 31
2021-11-28 16:32:32,101 INFO [default] Swaping postion 31 and 32
2021-11-28 16:32:32,101 INFO [default] Swaping postion 32 and 33
2021-11-28 16:32:32,101 INFO [default] Swaping postion 33 and 34
2021-11-28 16:32:32,101 INFO [default] Swaping postion 34 and 35
2021-11-28 16:32:32,101 INFO [default] Swaping postion 35 and 36
2021-11-28 16:32:32,101 INFO [default] Swaping postion 36 and 37
2021-11-28 16:32:32,101 INFO [default] Swaping postion 37 and 38
2021-11-28 16:32:32,101 INFO [default] Swaping postion 38 and 39
2021-11-28 16:32:32,101 INFO [default] Swaping postion 40 and 41
2021-11-28 16:32:32,101 INFO [default] Swaping postion 41 and 42
2021-11-28 16:32:32,101 INFO [default] Swaping postion 42 and 43
2021-11-28 16:32:32,101 INFO [default] Swaping postion 43 and 44
2021-11-28 16:32:32,101 INFO [default] Swaping postion 44 and 45
2021-11-28 16:32:32,101 INFO [default] Swaping postion 46 and 47
2021-11-28 16:32:32,101 WARNING [default] --At the end of pass 3 through the array, swapped 37 values
2021-11-28 16:32:32,101 INFO [default] Swaping postion 0 and 1
2021-11-28 16:32:32,101 INFO [default] Swaping postion 4 and 5
2021-11-28 16:32:32,101 INFO [default] Swaping postion 7 and 8
2021-11-28 16:32:32,101 INFO [default] Swaping postion 8 and 9
2021-11-28 16:32:32,101 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,101 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,101 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,101 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,101 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,101 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,101 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,101 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,101 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,101 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,101 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,101 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,101 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,101 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,101 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,101 INFO [default] Swaping postion 30 and 31
2021-11-28 16:32:32,101 INFO [default] Swaping postion 31 and 32
2021-11-28 16:32:32,101 INFO [default] Swaping postion 32 and 33
2021-11-28 16:32:32,101 INFO [default] Swaping postion 33 and 34
2021-11-28 16:32:32,101 INFO [default] Swaping postion 34 and 35
2021-11-28 16:32:32,101 INFO [default] Swaping postion 35 and 36
2021-11-28 16:32:32,101 INFO [default] Swaping postion 36 and 37
2021-11-28 16:32:32,101 INFO [default] Swaping postion 37 and 38
2021-11-28 16:32:32,101 INFO [default] Swaping postion 39 and 40
2021-11-28 16:32:32,101 INFO [default] Swaping postion 40 and 41
2021-11-28 16:32:32,101 INFO [default] Swaping postion 41 and 42
2021-11-28 16:32:32,101 INFO [default] Swaping postion 42 and 43
2021-11-28 16:32:32,101 INFO [default] Swaping postion 43 and 44
2021-11-28 16:32:32,101 WARNING [default] --At the end of pass 4 through the array, swapped 32 values
2021-11-28 16:32:32,101 INFO [default] Swaping postion 3 and 4
2021-11-28 16:32:32,101 INFO [default] Swaping postion 6 and 7
2021-11-28 16:32:32,101 INFO [default] Swaping postion 7 and 8
2021-11-28 16:32:32,101 INFO [default] Swaping postion 8 and 9
2021-11-28 16:32:32,101 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,101 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,101 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,101 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,101 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,101 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,101 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,101 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,101 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,101 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,101 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,101 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,101 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,101 INFO [default] Swaping postion 30 and 31
2021-11-28 16:32:32,101 INFO [default] Swaping postion 31 and 32
2021-11-28 16:32:32,101 INFO [default] Swaping postion 33 and 34
2021-11-28 16:32:32,101 INFO [default] Swaping postion 34 and 35
2021-11-28 16:32:32,101 INFO [default] Swaping postion 35 and 36
2021-11-28 16:32:32,101 INFO [default] Swaping postion 36 and 37
2021-11-28 16:32:32,101 INFO [default] Swaping postion 38 and 39
2021-11-28 16:32:32,101 INFO [default] Swaping postion 39 and 40
2021-11-28 16:32:32,101 INFO [default] Swaping postion 40 and 41
2021-11-28 16:32:32,101 INFO [default] Swaping postion 41 and 42
2021-11-28 16:32:32,101 INFO [default] Swaping postion 42 and 43
2021-11-28 16:32:32,101 WARNING [default] --At the end of pass 5 through the array, swapped 28 values
2021-11-28 16:32:32,101 INFO [default] Swaping postion 2 and 3
2021-11-28 16:32:32,101 INFO [default] Swaping postion 6 and 7
2021-11-28 16:32:32,101 INFO [default] Swaping postion 7 and 8
2021-11-28 16:32:32,101 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,101 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,101 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,101 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,101 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,101 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,101 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,101 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,101 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,101 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,101 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,101 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,101 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,101 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,101 INFO [default] Swaping postion 30 and 31
2021-11-28 16:32:32,101 INFO [default] Swaping postion 32 and 33
2021-11-28 16:32:32,101 INFO [default] Swaping postion 33 and 34
2021-11-28 16:32:32,101 INFO [default] Swaping postion 34 and 35
2021-11-28 16:32:32,101 INFO [default] Swaping postion 35 and 36
2021-11-28 16:32:32,101 INFO [default] Swaping postion 37 and 38
2021-11-28 16:32:32,101 INFO [default] Swaping postion 38 and 39
2021-11-28 16:32:32,101 INFO [default] Swaping postion 39 and 40
2021-11-28 16:32:32,101 INFO [default] Swaping postion 40 and 41
2021-11-28 16:32:32,101 INFO [default] Swaping postion 41 and 42
2021-11-28 16:32:32,101 WARNING [default] --At the end of pass 6 through the array, swapped 27 values
2021-11-28 16:32:32,101 INFO [default] Swaping postion 1 and 2
2021-11-28 16:32:32,101 INFO [default] Swaping postion 5 and 6
2021-11-28 16:32:32,101 INFO [default] Swaping postion 6 and 7
2021-11-28 16:32:32,101 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,101 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,101 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,101 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,101 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,101 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,101 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,101 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,101 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,101 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,101 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,101 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,101 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,101 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,101 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,101 INFO [default] Swaping postion 31 and 32
2021-11-28 16:32:32,101 INFO [default] Swaping postion 32 and 33
2021-11-28 16:32:32,101 INFO [default] Swaping postion 33 and 34
2021-11-28 16:32:32,101 INFO [default] Swaping postion 34 and 35
2021-11-28 16:32:32,101 INFO [default] Swaping postion 36 and 37
2021-11-28 16:32:32,101 INFO [default] Swaping postion 37 and 38
2021-11-28 16:32:32,101 INFO [default] Swaping postion 38 and 39
2021-11-28 16:32:32,101 INFO [default] Swaping postion 39 and 40
2021-11-28 16:32:32,101 INFO [default] Swaping postion 40 and 41
2021-11-28 16:32:32,101 WARNING [default] --At the end of pass 7 through the array, swapped 27 values
2021-11-28 16:32:32,101 INFO [default] Swaping postion 0 and 1
2021-11-28 16:32:32,101 INFO [default] Swaping postion 5 and 6
2021-11-28 16:32:32,101 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,101 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,101 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,101 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,101 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,101 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,101 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,102 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,102 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,102 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,102 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,102 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,102 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,102 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,102 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,102 INFO [default] Swaping postion 30 and 31
2021-11-28 16:32:32,102 INFO [default] Swaping postion 31 and 32
2021-11-28 16:32:32,102 INFO [default] Swaping postion 32 and 33
2021-11-28 16:32:32,102 INFO [default] Swaping postion 33 and 34
2021-11-28 16:32:32,102 INFO [default] Swaping postion 35 and 36
2021-11-28 16:32:32,102 INFO [default] Swaping postion 36 and 37
2021-11-28 16:32:32,102 INFO [default] Swaping postion 37 and 38
2021-11-28 16:32:32,102 INFO [default] Swaping postion 38 and 39
2021-11-28 16:32:32,102 INFO [default] Swaping postion 39 and 40
2021-11-28 16:32:32,102 WARNING [default] --At the end of pass 8 through the array, swapped 26 values
2021-11-28 16:32:32,102 INFO [default] Swaping postion 4 and 5
2021-11-28 16:32:32,102 INFO [default] Swaping postion 8 and 9
2021-11-28 16:32:32,102 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,102 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,102 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,102 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,102 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,102 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,102 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,102 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,102 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,102 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,102 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,102 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,102 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,102 INFO [default] Swaping postion 30 and 31
2021-11-28 16:32:32,102 INFO [default] Swaping postion 32 and 33
2021-11-28 16:32:32,102 INFO [default] Swaping postion 34 and 35
2021-11-28 16:32:32,102 INFO [default] Swaping postion 35 and 36
2021-11-28 16:32:32,102 INFO [default] Swaping postion 36 and 37
2021-11-28 16:32:32,102 INFO [default] Swaping postion 37 and 38
2021-11-28 16:32:32,102 INFO [default] Swaping postion 38 and 39
2021-11-28 16:32:32,102 WARNING [default] --At the end of pass 9 through the array, swapped 22 values
2021-11-28 16:32:32,102 INFO [default] Swaping postion 3 and 4
2021-11-28 16:32:32,102 INFO [default] Swaping postion 7 and 8
2021-11-28 16:32:32,102 INFO [default] Swaping postion 8 and 9
2021-11-28 16:32:32,102 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,102 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,102 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,102 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,102 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,102 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,102 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,102 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,102 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,102 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,102 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,102 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,102 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,102 INFO [default] Swaping postion 31 and 32
2021-11-28 16:32:32,102 INFO [default] Swaping postion 33 and 34
2021-11-28 16:32:32,102 INFO [default] Swaping postion 34 and 35
2021-11-28 16:32:32,102 INFO [default] Swaping postion 35 and 36
2021-11-28 16:32:32,102 INFO [default] Swaping postion 37 and 38
2021-11-28 16:32:32,102 WARNING [default] --At the end of pass 10 through the array, swapped 21 values
2021-11-28 16:32:32,102 INFO [default] Swaping postion 2 and 3
2021-11-28 16:32:32,102 INFO [default] Swaping postion 6 and 7
2021-11-28 16:32:32,102 INFO [default] Swaping postion 7 and 8
2021-11-28 16:32:32,102 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,102 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,102 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,102 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,102 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,102 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,102 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,102 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,102 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,102 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,102 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,102 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,102 INFO [default] Swaping postion 30 and 31
2021-11-28 16:32:32,102 INFO [default] Swaping postion 32 and 33
2021-11-28 16:32:32,102 INFO [default] Swaping postion 33 and 34
2021-11-28 16:32:32,102 INFO [default] Swaping postion 34 and 35
2021-11-28 16:32:32,102 INFO [default] Swaping postion 36 and 37
2021-11-28 16:32:32,102 WARNING [default] --At the end of pass 11 through the array, swapped 20 values
2021-11-28 16:32:32,102 INFO [default] Swaping postion 1 and 2
2021-11-28 16:32:32,102 INFO [default] Swaping postion 6 and 7
2021-11-28 16:32:32,102 INFO [default] Swaping postion 8 and 9
2021-11-28 16:32:32,102 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,102 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,102 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,102 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,102 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,102 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,102 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,102 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,102 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,102 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,102 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,102 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,102 INFO [default] Swaping postion 31 and 32
2021-11-28 16:32:32,102 INFO [default] Swaping postion 32 and 33
2021-11-28 16:32:32,102 INFO [default] Swaping postion 33 and 34
2021-11-28 16:32:32,102 INFO [default] Swaping postion 35 and 36
2021-11-28 16:32:32,102 WARNING [default] --At the end of pass 12 through the array, swapped 19 values
2021-11-28 16:32:32,102 INFO [default] Swaping postion 0 and 1
2021-11-28 16:32:32,102 INFO [default] Swaping postion 5 and 6
2021-11-28 16:32:32,102 INFO [default] Swaping postion 7 and 8
2021-11-28 16:32:32,102 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,102 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,102 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,102 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,102 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,102 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,102 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,102 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,102 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,102 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,102 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,102 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,102 INFO [default] Swaping postion 30 and 31
2021-11-28 16:32:32,102 INFO [default] Swaping postion 31 and 32
2021-11-28 16:32:32,102 INFO [default] Swaping postion 32 and 33
2021-11-28 16:32:32,102 INFO [default] Swaping postion 34 and 35
2021-11-28 16:32:32,102 WARNING [default] --At the end of pass 13 through the array, swapped 19 values
2021-11-28 16:32:32,102 INFO [default] Swaping postion 4 and 5
2021-11-28 16:32:32,102 INFO [default] Swaping postion 6 and 7
2021-11-28 16:32:32,102 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,102 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,102 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,102 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,102 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,102 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,102 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,102 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,102 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,102 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,103 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,103 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,103 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,103 INFO [default] Swaping postion 30 and 31
2021-11-28 16:32:32,103 INFO [default] Swaping postion 31 and 32
2021-11-28 16:32:32,103 INFO [default] Swaping postion 33 and 34
2021-11-28 16:32:32,103 WARNING [default] --At the end of pass 14 through the array, swapped 18 values
2021-11-28 16:32:32,103 INFO [default] Swaping postion 3 and 4
2021-11-28 16:32:32,103 INFO [default] Swaping postion 5 and 6
2021-11-28 16:32:32,103 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,103 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,103 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,103 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,103 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,103 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,103 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,103 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,103 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,103 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,103 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,103 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,103 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,103 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,103 INFO [default] Swaping postion 30 and 31
2021-11-28 16:32:32,103 INFO [default] Swaping postion 32 and 33
2021-11-28 16:32:32,103 WARNING [default] --At the end of pass 15 through the array, swapped 18 values
2021-11-28 16:32:32,103 INFO [default] Swaping postion 2 and 3
2021-11-28 16:32:32,103 INFO [default] Swaping postion 4 and 5
2021-11-28 16:32:32,103 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,103 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,103 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,103 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,103 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,103 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,103 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,103 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,103 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,103 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,103 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,103 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,103 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,103 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,103 INFO [default] Swaping postion 31 and 32
2021-11-28 16:32:32,103 WARNING [default] --At the end of pass 16 through the array, swapped 17 values
2021-11-28 16:32:32,103 INFO [default] Swaping postion 1 and 2
2021-11-28 16:32:32,103 INFO [default] Swaping postion 3 and 4
2021-11-28 16:32:32,103 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,103 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,103 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,103 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,103 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,103 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,103 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,103 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,103 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,103 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,103 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,103 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,103 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,103 INFO [default] Swaping postion 30 and 31
2021-11-28 16:32:32,103 WARNING [default] --At the end of pass 17 through the array, swapped 16 values
2021-11-28 16:32:32,103 INFO [default] Swaping postion 0 and 1
2021-11-28 16:32:32,103 INFO [default] Swaping postion 2 and 3
2021-11-28 16:32:32,103 INFO [default] Swaping postion 8 and 9
2021-11-28 16:32:32,103 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,103 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,103 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,103 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,103 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,103 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,103 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,103 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,103 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,103 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,103 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,103 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,103 INFO [default] Swaping postion 29 and 30
2021-11-28 16:32:32,103 WARNING [default] --At the end of pass 18 through the array, swapped 16 values
2021-11-28 16:32:32,103 INFO [default] Swaping postion 1 and 2
2021-11-28 16:32:32,103 INFO [default] Swaping postion 7 and 8
2021-11-28 16:32:32,103 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,103 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,103 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,103 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,103 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,103 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,103 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,103 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,103 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,103 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,103 INFO [default] Swaping postion 28 and 29
2021-11-28 16:32:32,103 WARNING [default] --At the end of pass 19 through the array, swapped 13 values
2021-11-28 16:32:32,103 INFO [default] Swaping postion 0 and 1
2021-11-28 16:32:32,103 INFO [default] Swaping postion 6 and 7
2021-11-28 16:32:32,103 INFO [default] Swaping postion 8 and 9
2021-11-28 16:32:32,103 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,103 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,103 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,103 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,103 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,103 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,103 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,103 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,103 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,103 INFO [default] Swaping postion 27 and 28
2021-11-28 16:32:32,103 WARNING [default] --At the end of pass 20 through the array, swapped 13 values
2021-11-28 16:32:32,103 INFO [default] Swaping postion 5 and 6
2021-11-28 16:32:32,103 INFO [default] Swaping postion 7 and 8
2021-11-28 16:32:32,103 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,103 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,103 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,103 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,103 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,103 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,103 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,103 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,103 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,103 INFO [default] Swaping postion 26 and 27
2021-11-28 16:32:32,103 WARNING [default] --At the end of pass 21 through the array, swapped 12 values
2021-11-28 16:32:32,103 INFO [default] Swaping postion 6 and 7
2021-11-28 16:32:32,103 INFO [default] Swaping postion 8 and 9
2021-11-28 16:32:32,103 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,103 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,103 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,103 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,103 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,103 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,103 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,103 INFO [default] Swaping postion 25 and 26
2021-11-28 16:32:32,103 WARNING [default] --At the end of pass 22 through the array, swapped 10 values
2021-11-28 16:32:32,103 INFO [default] Swaping postion 5 and 6
2021-11-28 16:32:32,103 INFO [default] Swaping postion 7 and 8
2021-11-28 16:32:32,103 INFO [default] Swaping postion 8 and 9
2021-11-28 16:32:32,103 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,103 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,103 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,103 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,104 INFO [default] Swaping postion 24 and 25
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 23 through the array, swapped 8 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 7 and 8
2021-11-28 16:32:32,104 INFO [default] Swaping postion 8 and 9
2021-11-28 16:32:32,104 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,104 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,104 INFO [default] Swaping postion 23 and 24
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 24 through the array, swapped 5 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 6 and 7
2021-11-28 16:32:32,104 INFO [default] Swaping postion 7 and 8
2021-11-28 16:32:32,104 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,104 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,104 INFO [default] Swaping postion 22 and 23
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 25 through the array, swapped 5 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 5 and 6
2021-11-28 16:32:32,104 INFO [default] Swaping postion 6 and 7
2021-11-28 16:32:32,104 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,104 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,104 INFO [default] Swaping postion 21 and 22
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 26 through the array, swapped 5 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 4 and 5
2021-11-28 16:32:32,104 INFO [default] Swaping postion 5 and 6
2021-11-28 16:32:32,104 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,104 INFO [default] Swaping postion 20 and 21
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 27 through the array, swapped 4 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 3 and 4
2021-11-28 16:32:32,104 INFO [default] Swaping postion 4 and 5
2021-11-28 16:32:32,104 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,104 INFO [default] Swaping postion 19 and 20
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 28 through the array, swapped 4 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 2 and 3
2021-11-28 16:32:32,104 INFO [default] Swaping postion 3 and 4
2021-11-28 16:32:32,104 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,104 INFO [default] Swaping postion 18 and 19
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 29 through the array, swapped 4 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 1 and 2
2021-11-28 16:32:32,104 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,104 INFO [default] Swaping postion 17 and 18
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 30 through the array, swapped 3 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,104 INFO [default] Swaping postion 16 and 17
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 31 through the array, swapped 2 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,104 INFO [default] Swaping postion 15 and 16
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 32 through the array, swapped 2 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,104 INFO [default] Swaping postion 14 and 15
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 33 through the array, swapped 2 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 9 and 10
2021-11-28 16:32:32,104 INFO [default] Swaping postion 13 and 14
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 34 through the array, swapped 2 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 8 and 9
2021-11-28 16:32:32,104 INFO [default] Swaping postion 12 and 13
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 35 through the array, swapped 2 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 11 and 12
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 36 through the array, swapped 1 values
2021-11-28 16:32:32,104 INFO [default] Swaping postion 10 and 11
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 37 through the array, swapped 1 values
2021-11-28 16:32:32,104 WARNING [default] --At the end of pass 38 through the array, swapped 0 values
2021-11-28 16:32:32,104 INFO [default] End void SortArray(T*, int, bool) [with T = int]
Example 6
File: main6.cpp
#include "cmpslib19.h"
// INCLUDE THE LIBRARY FOR THE LOGGING FUNCTIONS AND THE MACRO TO INITIALIZE IT
#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
#define ARRAYSIZE 50
template<class T>
void SortArray(T * data, int count,bool decending = false)
{
LOG(INFO) << "Start " << __PRETTY_FUNCTION__ << endl;
if(NULL == data)
LOG(ERROR) << "the pointer to the array is NULL , you cant sort something if the pointer to it is null \
this is a good example of a HIGH importance thing to log because it will cause problems later in this function \
" ;
int NumberOfValuesSwappedThisPass=1;// cant be zero or it wont loop the first time
int NumberOfPasses=0;
if(decending)
{
LOG(INFO) << "Sorting the array in decending order \n"; // not a high priority more of an informative message
}
else
{
LOG(INFO) << "Sorting the array ascending order \n";
}
// sort decending
while (NumberOfValuesSwappedThisPass != 0)
{
NumberOfValuesSwappedThisPass=0;
NumberOfPasses++;
for(int Loop=0; Loop<count-1; Loop++)
if ( (decending)? data[Loop] < data[Loop+1]:data[Loop]>data[Loop+1] )
{
LOG(INFO) << "Swaping postion " << Loop << " and " << Loop+1 << endl;
std::swap(data[Loop],data[Loop+1]);
NumberOfValuesSwappedThisPass++;
}
LOG(WARNING) << "--At the end of pass " << NumberOfPasses << " through the array, swapped " << NumberOfValuesSwappedThisPass << " values \n";
}
LOG(INFO) << "End " << __PRETTY_FUNCTION__ << endl;
}
unsigned int RND_SEED=0;
int CreateARandomNumber(int min, int max)
{
LOG(INFO) << "Start " << __PRETTY_FUNCTION__ << endl;
if (! RND_SEED)
{
RND_SEED=time(NULL);
srand(RND_SEED);
}
int temp = ( ( rand() % (max-min+1) ) + min);
LOG(INFO) << "End " << __PRETTY_FUNCTION__ << endl;
return temp;
}
struct simplestruct
{
int somevalue;
};
int main()
{
// set up the logger
InitializeLogger("main5.log");
int iaData[ARRAYSIZE];
LOG (INFO) << "Preparing to fill array with random numbers";// just print out some text
for (int loop=0; loop<ARRAYSIZE; loop++)
{
int temp = CreateARandomNumber(1,ARRAYSIZE);
LOG (INFO) << "Storing " << temp << "into iData["<< loop <<"] \n";// log some data with a couple variables
iaData[loop]=temp;
}
SortArray(iaData,ARRAYSIZE,false);
for (int loop=0; loop<ARRAYSIZE; loop++)
{
cout << "iaData[" << loop << "]=" << iaData[loop] << endl;
}
return 0;
}
output of main6.log
File: main6.log
You will need to log the start and end of every function in this class
macros to help with that have been provided for you in the file cmpslib.h
when using LogStart or LogEnd pass in the parameters as they are DO NOT dereference pointers, just pass in the pointer parameters by name
log the end of a function before EVERY return in your fucnions call LogEndReturning ( value you are going to return )
you cannot return NULL , you can however return nullptr
passing NULL as a parameter to LogReturn will not compile
if the return type of a function is void use LogEnd
if the return typ is anything other than void use LogEndReturning
macro value
__LINE__ Integer value representing the current line in the source code file being compiled.
__FILE__ A string literal containing the presumed name of the source file being compiled.
__DATE__ A string literal in the form "mm dd yyyy" containing the date in which the compilation process began.
__TIME__ A string literal in the form "hh:mm:ss" containing the time at which the compilation process began.
An example Makefile, and the cmpslib.h can be found in the lab01 directory
Compilation and Linking
if you want to use the logging functions you will need to include cmpslib.h
and define the LOGGING_LEVEL