-
Notifications
You must be signed in to change notification settings - Fork 0
/
debug.cpp
75 lines (64 loc) · 2.57 KB
/
debug.cpp
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
/*******************************************************************
*
* DESCRIPTION: Debugging functions
*
* AUTHOR: Amir Barylko & Jorge Beyoglonian
* Version 2: Daniel Rodriguez.
* EMAIL: mailto://amir@dc.uba.ar
* mailto://jbeyoglo@dc.uba.ar
* mailto://drodrigu@dc.uba.ar
*
* DATE: 27/06/1998
* DATE: 21/04/1999 (v2)
*
*******************************************************************/
// ** include files **//
#include "debug.h"
#include "cellstate.h" // class CelLState
using namespace std;
/*******************************************************************
* Method: Printinfluences
********************************************************************/
void PrintInfluences( const Port & p )
{
cout << "Port: " << p.name() << " --> " << endl;
const InfluenceList &influList( p.influences() ) ;
for (InfluenceList::const_iterator cursor = influList.begin(); cursor != influList.end(); cursor++ )
cout << "\t" << (*cursor)->modelId() << endl;
}
/*******************************************************************
* Function Name: printNeighbors
********************************************************************/
void PrintNeighbors( NeighborhoodValue &nval )
{
for (nval.neighborList()->initCursor(); ! nval.neighborList()->endCursor(); nval.neighborList()->next() )
cout << "\t" << nval.neighborList()->elementCell() << " = " << nval.neighborList()->elementValue()->asString( Impresion::Default.Width(), Impresion::Default.Precision() ) << "\n";
}
/*******************************************************************
* Function Name: PrintCellState
********************************************************************/
void PrintCellState( CellState &cstate )
{
if (cstate.dimension().dimension() == 2)
for ( register int i = 0 ; i < cstate.dimension().get(1) ; i++ )
{
for( register int j = 0 ; j < cstate.dimension().get(0); j++ )
{
nTupla cp;
cp.add(i,j);
cout << ( (cstate[ cp ] == Real::tundef)==TValBool::ttrue ? "?" : cstate[ cp ].asString(Impresion::Default.Width(), Impresion::Default.Precision()) );
}
cout << endl;
}
else { // The dimension > 2
nTupla dim( cstate.dimension() );
MASSERTMSG( !dim.contains(0), "Attemp to print a CellState that contains the value 0.");
CellPosition counter( dim.dimension(), 0);
register bool overflow = false;
while (!overflow)
{
cout << "\t" << counter << " = " << ((cstate[ counter ] == Real::tundef)==TValBool::ttrue ? "?" : cstate[ counter ].asString(Impresion::Default.Width(), Impresion::Default.Precision()) ) << "\n";
overflow = counter.next( dim );
}
}
}