Skip to content

Commit

Permalink
sort printed token fs attributes alphabetically in [incr tsdb()] profile
Browse files Browse the repository at this point in the history
git-svn-id: https://pet.opendfki.de/repos/pet/main@860 4200e16c-5112-0410-ac55-d7fb557a720a
  • Loading branch information
yi_zhang committed Nov 28, 2011
1 parent 1b6f643 commit 0745583
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
40 changes: 40 additions & 0 deletions common/dagprinter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
#include "utility.h"

#include <iomanip>
#include <algorithm>
#include <list>

using namespace std;

Expand Down Expand Up @@ -219,3 +221,41 @@ void
ItsdbDagPrinter::print_dag_node_end(ostream &out, const dag_node *dag) {
if (dag->arcs != NULL) out << " ]";
} // ItsdbDagPrinter::print_dag_node_end()

void
ItsdbDagPrinter::print_dag_rec(std::ostream &out, const struct dag_node *dag, bool temp) {
int coref = get_coref_nr(dag);

if (coref != 0) {
if(coref < 0) { // dag is coreferenced, already printed
print_coref_reference(out, - coref) ;
return;
} else { // dag is coreferenced, not printed yet
print_coref_definition(out, coref);
}
}

print_dag_node_start(out, dag);
print_arcs(out, dag->arcs, temp);
print_dag_node_end(out, dag);
}

bool compare_arcs(const dag_arc *arc1, const dag_arc *arc2) {
return strcmp(attrname[arc1->attr], attrname[arc2->attr]) < 0;
}

void
ItsdbDagPrinter::print_arcs(std::ostream &out, const dag_arc *arc, bool temp) {
if (arc == 0) return;

list<const dag_arc*> arclist;
while (arc) {
arclist.push_back(arc);
arc = arc->next;
}
arclist.sort(compare_arcs);
for (list<const dag_arc*>::iterator iter = arclist.begin();
iter != arclist.end(); iter ++) {
print_arc(out, *iter, temp);
}
}
4 changes: 3 additions & 1 deletion common/dagprinter.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ class CompactDagPrinter : public AbstractDagPrinter {

virtual void print_dag_node_end(std::ostream &out, const dag_node *dag) = 0;

void print_dag_rec(std::ostream &out, const struct dag_node *dag, bool temp);
virtual void print_dag_rec(std::ostream &out, const struct dag_node *dag, bool temp);

public:
CompactDagPrinter() : honor_temporary_dags(false) {}
Expand Down Expand Up @@ -163,6 +163,8 @@ class ItsdbDagPrinter : public CompactDagPrinter {
virtual void print_coref_definition(std::ostream &out, int coref_nr);
virtual void print_dag_node_start(std::ostream &out, const dag_node *dag);
virtual void print_dag_node_end(std::ostream &out, const dag_node *dag);
virtual void print_dag_rec(std::ostream &out, const dag_node *dag, bool temp);
virtual void print_arcs(std::ostream &out, const dag_arc *arc, bool temp);
};


Expand Down

0 comments on commit 0745583

Please sign in to comment.