static int mesh_validate_customdata(CustomData *data, const bool do_verbose, const bool do_fixes) { int i = 0, has_fixes = 0; PRINT("%s: Checking %d CD layers...\n", __func__, data->totlayer); while (i < data->totlayer) { CustomDataLayer *layer = &data->layers[i]; CustomDataMask mask = CD_TYPE_AS_MASK(layer->type); int ok = 1; if ((mask & CD_MASK_MESH) == 0) { PRINT("\tCustomDataLayer type %d which isn't in CD_MASK_MESH is stored in Mesh structure\n", layer->type); if (do_fixes) { CustomData_free_layer(data, layer->type, 0, i); ok = 0; has_fixes = 1; } } if (ok) i++; } PRINT("%s: Finished\n\n", __func__); return has_fixes; }
static bool mesh_validate_customdata( CustomData *data, CustomDataMask mask, const bool do_verbose, const bool do_fixes, bool *r_change) { bool is_valid = true; bool has_fixes = false; int i = 0; PRINT_MSG("%s: Checking %d CD layers...\n", __func__, data->totlayer); while (i < data->totlayer) { CustomDataLayer *layer = &data->layers[i]; bool ok = true; if (CustomData_layertype_is_singleton(layer->type)) { const int layer_tot = CustomData_number_of_layers(data, layer->type); if (layer_tot > 1) { PRINT_ERR("\tCustomDataLayer type %d is a singleton, found %d in Mesh structure\n", layer->type, layer_tot); ok = false; } } if (mask != 0) { CustomDataMask layer_typemask = CD_TYPE_AS_MASK(layer->type); if ((layer_typemask & mask) == 0) { PRINT_ERR("\tCustomDataLayer type %d which isn't in the mask\n", layer->type); ok = false; } } if (ok == false) { if (do_fixes) { CustomData_free_layer(data, layer->type, 0, i); has_fixes = true; } } if (ok) i++; } PRINT_MSG("%s: Finished (is_valid=%d)\n\n", __func__, (int)!has_fixes); *r_change = has_fixes; return is_valid; }