1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 /****************************************************************************/
4 /* */
5 /* File: debug.c */
6 /* */
7 /* Purpose: produces lists for debugging DDD data structures */
8 /* */
9 /* Author: Klaus Birken */
10 /* Rechenzentrum Uni Stuttgart */
11 /* Universitaet Stuttgart */
12 /* Allmandring 30 */
13 /* 70550 Stuttgart */
14 /* internet: birken@rus.uni-stuttgart.de */
15 /* */
16 /* History: 94/07/04 kb begin */
17 /* */
18 /* Remarks: */
19 /* */
20 /****************************************************************************/
21
22 /****************************************************************************/
23 /* */
24 /* include files */
25 /* system include files */
26 /* application include files */
27 /* */
28 /****************************************************************************/
29
30 /* standard C library */
31 #include <config.h>
32 #include <cstdlib>
33 #include <cstdio>
34
35 #include <algorithm>
36 #include <iomanip>
37 #include <iostream>
38 #include <tuple>
39
40 #include <dune/uggrid/parallel/ddd/dddi.h>
41
42 /* PPIF namespace: */
43 using namespace PPIF;
44
45 START_UGDIM_NAMESPACE
46
47 /****************************************************************************/
48 /* */
49 /* defines in the following order */
50 /* */
51 /* compile time constants defining static data size (i.e. arrays) */
52 /* other constants */
53 /* macros */
54 /* */
55 /****************************************************************************/
56
57
58
59 /****************************************************************************/
60 /* */
61 /* data structures */
62 /* */
63 /****************************************************************************/
64
65
66
67 /****************************************************************************/
68 /* */
69 /* definition of exported global variables */
70 /* */
71 /****************************************************************************/
72
73
74
75 /****************************************************************************/
76 /* */
77 /* definition of variables global to this source file only (static!) */
78 /* */
79 /****************************************************************************/
80
81
82
83
84 /****************************************************************************/
85 /* */
86 /* routines */
87 /* */
88 /****************************************************************************/
89
90
91
92 /****************************************************************************/
93 /* */
94 /* Function: ListLocalObjects */
95 /* */
96 /* Purpose: display list of all local objects */
97 /* */
98 /* Input: - */
99 /* */
100 /* Output: - */
101 /* */
102 /****************************************************************************/
103
sort_LocalObjs(const DDD_HDR & a,const DDD_HDR & b)104 static bool sort_LocalObjs(const DDD_HDR& a, const DDD_HDR& b)
105 {
106 return std::tie(OBJ_TYPE(a), OBJ_GID(a)) < std::tie(OBJ_TYPE(b), OBJ_GID(b));
107 }
108
109
DDD_ListLocalObjects(const DDD::DDDContext & context)110 void DDD_ListLocalObjects(const DDD::DDDContext& context)
111 {
112 using std::setw;
113 std::ostream& out = std::cout;
114
115 std::vector<DDD_HDR> locObjs = LocalObjectsList(context);
116 if (locObjs.empty())
117 return;
118
119 std::sort(locObjs.begin(), locObjs.end(), sort_LocalObjs);
120
121 for(int i=0; i < context.nObjs(); i++)
122 {
123 const auto& o = locObjs[i];
124
125 out << "#" << setw(4) << " adr=" << o << " gid=" << OBJ_GID(o)
126 << " type=" << OBJ_TYPE(o) << " prio=" << OBJ_PRIO(o)
127 << " attr=" << OBJ_ATTR(o) << "\n";
128 }
129 }
130
131 END_UGDIM_NAMESPACE
132