Blender  V3.3
bmesh_mesh_debug.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
12 #ifndef NDEBUG
13 
14 # include <stdio.h>
15 
16 # include "MEM_guardedalloc.h"
17 
18 # include "BLI_utildefines.h"
19 
20 # include "BKE_customdata.h"
21 
22 # include "bmesh.h"
23 
24 # include "bmesh_mesh_debug.h"
25 
26 # include "BLI_dynstr.h"
27 
29 {
30  DynStr *dynstr = BLI_dynstr_new();
31  char *ret;
32 
33  const char *indent8 = " ";
34 
35  BLI_dynstr_append(dynstr, "{\n");
36  BLI_dynstr_appendf(dynstr, " 'ptr': '%p',\n", (void *)bm);
37  BLI_dynstr_appendf(dynstr, " 'totvert': %d,\n", bm->totvert);
38  BLI_dynstr_appendf(dynstr, " 'totedge': %d,\n", bm->totedge);
39  BLI_dynstr_appendf(dynstr, " 'totface': %d,\n", bm->totface);
40 
41  BLI_dynstr_append(dynstr, " 'vert_layers': (\n");
42  CustomData_debug_info_from_layers(&bm->vdata, indent8, dynstr);
43  BLI_dynstr_append(dynstr, " ),\n");
44 
45  BLI_dynstr_append(dynstr, " 'edge_layers': (\n");
46  CustomData_debug_info_from_layers(&bm->edata, indent8, dynstr);
47  BLI_dynstr_append(dynstr, " ),\n");
48 
49  BLI_dynstr_append(dynstr, " 'loop_layers': (\n");
50  CustomData_debug_info_from_layers(&bm->ldata, indent8, dynstr);
51  BLI_dynstr_append(dynstr, " ),\n");
52 
53  BLI_dynstr_append(dynstr, " 'poly_layers': (\n");
54  CustomData_debug_info_from_layers(&bm->pdata, indent8, dynstr);
55  BLI_dynstr_append(dynstr, " ),\n");
56 
57  BLI_dynstr_append(dynstr, "}\n");
58 
59  ret = BLI_dynstr_get_cstring(dynstr);
60  BLI_dynstr_free(dynstr);
61  return ret;
62 }
63 
65 {
66  char *str = BM_mesh_debug_info(bm);
67  puts(str);
68  fflush(stdout);
69  MEM_freeN(str);
70 }
71 
72 #endif /* NDEBUG */
CustomData interface, see also DNA_customdata_types.h.
void CustomData_debug_info_from_layers(const struct CustomData *data, const char *indent, struct DynStr *dynstr)
A dynamically sized string ADT.
DynStr * BLI_dynstr_new(void) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
Definition: BLI_dynstr.c:50
char * BLI_dynstr_get_cstring(const DynStr *ds) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition: BLI_dynstr.c:256
void BLI_dynstr_free(DynStr *ds) ATTR_NONNULL()
Definition: BLI_dynstr.c:281
void BLI_dynstr_appendf(DynStr *__restrict ds, const char *__restrict format,...) ATTR_PRINTF_FORMAT(2
void BLI_dynstr_append(DynStr *__restrict ds, const char *cstr) ATTR_NONNULL()
Definition: BLI_dynstr.c:75
Read Guarded memory(de)allocation.
ATTR_WARN_UNUSED_RESULT BMesh * bm
char * BM_mesh_debug_info(BMesh *bm)
void BM_mesh_debug_print(BMesh *bm)
#define str(s)
void(* MEM_freeN)(void *vmemh)
Definition: mallocn.c:27
return ret
int totvert
Definition: bmesh_class.h:297
CustomData vdata
Definition: bmesh_class.h:337
int totedge
Definition: bmesh_class.h:297
CustomData edata
Definition: bmesh_class.h:337
CustomData pdata
Definition: bmesh_class.h:337
CustomData ldata
Definition: bmesh_class.h:337
int totface
Definition: bmesh_class.h:297