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