aboutsummaryrefslogtreecommitdiff
path: root/src/viewerplainpct.cpp
blob: a7baff1194693e6f6f9aa5be06593f73d288f797 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include "viewerplainpct.h"
#include "perform.h"
#include "plugger.h"
#include "math.h"

PluginInterface2( plainpct, ViewerPlainPct, Viewer, "Mike Buland", 0, 1 );

ViewerPlainPct::ViewerPlainPct() :
	bRunClean( true )
{
}

ViewerPlainPct::~ViewerPlainPct()
{
}

void ViewerPlainPct::beginCommand( Action::eAction nAct, const std::string &sTarget )
{
	Cmd cmd;
	if( sCmd.empty() )
		cmd.nLevel = 0;
	else
		cmd.nLevel = sCmd.front().nLevel+1;
	
	cmd.bCmdClean = true;
	cmd.sTarget = sTarget;

	sCmd.push_front( cmd );
}

void ViewerPlainPct::endCommand()
{
	if( sCmd.front().bCmdClean == false )
		printf("\n");
	sCmd.pop_front();
	iCC++;
}

void ViewerPlainPct::indent()
{
	if( sCmd.empty() ) return;
	int jmax = sCmd.front().nLevel;
	for( int j = 0; j < jmax; j++ )
	{
		printf("  ");
	}
}

void ViewerPlainPct::printHead()
{
	if( sCmd.front().bCmdClean == true )
	{
		bRunClean = false;
		sCmd.front().bCmdClean = false;
		indent();
		printf("--- [%d/%d] %s ---\n", iCC, iTC, sCmd.front().sTarget.c_str() );
	}
}

void ViewerPlainPct::beginRequiresCheck( bool bCached, const std::string &sName )
{
	printHead();
	indent();
	printf("[%3d%%]     deps: %s\n", (int)round(((double)iCP/(double)iTP)*100.0), sName.c_str() );
}

void ViewerPlainPct::endRequiresCheck()
{
	iCP++;
	bDidReq = true;
}

void ViewerPlainPct::beginPerform( Perform *pPerform )
{
	printHead();
	indent();
	printf("[%3d%%] %8s: %s\n", (int)round(((double)iCP/(double)iTP)*100.0), pPerform->getRule().c_str(), pPerform->getTarget().c_str() );
}

void ViewerPlainPct::endPerform()
{
	if(!bDidReq)
		iCP++;
	bDidReq = false;
}

void ViewerPlainPct::beginPerforms( int nCount )
{
	iTP = nCount;
	iCP = 1;
	bDidReq = false;
}

void ViewerPlainPct::beginAction( const std::string &sName, int nCommands )
{
	iTC = nCommands;
	iCC = 1;
}

void ViewerPlainPct::endAction()
{
	if( bRunClean == true )
	{
		printf("Nothing to be done.\n\n");
	}
}