1 #include "ExpenseLog.h"
2 
ExpenseModule(const char * moduleName)3 ExpenseModule::ExpenseModule(const char* moduleName)
4 {
5 	chModuleName=moduleName;
6 	uiDoubleAdditions=uiDoubleMultiplications=uiIntAdditions=uiIntMultiplications=uiAssignments=uiBoolOp=0;
7 	uiMrdDA=uiMrdDM=uiMrdIA=uiMrdIM=uiMrdAssign=uiMrdBO=0;
8 }
9 
~ExpenseModule()10 ExpenseModule::~ExpenseModule() {};
11 
Clear()12 void ExpenseModule::Clear()
13 {
14 	uiDoubleAdditions=uiDoubleMultiplications=uiIntAdditions=uiIntMultiplications=uiAssignments=uiBoolOp=0;
15 	uiMrdDA=uiMrdDM=uiMrdIA=uiMrdIM=uiMrdAssign=uiMrdBO=0;
16 }
17 
AddDoubleAdditons(unsigned int number)18 void ExpenseModule::AddDoubleAdditons(unsigned int number)
19 {
20 	uiDoubleAdditions+=number;
21 	if (uiDoubleAdditions>=MRD)
22 	{
23 		uiDoubleAdditions-=MRD;
24 		++uiMrdDA;
25 	}
26 }
27 
AddDoubleMultiplications(unsigned int number)28 void ExpenseModule::AddDoubleMultiplications(unsigned int number)
29 {
30 	uiDoubleMultiplications+=number;
31 	if (uiDoubleMultiplications>=MRD)
32 	{
33 		uiDoubleMultiplications-=MRD;
34 		++uiMrdDM;
35 	}
36 }
37 
AddIntAdditons(unsigned int number)38 void ExpenseModule::AddIntAdditons(unsigned int number)
39 {
40 	uiIntAdditions+=number;
41 	if (uiIntAdditions>=MRD)
42 	{
43 		uiIntAdditions-=MRD;
44 		++uiMrdIA;
45 	}
46 }
47 
AddIntMultiplications(unsigned int number)48 void ExpenseModule::AddIntMultiplications(unsigned int number)
49 {
50 	uiIntMultiplications+=number;
51 	if (uiIntMultiplications>=MRD)
52 	{
53 		uiIntMultiplications-=MRD;
54 		++uiMrdIM;
55 	}
56 }
57 
AddAssignments(unsigned int number)58 void ExpenseModule::AddAssignments(unsigned int number)
59 {
60 	uiAssignments+=number;
61 	if (uiAssignments>=MRD)
62 	{
63 		uiAssignments-=MRD;
64 		++uiMrdAssign;
65 	}
66 }
67 
AddBoolOperations(unsigned int number)68 void ExpenseModule::AddBoolOperations(unsigned int number)
69 {
70 	uiBoolOp+=number;
71 	if (uiBoolOp>=MRD)
72 	{
73 		uiBoolOp-=MRD;
74 		++uiMrdBO;
75 	}
76 }
77 
AddOperations(unsigned int IntAdd,unsigned int IntMul,unsigned int DoubleAdd,unsigned int DoubleMul,unsigned int Assigns,unsigned int BoolOp)78 void ExpenseModule::AddOperations(unsigned int IntAdd, unsigned int IntMul, unsigned int DoubleAdd, unsigned int DoubleMul, unsigned int Assigns, unsigned int BoolOp)
79 {
80 	this->AddIntAdditons(IntAdd);
81 	this->AddIntMultiplications(IntMul);
82 	this->AddDoubleAdditons(DoubleAdd);
83 	this->AddDoubleMultiplications(DoubleMul);
84 	this->AddAssignments(Assigns);
85 	this->AddBoolOperations(BoolOp);
86 }
87 
PrintfSelf(FILE * file)88 void ExpenseModule::PrintfSelf(FILE* file)
89 {
90 	fprintf(file,"\n***********\n Module:  %s\n Additions:\n Double: %3.0d%9d\tInteger: %3.0d%9d",chModuleName,uiMrdDA,uiDoubleAdditions,uiMrdIA,uiIntAdditions);
91 	fprintf(file,"\n\n Multiplications:\n Double: %3.0d%9d\tInteger: %3.0d%9d\n",uiMrdDM,uiDoubleMultiplications,uiMrdIM,uiIntMultiplications);
92 	fprintf(file,"\n Assignments: %3.0d%9d\tBool Operations: %3.0d%9d\n",uiMrdAssign,uiAssignments,uiMrdBO,uiBoolOp);
93 	fprintf(file,"\n***********\n");
94 }
95 
96 
97 
98 
99 /***********************************************************************************************************************/
100 
ExpenseLog(void)101 ExpenseLog::ExpenseLog(void)
102 {
103 }
104 
~ExpenseLog(void)105 ExpenseLog::~ExpenseLog(void)
106 {
107 	for (size_t i=0; i<vModules.size(); ++i)
108 	{
109 		delete vModules.at(i);
110 		vModules.at(i)=NULL;
111 	}
112 	vModules.clear();
113 }
114 
AddModule(const char * name)115 ExpenseModule* ExpenseLog::AddModule(const char* name)
116 {
117 	ExpenseModule* newModule = new ExpenseModule(name);
118 	vModules.push_back(newModule);
119 	return newModule;
120 }
121 
PrintAll(FILE * file)122 void ExpenseLog::PrintAll(FILE *file)
123 {
124 	double totalAdd=0,totalMul=0,totalBool=0,totalAssign=0;
125 	fprintf(stderr,"\n ----------------\n Expense Log PrintOut\n Nr of Modules: %d\n",vModules.size());
126 	for (size_t i=0; i<vModules.size(); ++i)
127 	{
128 		totalAdd+=((double)vModules.at(i)->uiIntAdditions+(double)vModules.at(i)->uiDoubleAdditions) + 1e9*((double)vModules.at(i)->uiMrdIA+(double)vModules.at(i)->uiMrdIA);
129 		totalMul+=((double)vModules.at(i)->uiIntMultiplications+(double)vModules.at(i)->uiDoubleMultiplications) + 1e9*(double)(vModules.at(i)->uiMrdIM+vModules.at(i)->uiMrdIM);
130 		totalBool+=(double)vModules.at(i)->uiBoolOp + 1e9*(double)vModules.at(i)->uiMrdBO;
131 		totalAssign+=(double)vModules.at(i)->uiAssignments + 1e9*(double)vModules.at(i)->uiMrdAssign;
132 		vModules.at(i)->PrintfSelf(file);
133 	}
134 	fprintf(stderr," Total:\n Additions: %e Multiplications: %e\n Bool Operations: %e Assignments: %e\n",totalAdd,totalMul,totalBool,totalAssign);
135 	fprintf(stderr,"\n ----------------\n");
136 }
137 
ClearAll()138 void ExpenseLog::ClearAll()
139 {
140 	for (size_t i=0; i<vModules.size(); ++i)
141 	{
142 		vModules.at(i)->Clear();
143 	}
144 }
145 
146