Blender V4.3
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
14#ifndef NDEBUG
15
16# include <cstdio>
17
18# include "MEM_guardedalloc.h"
19
20# include "DNA_mesh_types.h"
21# include "DNA_object_types.h"
22
23# include "BLI_utildefines.h"
24
25# include "BKE_customdata.hh"
26
27# include "BKE_mesh.hh"
28
29# include "BLI_dynstr.h"
30
31char *BKE_mesh_debug_info(const Mesh *mesh)
32{
33 DynStr *dynstr = BLI_dynstr_new();
34 char *ret;
35
36 const char *indent8 = " ";
37
38 BLI_dynstr_append(dynstr, "{\n");
39 BLI_dynstr_appendf(dynstr, " 'ptr': '%p',\n", (void *)mesh);
40 BLI_dynstr_appendf(dynstr, " 'totvert': %d,\n", mesh->verts_num);
41 BLI_dynstr_appendf(dynstr, " 'totedge': %d,\n", mesh->edges_num);
42 BLI_dynstr_appendf(dynstr, " 'totface': %d,\n", mesh->totface_legacy);
43 BLI_dynstr_appendf(dynstr, " 'faces_num': %d,\n", mesh->faces_num);
44
45 BLI_dynstr_appendf(dynstr, " 'runtime.deformed_only': %d,\n", mesh->runtime->deformed_only);
47 dynstr, " 'runtime->is_original_bmesh': %d,\n", mesh->runtime->is_original_bmesh);
48
49 BLI_dynstr_append(dynstr, " 'vert_layers': (\n");
50 CustomData_debug_info_from_layers(&mesh->vert_data, indent8, dynstr);
51 BLI_dynstr_append(dynstr, " ),\n");
52
53 BLI_dynstr_append(dynstr, " 'edge_layers': (\n");
54 CustomData_debug_info_from_layers(&mesh->edge_data, indent8, dynstr);
55 BLI_dynstr_append(dynstr, " ),\n");
56
57 BLI_dynstr_append(dynstr, " 'loop_layers': (\n");
58 CustomData_debug_info_from_layers(&mesh->corner_data, indent8, dynstr);
59 BLI_dynstr_append(dynstr, " ),\n");
60
61 BLI_dynstr_append(dynstr, " 'poly_layers': (\n");
62 CustomData_debug_info_from_layers(&mesh->face_data, indent8, dynstr);
63 BLI_dynstr_append(dynstr, " ),\n");
64
65 BLI_dynstr_append(dynstr, " 'tessface_layers': (\n");
66 CustomData_debug_info_from_layers(&mesh->fdata_legacy, indent8, dynstr);
67 BLI_dynstr_append(dynstr, " ),\n");
68
69 BLI_dynstr_append(dynstr, "}\n");
70
72 BLI_dynstr_free(dynstr);
73 return ret;
74}
75
76void BKE_mesh_debug_print(const Mesh *mesh)
77{
78 char *str = BKE_mesh_debug_info(mesh);
79 puts(str);
80 fflush(stdout);
82}
83
84#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()
Definition BLI_dynstr.c:149
DynStr * BLI_dynstr_new(void) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
Definition BLI_dynstr.c:37
void BLI_dynstr_free(DynStr *ds) ATTR_NONNULL()
Definition BLI_dynstr.c:174
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:62
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
#define str(s)
void MEM_freeN(void *vmemh)
Definition mallocn.cc:105
void BKE_mesh_debug_print(const Mesh *mesh)
Definition mesh_debug.cc:76
char * BKE_mesh_debug_info(const Mesh *mesh)
Definition mesh_debug.cc:31
return ret