]> git.tdb.fi Git - builder.git/blobdiff - source/analyzer.cpp
Add comments
[builder.git] / source / analyzer.cpp
index 21ed52cec64b2cf463a62a1d9823870ea5917283..e2b25bd6260bfdce4ede32c615dad72a6079b10b 100644 (file)
@@ -14,10 +14,14 @@ using namespace Msp;
 
 Analyzer::Analyzer(Builder &b):
        builder(b),
+       mode(DEPS),
        max_depth(0),
        full_paths(false)
 { }
 
+/**
+Performs the analysis and prints out the resulting dependency tree.
+*/
 void Analyzer::analyze()
 {
        TableRow row;
@@ -32,16 +36,25 @@ void Analyzer::analyze()
        print_table();
 }
 
+/**
+Adds rows to the table for the given target and it' dependencies.
+
+@param   tgt    Target to be processed
+@param   depth  Recursion level of the target (top level is 0)
+*/
 void Analyzer::build_depend_table(Target &tgt, unsigned depth)
 {
        if(mode!=REBUILD && mode!=ALLDEPS)
        {
+               // Skip trivial targets
                if(dynamic_cast<ObjectFile *>(&tgt))
                        return build_depend_table(*tgt.get_depends().front(), depth);
                else if(dynamic_cast<Install *>(&tgt))
                        return build_depend_table(*tgt.get_depends().front(), depth);
        }
        else if(mode==REBUILD && !tgt.get_rebuild())
+               /* All targets that depend on to-be-built targets will be rebuilt
+                  themselves, so we cn stop here. */
                return;
        
        TableRow row;
@@ -74,16 +87,21 @@ void Analyzer::build_depend_table(Target &tgt, unsigned depth)
        if(!max_depth || depth<max_depth-1)
        {
                const TargetList &depends=tgt.get_depends();
+               //XXX If we want to sort the targets, we need to take the value of full_paths into account
                //depends.sort(target_order);
                for(TargetList::const_iterator i=depends.begin(); i!=depends.end(); ++i)
                        build_depend_table(**i, depth+1);
        }
 }
 
+/**
+Prints out the table that resulted from the analysis.
+*/
 void Analyzer::print_table() const
 {
        vector<unsigned> col_width;
 
+       // Determine column widths
        for(Table::const_iterator i=table.begin(); i!=table.end(); ++i)
        {
                if(col_width.size()<i->size())