Blender V5.0
mesh_debug.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
13
14#ifndef NDEBUG
15
16# include <cstdio>
17
18# include "MEM_guardedalloc.h"
19
20# include "DNA_mesh_types.h"
21
22# include "BKE_customdata.hh"
23
24# include "BKE_mesh.hh"
25
26# include "BLI_dynstr.h"
27
28char *BKE_mesh_debug_info(const Mesh *mesh)
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 *)mesh);
37 BLI_dynstr_appendf(dynstr, " 'totvert': %d,\n", mesh->verts_num);
38 BLI_dynstr_appendf(dynstr, " 'totedge': %d,\n", mesh->edges_num);
39 BLI_dynstr_appendf(dynstr, " 'totface': %d,\n", mesh->totface_legacy);
40 BLI_dynstr_appendf(dynstr, " 'faces_num': %d,\n", mesh->faces_num);
41
42 BLI_dynstr_appendf(dynstr, " 'runtime.deformed_only': %d,\n", mesh->runtime->deformed_only);
44 dynstr, " 'runtime->is_original_bmesh': %d,\n", mesh->runtime->is_original_bmesh);
45
46 BLI_dynstr_append(dynstr, " 'vert_layers': (\n");
47 CustomData_debug_info_from_layers(&mesh->vert_data, indent8, dynstr);
48 BLI_dynstr_append(dynstr, " ),\n");
49
50 BLI_dynstr_append(dynstr, " 'edge_layers': (\n");
51 CustomData_debug_info_from_layers(&mesh->edge_data, indent8, dynstr);
52 BLI_dynstr_append(dynstr, " ),\n");
53
54 BLI_dynstr_append(dynstr, " 'loop_layers': (\n");
55 CustomData_debug_info_from_layers(&mesh->corner_data, indent8, dynstr);
56 BLI_dynstr_append(dynstr, " ),\n");
57
58 BLI_dynstr_append(dynstr, " 'poly_layers': (\n");
59 CustomData_debug_info_from_layers(&mesh->face_data, indent8, dynstr);
60 BLI_dynstr_append(dynstr, " ),\n");
61
62 BLI_dynstr_append(dynstr, " 'tessface_layers': (\n");
63 CustomData_debug_info_from_layers(&mesh->fdata_legacy, indent8, dynstr);
64 BLI_dynstr_append(dynstr, " ),\n");
65
66 BLI_dynstr_append(dynstr, "}\n");
67
69 BLI_dynstr_free(dynstr);
70 return ret;
71}
72
73void BKE_mesh_debug_print(const Mesh *mesh)
74{
75 char *str = BKE_mesh_debug_info(mesh);
76 puts(str);
77 fflush(stdout);
79}
80
81#endif /* !NDEBUG */
CustomData interface, see also DNA_customdata_types.h.
void CustomData_debug_info_from_layers(const CustomData *data, const char *indent, DynStr *dynstr)
A dynamically sized string ADT.
char * BLI_dynstr_get_cstring(const DynStr *ds) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
DynStr * BLI_dynstr_new(void) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
Definition BLI_dynstr.cc:37
void BLI_dynstr_free(DynStr *ds) ATTR_NONNULL()
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.cc:56
Read Guarded memory(de)allocation.
#define str(s)
void MEM_freeN(void *vmemh)
Definition mallocn.cc:113
void BKE_mesh_debug_print(const Mesh *mesh)
Definition mesh_debug.cc:73
char * BKE_mesh_debug_info(const Mesh *mesh)
Definition mesh_debug.cc:28
return ret
CustomData edge_data
int edges_num
MeshRuntimeHandle * runtime
CustomData corner_data
CustomData face_data
CustomData vert_data
CustomData fdata_legacy
int totface_legacy
int faces_num
int verts_num