-bool Analyzer::target_order(Target *t1, Target *t2)
-{ return t1->get_name()<t2->get_name(); }
+bool Analyzer::target_order(const Target *t1, const Target *t2)
+{
+ return t1->get_name()<t2->get_name();
+}
+
+bool Analyzer::target_order_full(const Target *t1, const Target *t2)
+{
+ const FileTarget *ft1 = dynamic_cast<const FileTarget *>(t1);
+ const FileTarget *ft2 = dynamic_cast<const FileTarget *>(t2);
+ if(!ft1)
+ {
+ if(ft2)
+ return true;
+ return target_order(t1, t2);
+ }
+ else if(!ft2)
+ return false;
+ return ft1->get_path().str()<ft2->get_path().str();
+}