aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.cpp7
-rw-r--r--src/viewerfactory.cpp2
-rw-r--r--src/viewerplainpct.cpp45
-rw-r--r--src/viewerplainpct.h9
4 files changed, 39 insertions, 24 deletions
diff --git a/src/main.cpp b/src/main.cpp
index b7cf6e7..ebde3aa 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -33,6 +33,8 @@ public:
33 "Switch to percent view."); 33 "Switch to percent view.");
34 addParam('P', mkproc(Param::procViewPlain), 34 addParam('P', mkproc(Param::procViewPlain),
35 "Switch to plain view."); 35 "Switch to plain view.");
36 addParam("color", mkproc(Param::procColorPercent),
37 "Switch to colored percent view.");
36 addParam('m', mkproc(Param::procViewMake), 38 addParam('m', mkproc(Param::procViewMake),
37 "Switch to 'make' style view."); 39 "Switch to 'make' style view.");
38 addParam("cache", &sCache, 40 addParam("cache", &sCache,
@@ -77,6 +79,11 @@ public:
77 sView = "make"; 79 sView = "make";
78 } 80 }
79 81
82 int procColorPercent( int argc, char *argv[] )
83 {
84 sView = "colorpct";
85 }
86
80 std::string sCache; 87 std::string sCache;
81 std::string sFile; 88 std::string sFile;
82 std::string sView; 89 std::string sView;
diff --git a/src/viewerfactory.cpp b/src/viewerfactory.cpp
index 52ec5d4..7826a6a 100644
--- a/src/viewerfactory.cpp
+++ b/src/viewerfactory.cpp
@@ -4,6 +4,7 @@ extern struct PluginInfo plain;
4extern struct PluginInfo percent; 4extern struct PluginInfo percent;
5extern struct PluginInfo make; 5extern struct PluginInfo make;
6extern struct PluginInfo plainpct; 6extern struct PluginInfo plainpct;
7extern struct PluginInfo colorpct;
7 8
8ViewerFactory::ViewerFactory() 9ViewerFactory::ViewerFactory()
9{ 10{
@@ -11,6 +12,7 @@ ViewerFactory::ViewerFactory()
11 registerBuiltinPlugin( &percent ); 12 registerBuiltinPlugin( &percent );
12 registerBuiltinPlugin( &make ); 13 registerBuiltinPlugin( &make );
13 registerBuiltinPlugin( &plainpct ); 14 registerBuiltinPlugin( &plainpct );
15 registerBuiltinPlugin( &colorpct );
14} 16}
15 17
16ViewerFactory::~ViewerFactory() 18ViewerFactory::~ViewerFactory()
diff --git a/src/viewerplainpct.cpp b/src/viewerplainpct.cpp
index dcf90ec..9988ca7 100644
--- a/src/viewerplainpct.cpp
+++ b/src/viewerplainpct.cpp
@@ -33,7 +33,8 @@ void ViewerPlainPct::endCommand()
33 if( sCmd.front().bCmdClean == false ) 33 if( sCmd.front().bCmdClean == false )
34 printf("\n"); 34 printf("\n");
35 sCmd.pop_front(); 35 sCmd.pop_front();
36 iCC++; 36 if(sCmd.empty())
37 iCC++;
37} 38}
38 39
39void ViewerPlainPct::indent() 40void ViewerPlainPct::indent()
@@ -53,58 +54,62 @@ void ViewerPlainPct::printHead()
53 bRunClean = false; 54 bRunClean = false;
54 sCmd.front().bCmdClean = false; 55 sCmd.front().bCmdClean = false;
55 indent(); 56 indent();
56 printf("--- [%d/%d] %s ---\n", iCC, iTC, sCmd.front().sTarget.c_str() ); 57 if(sCmd.size() > 1)
58 printf("--- %s ---\n", sCmd.front().sTarget.c_str() );
59 else
60 printf("--- [%d/%d] %s ---\n", iCC, iTC, sCmd.front().sTarget.c_str() );
57 } 61 }
58} 62}
59 63
64void ViewerPlainPct::printPerform(const char *sRule, const char *sTarget)
65{
66 int iPct = (int)round(
67 ((double)sCmd.front().iCP/(double)sCmd.front().iTP)*100.0
68 );
69 if(sCmd.size() > 1)
70 printf( "[%3d%%] %8s: %s\n", iPct, sRule, sTarget );
71 else
72 printf( "[%3d%%] %8s: %s\n", iPct, sRule, sTarget );
73}
74
60void ViewerPlainPct::beginRequiresCheck( bool bCached, const std::string &sName ) 75void ViewerPlainPct::beginRequiresCheck( bool bCached, const std::string &sName )
61{ 76{
62 printHead(); 77 printHead();
63 indent(); 78 indent();
64 printf("[%3d%%] deps: %s\n", (int)round(((double)iCP/(double)iTP)*100.0), sName.c_str() ); 79 printPerform("deps", sName.c_str());
65} 80}
66 81
67void ViewerPlainPct::endRequiresCheck() 82void ViewerPlainPct::endRequiresCheck()
68{ 83{
69 iCP++; 84 sCmd.front().iCP++;
70 //bDidReq = true;
71} 85}
72 86
73void ViewerPlainPct::skipRequiresCheck( bool bCached, const std::string &sName ) 87void ViewerPlainPct::skipRequiresCheck( bool bCached, const std::string &sName )
74{ 88{
75 iCP++; 89 sCmd.front().iCP++;
76/* printHead();
77 indent();
78 printf("[%3d%%] ! deps: %s\n", (int)round(((double)iCP/(double)iTP)*100.0), sName.c_str() );*/
79} 90}
80 91
81void ViewerPlainPct::beginPerform( Perform *pPerform ) 92void ViewerPlainPct::beginPerform( Perform *pPerform )
82{ 93{
83 printHead(); 94 printHead();
84 indent(); 95 indent();
85 printf("[%3d%%] %8s: %s\n", (int)round(((double)iCP/(double)iTP)*100.0), pPerform->getRule().c_str(), pPerform->getTarget().c_str() ); 96 printPerform(pPerform->getRule().c_str(), pPerform->getTarget().c_str());
86} 97}
87 98
88void ViewerPlainPct::endPerform() 99void ViewerPlainPct::endPerform()
89{ 100{
90 //if(!bDidReq) 101 sCmd.front().iCP++;
91 iCP++;
92 //bDidReq = false;
93} 102}
94 103
95void ViewerPlainPct::skipPerform( Perform *pPerform ) 104void ViewerPlainPct::skipPerform( Perform *pPerform )
96{ 105{
97 iCP++; 106 sCmd.front().iCP++;
98/* printHead();
99 indent();
100 printf("[%3d%%] ! %8s: %s\n", (int)round(((double)iCP/(double)iTP)*100.0), pPerform->getRule().c_str(), pPerform->getTarget().c_str() );*/
101} 107}
102 108
103void ViewerPlainPct::beginPerforms( int nCount ) 109void ViewerPlainPct::beginPerforms( int nCount )
104{ 110{
105 iTP = nCount*2; 111 sCmd.front().iTP = nCount*2;
106 iCP = 1; 112 sCmd.front().iCP = 1;
107 //bDidReq = false;
108} 113}
109 114
110void ViewerPlainPct::beginAction( const std::string &sName, int nCommands ) 115void ViewerPlainPct::beginAction( const std::string &sName, int nCommands )
diff --git a/src/viewerplainpct.h b/src/viewerplainpct.h
index aa9a228..63bc00d 100644
--- a/src/viewerplainpct.h
+++ b/src/viewerplainpct.h
@@ -1,5 +1,5 @@
1#ifndef VIEWER_PLAIN_H 1#ifndef VIEWER_PLAIN_PCT_H
2#define VIEWER_PLAIN_H 2#define VIEWER_PLAIN_PCT_H
3 3
4#include <stdint.h> 4#include <stdint.h>
5#include <list> 5#include <list>
@@ -27,12 +27,12 @@ public:
27 27
28 virtual void endAction(); 28 virtual void endAction();
29 29
30 void printPerform(const char *sRule, const char *sTarget);
30 void printHead(); 31 void printHead();
31 void indent(); 32 void indent();
32 33
33private: 34private:
34 //bool bDidReq; 35 int iTC, iCC;
35 int iTP, iCP, iTC, iCC;
36 36
37 bool bRunClean; 37 bool bRunClean;
38 typedef struct 38 typedef struct
@@ -40,6 +40,7 @@ private:
40 int nLevel; 40 int nLevel;
41 bool bCmdClean; 41 bool bCmdClean;
42 std::string sTarget; 42 std::string sTarget;
43 int iTP, iCP;
43 } Cmd; 44 } Cmd;
44 typedef std::list<Cmd> CmdStack; 45 typedef std::list<Cmd> CmdStack;
45 CmdStack sCmd; 46 CmdStack sCmd;