
/* Automatically generated struct definitions for the Data API.
 * Do not edit manually, changes will be overwritten.           */

#define RNA_RUNTIME

#include <float.h>
#include <stdio.h>
#include <limits.h>
#include <string.h>

#include <stddef.h>

#include "MEM_guardedalloc.h"

#include "DNA_ID.h"
#include "DNA_scene_types.h"
#include "BLI_blenlib.h"

#include "BLI_utildefines.h"

#include "BKE_context.h"
#include "BKE_library.h"
#include "BKE_main.h"
#include "BKE_report.h"
#include "RNA_define.h"
#include "RNA_types.h"
#include "rna_internal.h"

#include "rna_prototypes_gen.h"

#include "rna_mesh.c"
#include "rna_mesh_api.c"

/* Autogenerated Functions */


extern CollectionPropertyRNA rna_ID_rna_properties;
extern PointerPropertyRNA rna_ID_rna_type;
extern StringPropertyRNA rna_ID_name;
extern IntPropertyRNA rna_ID_users;
extern BoolPropertyRNA rna_ID_use_fake_user;
extern BoolPropertyRNA rna_ID_tag;
extern BoolPropertyRNA rna_ID_is_updated;
extern BoolPropertyRNA rna_ID_is_updated_data;
extern BoolPropertyRNA rna_ID_is_library_indirect;
extern PointerPropertyRNA rna_ID_library;
extern PointerPropertyRNA rna_ID_preview;

CollectionPropertyRNA rna_Mesh_vertices;
CollectionPropertyRNA rna_Mesh_edges;
CollectionPropertyRNA rna_Mesh_tessfaces;
CollectionPropertyRNA rna_Mesh_loops;
CollectionPropertyRNA rna_Mesh_polygons;
PointerPropertyRNA rna_Mesh_texture_mesh;
CollectionPropertyRNA rna_Mesh_uv_layers;
PointerPropertyRNA rna_Mesh_uv_layer_clone;
IntPropertyRNA rna_Mesh_uv_layer_clone_index;
PointerPropertyRNA rna_Mesh_uv_layer_stencil;
IntPropertyRNA rna_Mesh_uv_layer_stencil_index;
CollectionPropertyRNA rna_Mesh_tessface_uv_textures;
CollectionPropertyRNA rna_Mesh_uv_textures;
PointerPropertyRNA rna_Mesh_uv_texture_clone;
IntPropertyRNA rna_Mesh_uv_texture_clone_index;
PointerPropertyRNA rna_Mesh_uv_texture_stencil;
IntPropertyRNA rna_Mesh_uv_texture_stencil_index;
CollectionPropertyRNA rna_Mesh_tessface_vertex_colors;
CollectionPropertyRNA rna_Mesh_vertex_colors;
CollectionPropertyRNA rna_Mesh_vertex_layers_float;
CollectionPropertyRNA rna_Mesh_vertex_layers_int;
CollectionPropertyRNA rna_Mesh_vertex_layers_string;
CollectionPropertyRNA rna_Mesh_polygon_layers_float;
CollectionPropertyRNA rna_Mesh_polygon_layers_int;
CollectionPropertyRNA rna_Mesh_polygon_layers_string;
CollectionPropertyRNA rna_Mesh_skin_vertices;
CollectionPropertyRNA rna_Mesh_vertex_paint_masks;
BoolPropertyRNA rna_Mesh_use_auto_smooth;
FloatPropertyRNA rna_Mesh_auto_smooth_angle;
BoolPropertyRNA rna_Mesh_has_custom_normals;
BoolPropertyRNA rna_Mesh_show_double_sided;
PointerPropertyRNA rna_Mesh_texco_mesh;
PointerPropertyRNA rna_Mesh_shape_keys;
BoolPropertyRNA rna_Mesh_use_auto_texspace;
BoolPropertyRNA rna_Mesh_show_edges;
BoolPropertyRNA rna_Mesh_show_faces;
BoolPropertyRNA rna_Mesh_show_normal_face;
BoolPropertyRNA rna_Mesh_show_normal_loop;
BoolPropertyRNA rna_Mesh_show_normal_vertex;
BoolPropertyRNA rna_Mesh_show_weight;
BoolPropertyRNA rna_Mesh_show_edge_crease;
BoolPropertyRNA rna_Mesh_show_edge_bevel_weight;
BoolPropertyRNA rna_Mesh_show_edge_seams;
BoolPropertyRNA rna_Mesh_show_edge_sharp;
BoolPropertyRNA rna_Mesh_show_freestyle_edge_marks;
BoolPropertyRNA rna_Mesh_show_freestyle_face_marks;
BoolPropertyRNA rna_Mesh_show_statvis;
BoolPropertyRNA rna_Mesh_show_extra_edge_length;
BoolPropertyRNA rna_Mesh_show_extra_edge_angle;
BoolPropertyRNA rna_Mesh_show_extra_face_angle;
BoolPropertyRNA rna_Mesh_show_extra_face_area;
BoolPropertyRNA rna_Mesh_show_extra_indices;
BoolPropertyRNA rna_Mesh_use_mirror_x;
BoolPropertyRNA rna_Mesh_use_mirror_topology;
BoolPropertyRNA rna_Mesh_use_paint_mask;
BoolPropertyRNA rna_Mesh_use_paint_mask_vertex;
BoolPropertyRNA rna_Mesh_use_customdata_vertex_bevel;
BoolPropertyRNA rna_Mesh_use_customdata_edge_bevel;
BoolPropertyRNA rna_Mesh_use_customdata_edge_crease;
IntPropertyRNA rna_Mesh_total_vert_sel;
IntPropertyRNA rna_Mesh_total_edge_sel;
IntPropertyRNA rna_Mesh_total_face_sel;
BoolPropertyRNA rna_Mesh_is_editmode;
PointerPropertyRNA rna_Mesh_animation_data;
BoolPropertyRNA rna_Mesh_auto_texspace;
FloatPropertyRNA rna_Mesh_texspace_location;
FloatPropertyRNA rna_Mesh_texspace_size;
CollectionPropertyRNA rna_Mesh_materials;

extern FunctionRNA rna_ID_copy_func;
extern PointerPropertyRNA rna_ID_copy_id;

extern FunctionRNA rna_ID_user_clear_func;
extern FunctionRNA rna_ID_user_remap_func;
extern PointerPropertyRNA rna_ID_user_remap_new_id;

extern FunctionRNA rna_ID_make_local_func;
extern BoolPropertyRNA rna_ID_make_local_clear_proxy;
extern PointerPropertyRNA rna_ID_make_local_id;

extern FunctionRNA rna_ID_user_of_id_func;
extern PointerPropertyRNA rna_ID_user_of_id_id;
extern IntPropertyRNA rna_ID_user_of_id_count;

extern FunctionRNA rna_ID_animation_data_create_func;
extern PointerPropertyRNA rna_ID_animation_data_create_anim_data;

extern FunctionRNA rna_ID_animation_data_clear_func;
extern FunctionRNA rna_ID_update_tag_func;
extern EnumPropertyRNA rna_ID_update_tag_refresh;


extern FunctionRNA rna_Mesh_transform_func;
extern FloatPropertyRNA rna_Mesh_transform_matrix;
extern BoolPropertyRNA rna_Mesh_transform_shape_keys;

extern FunctionRNA rna_Mesh_flip_normals_func;
extern FunctionRNA rna_Mesh_calc_normals_func;
extern FunctionRNA rna_Mesh_create_normals_split_func;
extern FunctionRNA rna_Mesh_calc_normals_split_func;
extern FunctionRNA rna_Mesh_free_normals_split_func;
extern FunctionRNA rna_Mesh_split_faces_func;
extern FunctionRNA rna_Mesh_calc_tangents_func;
extern StringPropertyRNA rna_Mesh_calc_tangents_uvmap;

extern FunctionRNA rna_Mesh_free_tangents_func;
extern FunctionRNA rna_Mesh_calc_tessface_func;
extern BoolPropertyRNA rna_Mesh_calc_tessface_free_mpoly;

extern FunctionRNA rna_Mesh_calc_smooth_groups_func;
extern BoolPropertyRNA rna_Mesh_calc_smooth_groups_use_bitflags;
extern IntPropertyRNA rna_Mesh_calc_smooth_groups_poly_groups;
extern IntPropertyRNA rna_Mesh_calc_smooth_groups_groups;

extern FunctionRNA rna_Mesh_normals_split_custom_set_func;
extern FloatPropertyRNA rna_Mesh_normals_split_custom_set_normals;

extern FunctionRNA rna_Mesh_normals_split_custom_set_from_vertices_func;
extern FloatPropertyRNA rna_Mesh_normals_split_custom_set_from_vertices_normals;

extern FunctionRNA rna_Mesh_update_func;
extern BoolPropertyRNA rna_Mesh_update_calc_edges;
extern BoolPropertyRNA rna_Mesh_update_calc_tessface;

extern FunctionRNA rna_Mesh_unit_test_compare_func;
extern PointerPropertyRNA rna_Mesh_unit_test_compare_mesh;
extern StringPropertyRNA rna_Mesh_unit_test_compare_result;

extern FunctionRNA rna_Mesh_validate_func;
extern BoolPropertyRNA rna_Mesh_validate_verbose;
extern BoolPropertyRNA rna_Mesh_validate_clean_customdata;
extern BoolPropertyRNA rna_Mesh_validate_result;

extern FunctionRNA rna_Mesh_validate_material_indices_func;
extern BoolPropertyRNA rna_Mesh_validate_material_indices_result;



CollectionPropertyRNA rna_MeshVertices_rna_properties;
PointerPropertyRNA rna_MeshVertices_rna_type;

extern FunctionRNA rna_MeshVertices_add_func;
extern IntPropertyRNA rna_MeshVertices_add_count;



CollectionPropertyRNA rna_MeshEdges_rna_properties;
PointerPropertyRNA rna_MeshEdges_rna_type;

extern FunctionRNA rna_MeshEdges_add_func;
extern IntPropertyRNA rna_MeshEdges_add_count;



CollectionPropertyRNA rna_MeshTessFaces_rna_properties;
PointerPropertyRNA rna_MeshTessFaces_rna_type;
IntPropertyRNA rna_MeshTessFaces_active;

extern FunctionRNA rna_MeshTessFaces_add_func;
extern IntPropertyRNA rna_MeshTessFaces_add_count;



CollectionPropertyRNA rna_MeshLoops_rna_properties;
PointerPropertyRNA rna_MeshLoops_rna_type;

extern FunctionRNA rna_MeshLoops_add_func;
extern IntPropertyRNA rna_MeshLoops_add_count;



CollectionPropertyRNA rna_MeshPolygons_rna_properties;
PointerPropertyRNA rna_MeshPolygons_rna_type;
IntPropertyRNA rna_MeshPolygons_active;

extern FunctionRNA rna_MeshPolygons_add_func;
extern IntPropertyRNA rna_MeshPolygons_add_count;



CollectionPropertyRNA rna_UVLoopLayers_rna_properties;
PointerPropertyRNA rna_UVLoopLayers_rna_type;
PointerPropertyRNA rna_UVLoopLayers_active;
IntPropertyRNA rna_UVLoopLayers_active_index;


CollectionPropertyRNA rna_TessfaceUVTextures_rna_properties;
PointerPropertyRNA rna_TessfaceUVTextures_rna_type;
PointerPropertyRNA rna_TessfaceUVTextures_active;
IntPropertyRNA rna_TessfaceUVTextures_active_index;

extern FunctionRNA rna_TessfaceUVTextures_new_func;
extern StringPropertyRNA rna_TessfaceUVTextures_new_name;
extern PointerPropertyRNA rna_TessfaceUVTextures_new_layer;



CollectionPropertyRNA rna_UVTextures_rna_properties;
PointerPropertyRNA rna_UVTextures_rna_type;
PointerPropertyRNA rna_UVTextures_active;
IntPropertyRNA rna_UVTextures_active_index;

extern FunctionRNA rna_UVTextures_new_func;
extern StringPropertyRNA rna_UVTextures_new_name;
extern PointerPropertyRNA rna_UVTextures_new_layer;

extern FunctionRNA rna_UVTextures_remove_func;
extern PointerPropertyRNA rna_UVTextures_remove_layer;



CollectionPropertyRNA rna_VertexColors_rna_properties;
PointerPropertyRNA rna_VertexColors_rna_type;
PointerPropertyRNA rna_VertexColors_active;
IntPropertyRNA rna_VertexColors_active_index;

extern FunctionRNA rna_VertexColors_new_func;
extern StringPropertyRNA rna_VertexColors_new_name;
extern PointerPropertyRNA rna_VertexColors_new_layer;



CollectionPropertyRNA rna_LoopColors_rna_properties;
PointerPropertyRNA rna_LoopColors_rna_type;
PointerPropertyRNA rna_LoopColors_active;
IntPropertyRNA rna_LoopColors_active_index;

extern FunctionRNA rna_LoopColors_new_func;
extern StringPropertyRNA rna_LoopColors_new_name;
extern PointerPropertyRNA rna_LoopColors_new_layer;

extern FunctionRNA rna_LoopColors_remove_func;
extern PointerPropertyRNA rna_LoopColors_remove_layer;



CollectionPropertyRNA rna_VertexFloatProperties_rna_properties;
PointerPropertyRNA rna_VertexFloatProperties_rna_type;

extern FunctionRNA rna_VertexFloatProperties_new_func;
extern StringPropertyRNA rna_VertexFloatProperties_new_name;
extern PointerPropertyRNA rna_VertexFloatProperties_new_layer;



CollectionPropertyRNA rna_VertexIntProperties_rna_properties;
PointerPropertyRNA rna_VertexIntProperties_rna_type;

extern FunctionRNA rna_VertexIntProperties_new_func;
extern StringPropertyRNA rna_VertexIntProperties_new_name;
extern PointerPropertyRNA rna_VertexIntProperties_new_layer;



CollectionPropertyRNA rna_VertexStringProperties_rna_properties;
PointerPropertyRNA rna_VertexStringProperties_rna_type;

extern FunctionRNA rna_VertexStringProperties_new_func;
extern StringPropertyRNA rna_VertexStringProperties_new_name;
extern PointerPropertyRNA rna_VertexStringProperties_new_layer;



CollectionPropertyRNA rna_PolygonFloatProperties_rna_properties;
PointerPropertyRNA rna_PolygonFloatProperties_rna_type;

extern FunctionRNA rna_PolygonFloatProperties_new_func;
extern StringPropertyRNA rna_PolygonFloatProperties_new_name;
extern PointerPropertyRNA rna_PolygonFloatProperties_new_layer;



CollectionPropertyRNA rna_PolygonIntProperties_rna_properties;
PointerPropertyRNA rna_PolygonIntProperties_rna_type;

extern FunctionRNA rna_PolygonIntProperties_new_func;
extern StringPropertyRNA rna_PolygonIntProperties_new_name;
extern PointerPropertyRNA rna_PolygonIntProperties_new_layer;



CollectionPropertyRNA rna_PolygonStringProperties_rna_properties;
PointerPropertyRNA rna_PolygonStringProperties_rna_type;

extern FunctionRNA rna_PolygonStringProperties_new_func;
extern StringPropertyRNA rna_PolygonStringProperties_new_name;
extern PointerPropertyRNA rna_PolygonStringProperties_new_layer;



CollectionPropertyRNA rna_MeshSkinVertexLayer_rna_properties;
PointerPropertyRNA rna_MeshSkinVertexLayer_rna_type;
StringPropertyRNA rna_MeshSkinVertexLayer_name;
CollectionPropertyRNA rna_MeshSkinVertexLayer_data;


CollectionPropertyRNA rna_MeshSkinVertex_rna_properties;
PointerPropertyRNA rna_MeshSkinVertex_rna_type;
FloatPropertyRNA rna_MeshSkinVertex_radius;
BoolPropertyRNA rna_MeshSkinVertex_use_root;
BoolPropertyRNA rna_MeshSkinVertex_use_loose;


CollectionPropertyRNA rna_MeshPaintMaskLayer_rna_properties;
PointerPropertyRNA rna_MeshPaintMaskLayer_rna_type;
CollectionPropertyRNA rna_MeshPaintMaskLayer_data;


CollectionPropertyRNA rna_MeshPaintMaskProperty_rna_properties;
PointerPropertyRNA rna_MeshPaintMaskProperty_rna_type;
FloatPropertyRNA rna_MeshPaintMaskProperty_value;


CollectionPropertyRNA rna_MeshVertex_rna_properties;
PointerPropertyRNA rna_MeshVertex_rna_type;
FloatPropertyRNA rna_MeshVertex_co;
FloatPropertyRNA rna_MeshVertex_normal;
BoolPropertyRNA rna_MeshVertex_select;
BoolPropertyRNA rna_MeshVertex_hide;
FloatPropertyRNA rna_MeshVertex_bevel_weight;
CollectionPropertyRNA rna_MeshVertex_groups;
IntPropertyRNA rna_MeshVertex_index;
FloatPropertyRNA rna_MeshVertex_undeformed_co;


CollectionPropertyRNA rna_VertexGroupElement_rna_properties;
PointerPropertyRNA rna_VertexGroupElement_rna_type;
IntPropertyRNA rna_VertexGroupElement_group;
FloatPropertyRNA rna_VertexGroupElement_weight;


CollectionPropertyRNA rna_MeshEdge_rna_properties;
PointerPropertyRNA rna_MeshEdge_rna_type;
IntPropertyRNA rna_MeshEdge_vertices;
FloatPropertyRNA rna_MeshEdge_crease;
FloatPropertyRNA rna_MeshEdge_bevel_weight;
BoolPropertyRNA rna_MeshEdge_select;
BoolPropertyRNA rna_MeshEdge_hide;
BoolPropertyRNA rna_MeshEdge_use_seam;
BoolPropertyRNA rna_MeshEdge_use_edge_sharp;
BoolPropertyRNA rna_MeshEdge_is_loose;
BoolPropertyRNA rna_MeshEdge_use_freestyle_mark;
IntPropertyRNA rna_MeshEdge_index;


CollectionPropertyRNA rna_MeshTessFace_rna_properties;
PointerPropertyRNA rna_MeshTessFace_rna_type;
IntPropertyRNA rna_MeshTessFace_vertices;
IntPropertyRNA rna_MeshTessFace_vertices_raw;
IntPropertyRNA rna_MeshTessFace_material_index;
BoolPropertyRNA rna_MeshTessFace_select;
BoolPropertyRNA rna_MeshTessFace_hide;
BoolPropertyRNA rna_MeshTessFace_use_smooth;
FloatPropertyRNA rna_MeshTessFace_normal;
FloatPropertyRNA rna_MeshTessFace_split_normals;
FloatPropertyRNA rna_MeshTessFace_area;
IntPropertyRNA rna_MeshTessFace_index;


CollectionPropertyRNA rna_MeshLoop_rna_properties;
PointerPropertyRNA rna_MeshLoop_rna_type;
IntPropertyRNA rna_MeshLoop_vertex_index;
IntPropertyRNA rna_MeshLoop_edge_index;
IntPropertyRNA rna_MeshLoop_index;
FloatPropertyRNA rna_MeshLoop_normal;
FloatPropertyRNA rna_MeshLoop_tangent;
FloatPropertyRNA rna_MeshLoop_bitangent_sign;
FloatPropertyRNA rna_MeshLoop_bitangent;


CollectionPropertyRNA rna_MeshPolygon_rna_properties;
PointerPropertyRNA rna_MeshPolygon_rna_type;
IntPropertyRNA rna_MeshPolygon_vertices;
IntPropertyRNA rna_MeshPolygon_loop_start;
IntPropertyRNA rna_MeshPolygon_loop_total;
IntPropertyRNA rna_MeshPolygon_material_index;
BoolPropertyRNA rna_MeshPolygon_select;
BoolPropertyRNA rna_MeshPolygon_hide;
BoolPropertyRNA rna_MeshPolygon_use_smooth;
BoolPropertyRNA rna_MeshPolygon_use_freestyle_mark;
FloatPropertyRNA rna_MeshPolygon_normal;
FloatPropertyRNA rna_MeshPolygon_center;
FloatPropertyRNA rna_MeshPolygon_area;
IntPropertyRNA rna_MeshPolygon_index;

extern FunctionRNA rna_MeshPolygon_flip_func;


CollectionPropertyRNA rna_MeshUVLoopLayer_rna_properties;
PointerPropertyRNA rna_MeshUVLoopLayer_rna_type;
CollectionPropertyRNA rna_MeshUVLoopLayer_data;
StringPropertyRNA rna_MeshUVLoopLayer_name;


CollectionPropertyRNA rna_MeshUVLoop_rna_properties;
PointerPropertyRNA rna_MeshUVLoop_rna_type;
FloatPropertyRNA rna_MeshUVLoop_uv;
BoolPropertyRNA rna_MeshUVLoop_pin_uv;
BoolPropertyRNA rna_MeshUVLoop_select;
BoolPropertyRNA rna_MeshUVLoop_select_edge;


CollectionPropertyRNA rna_MeshTextureFaceLayer_rna_properties;
PointerPropertyRNA rna_MeshTextureFaceLayer_rna_type;
StringPropertyRNA rna_MeshTextureFaceLayer_name;
BoolPropertyRNA rna_MeshTextureFaceLayer_active;
BoolPropertyRNA rna_MeshTextureFaceLayer_active_render;
BoolPropertyRNA rna_MeshTextureFaceLayer_active_clone;
CollectionPropertyRNA rna_MeshTextureFaceLayer_data;


CollectionPropertyRNA rna_MeshTextureFace_rna_properties;
PointerPropertyRNA rna_MeshTextureFace_rna_type;
PointerPropertyRNA rna_MeshTextureFace_image;
FloatPropertyRNA rna_MeshTextureFace_uv1;
FloatPropertyRNA rna_MeshTextureFace_uv2;
FloatPropertyRNA rna_MeshTextureFace_uv3;
FloatPropertyRNA rna_MeshTextureFace_uv4;
FloatPropertyRNA rna_MeshTextureFace_uv;
FloatPropertyRNA rna_MeshTextureFace_uv_raw;


CollectionPropertyRNA rna_MeshTexturePolyLayer_rna_properties;
PointerPropertyRNA rna_MeshTexturePolyLayer_rna_type;
StringPropertyRNA rna_MeshTexturePolyLayer_name;
BoolPropertyRNA rna_MeshTexturePolyLayer_active;
BoolPropertyRNA rna_MeshTexturePolyLayer_active_render;
BoolPropertyRNA rna_MeshTexturePolyLayer_active_clone;
CollectionPropertyRNA rna_MeshTexturePolyLayer_data;


CollectionPropertyRNA rna_MeshTexturePoly_rna_properties;
PointerPropertyRNA rna_MeshTexturePoly_rna_type;
PointerPropertyRNA rna_MeshTexturePoly_image;


CollectionPropertyRNA rna_MeshColorLayer_rna_properties;
PointerPropertyRNA rna_MeshColorLayer_rna_type;
StringPropertyRNA rna_MeshColorLayer_name;
BoolPropertyRNA rna_MeshColorLayer_active;
BoolPropertyRNA rna_MeshColorLayer_active_render;
CollectionPropertyRNA rna_MeshColorLayer_data;


CollectionPropertyRNA rna_MeshColor_rna_properties;
PointerPropertyRNA rna_MeshColor_rna_type;
FloatPropertyRNA rna_MeshColor_color1;
FloatPropertyRNA rna_MeshColor_color2;
FloatPropertyRNA rna_MeshColor_color3;
FloatPropertyRNA rna_MeshColor_color4;


CollectionPropertyRNA rna_MeshLoopColorLayer_rna_properties;
PointerPropertyRNA rna_MeshLoopColorLayer_rna_type;
StringPropertyRNA rna_MeshLoopColorLayer_name;
BoolPropertyRNA rna_MeshLoopColorLayer_active;
BoolPropertyRNA rna_MeshLoopColorLayer_active_render;
CollectionPropertyRNA rna_MeshLoopColorLayer_data;


CollectionPropertyRNA rna_MeshLoopColor_rna_properties;
PointerPropertyRNA rna_MeshLoopColor_rna_type;
FloatPropertyRNA rna_MeshLoopColor_color;


CollectionPropertyRNA rna_MeshVertexFloatPropertyLayer_rna_properties;
PointerPropertyRNA rna_MeshVertexFloatPropertyLayer_rna_type;
StringPropertyRNA rna_MeshVertexFloatPropertyLayer_name;
CollectionPropertyRNA rna_MeshVertexFloatPropertyLayer_data;


CollectionPropertyRNA rna_MeshVertexFloatProperty_rna_properties;
PointerPropertyRNA rna_MeshVertexFloatProperty_rna_type;
FloatPropertyRNA rna_MeshVertexFloatProperty_value;


CollectionPropertyRNA rna_MeshPolygonFloatPropertyLayer_rna_properties;
PointerPropertyRNA rna_MeshPolygonFloatPropertyLayer_rna_type;
StringPropertyRNA rna_MeshPolygonFloatPropertyLayer_name;
CollectionPropertyRNA rna_MeshPolygonFloatPropertyLayer_data;


CollectionPropertyRNA rna_MeshPolygonFloatProperty_rna_properties;
PointerPropertyRNA rna_MeshPolygonFloatProperty_rna_type;
FloatPropertyRNA rna_MeshPolygonFloatProperty_value;


CollectionPropertyRNA rna_MeshVertexIntPropertyLayer_rna_properties;
PointerPropertyRNA rna_MeshVertexIntPropertyLayer_rna_type;
StringPropertyRNA rna_MeshVertexIntPropertyLayer_name;
CollectionPropertyRNA rna_MeshVertexIntPropertyLayer_data;


CollectionPropertyRNA rna_MeshVertexIntProperty_rna_properties;
PointerPropertyRNA rna_MeshVertexIntProperty_rna_type;
IntPropertyRNA rna_MeshVertexIntProperty_value;


CollectionPropertyRNA rna_MeshPolygonIntPropertyLayer_rna_properties;
PointerPropertyRNA rna_MeshPolygonIntPropertyLayer_rna_type;
StringPropertyRNA rna_MeshPolygonIntPropertyLayer_name;
CollectionPropertyRNA rna_MeshPolygonIntPropertyLayer_data;


CollectionPropertyRNA rna_MeshPolygonIntProperty_rna_properties;
PointerPropertyRNA rna_MeshPolygonIntProperty_rna_type;
IntPropertyRNA rna_MeshPolygonIntProperty_value;


CollectionPropertyRNA rna_MeshVertexStringPropertyLayer_rna_properties;
PointerPropertyRNA rna_MeshVertexStringPropertyLayer_rna_type;
StringPropertyRNA rna_MeshVertexStringPropertyLayer_name;
CollectionPropertyRNA rna_MeshVertexStringPropertyLayer_data;


CollectionPropertyRNA rna_MeshVertexStringProperty_rna_properties;
PointerPropertyRNA rna_MeshVertexStringProperty_rna_type;
StringPropertyRNA rna_MeshVertexStringProperty_value;


CollectionPropertyRNA rna_MeshPolygonStringPropertyLayer_rna_properties;
PointerPropertyRNA rna_MeshPolygonStringPropertyLayer_rna_type;
StringPropertyRNA rna_MeshPolygonStringPropertyLayer_name;
CollectionPropertyRNA rna_MeshPolygonStringPropertyLayer_data;


CollectionPropertyRNA rna_MeshPolygonStringProperty_rna_properties;
PointerPropertyRNA rna_MeshPolygonStringProperty_rna_type;
StringPropertyRNA rna_MeshPolygonStringProperty_value;

int Mesh_vertices_length(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (data->mvert == NULL) ? 0 : data->totvert;
}

static PointerRNA Mesh_vertices_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshVertex, rna_iterator_array_get(iter));
}

void Mesh_vertices_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_vertices;

	rna_iterator_array_begin(iter, data->mvert, sizeof(data->mvert[0]), data->totvert, 0, NULL);

	if (iter->valid)
		iter->ptr = Mesh_vertices_get(iter);
}

void Mesh_vertices_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_vertices_get(iter);
}

void Mesh_vertices_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_vertices_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_vertices_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_vertices_get(&iter);
	}

	Mesh_vertices_end(&iter);

	return found;
}

int Mesh_edges_length(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (data->medge == NULL) ? 0 : data->totedge;
}

static PointerRNA Mesh_edges_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshEdge, rna_iterator_array_get(iter));
}

void Mesh_edges_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_edges;

	rna_iterator_array_begin(iter, data->medge, sizeof(data->medge[0]), data->totedge, 0, NULL);

	if (iter->valid)
		iter->ptr = Mesh_edges_get(iter);
}

void Mesh_edges_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_edges_get(iter);
}

void Mesh_edges_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_edges_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_edges_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_edges_get(&iter);
	}

	Mesh_edges_end(&iter);

	return found;
}

int Mesh_tessfaces_length(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (data->mface == NULL) ? 0 : data->totface;
}

static PointerRNA Mesh_tessfaces_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshTessFace, rna_iterator_array_get(iter));
}

void Mesh_tessfaces_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_tessfaces;

	rna_iterator_array_begin(iter, data->mface, sizeof(data->mface[0]), data->totface, 0, NULL);

	if (iter->valid)
		iter->ptr = Mesh_tessfaces_get(iter);
}

void Mesh_tessfaces_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_tessfaces_get(iter);
}

void Mesh_tessfaces_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_tessfaces_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_tessfaces_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_tessfaces_get(&iter);
	}

	Mesh_tessfaces_end(&iter);

	return found;
}

int Mesh_loops_length(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (data->mloop == NULL) ? 0 : data->totloop;
}

static PointerRNA Mesh_loops_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshLoop, rna_iterator_array_get(iter));
}

void Mesh_loops_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_loops;

	rna_iterator_array_begin(iter, data->mloop, sizeof(data->mloop[0]), data->totloop, 0, NULL);

	if (iter->valid)
		iter->ptr = Mesh_loops_get(iter);
}

void Mesh_loops_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_loops_get(iter);
}

void Mesh_loops_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_loops_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_loops_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_loops_get(&iter);
	}

	Mesh_loops_end(&iter);

	return found;
}

int Mesh_polygons_length(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (data->mpoly == NULL) ? 0 : data->totpoly;
}

static PointerRNA Mesh_polygons_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshPolygon, rna_iterator_array_get(iter));
}

void Mesh_polygons_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_polygons;

	rna_iterator_array_begin(iter, data->mpoly, sizeof(data->mpoly[0]), data->totpoly, 0, NULL);

	if (iter->valid)
		iter->ptr = Mesh_polygons_get(iter);
}

void Mesh_polygons_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_polygons_get(iter);
}

void Mesh_polygons_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_polygons_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_polygons_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_polygons_get(&iter);
	}

	Mesh_polygons_end(&iter);

	return found;
}

PointerRNA Mesh_texture_mesh_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return rna_pointer_inherit_refine(ptr, &RNA_Mesh, data->texcomesh);
}

void Mesh_texture_mesh_set(PointerRNA *ptr, PointerRNA value)
{
	Mesh *data = (Mesh *)(ptr->data);
	ID *id = ptr->id.data;
	if (id == value.data) return;


	if (data->texcomesh)
		id_us_min((ID *)data->texcomesh);
	if (value.data)
		id_us_plus((ID *)value.data);

	data->texcomesh = value.data;
}

int Mesh_uv_layers_length(PointerRNA *ptr)
{
	return rna_Mesh_uv_layers_length(ptr);
}

static PointerRNA Mesh_uv_layers_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshUVLoopLayer, rna_iterator_array_get(iter));
}

void Mesh_uv_layers_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_uv_layers;

	rna_Mesh_uv_layers_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = Mesh_uv_layers_get(iter);
}

void Mesh_uv_layers_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_uv_layers_get(iter);
}

void Mesh_uv_layers_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_uv_layers_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_uv_layers_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_uv_layers_get(&iter);
	}

	Mesh_uv_layers_end(&iter);

	return found;
}

int Mesh_uv_layers_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	extern int MeshUVLoopLayer_name_length(PointerRNA *);
	extern void MeshUVLoopLayer_name_get(PointerRNA *, char *);

	bool found = false;
	CollectionPropertyIterator iter;
	char namebuf[1024];
	char *name;

	Mesh_uv_layers_begin(&iter, ptr);

	while (iter.valid) {
		if (iter.ptr.data) {
			int namelen = MeshUVLoopLayer_name_length(&iter.ptr);
			if (namelen < 1024) {
				MeshUVLoopLayer_name_get(&iter.ptr, namebuf);
				if (strcmp(namebuf, key) == 0) {
					found = true;
					*r_ptr = iter.ptr;
					break;
				}
			}
			else {
				name = MEM_mallocN(namelen+1, "name string");
				MeshUVLoopLayer_name_get(&iter.ptr, name);
				if (strcmp(name, key) == 0) {
					MEM_freeN(name);

					found = true;
					*r_ptr = iter.ptr;
					break;
				}
				else {
					MEM_freeN(name);
				}
			}
		}
		Mesh_uv_layers_next(&iter);
	}
	Mesh_uv_layers_end(&iter);

	return found;
}

PointerRNA Mesh_uv_layer_clone_get(PointerRNA *ptr)
{
	return rna_Mesh_uv_layer_clone_get(ptr);
}

void Mesh_uv_layer_clone_set(PointerRNA *ptr, PointerRNA value)
{
	rna_Mesh_uv_layer_clone_set(ptr, value);
}

int Mesh_uv_layer_clone_index_get(PointerRNA *ptr)
{
	return rna_Mesh_uv_layer_clone_index_get(ptr);
}

void Mesh_uv_layer_clone_index_set(PointerRNA *ptr, int value)
{
	rna_Mesh_uv_layer_clone_index_set(ptr, value);
}

PointerRNA Mesh_uv_layer_stencil_get(PointerRNA *ptr)
{
	return rna_Mesh_uv_layer_stencil_get(ptr);
}

void Mesh_uv_layer_stencil_set(PointerRNA *ptr, PointerRNA value)
{
	rna_Mesh_uv_layer_stencil_set(ptr, value);
}

int Mesh_uv_layer_stencil_index_get(PointerRNA *ptr)
{
	return rna_Mesh_uv_layer_stencil_index_get(ptr);
}

void Mesh_uv_layer_stencil_index_set(PointerRNA *ptr, int value)
{
	rna_Mesh_uv_layer_stencil_index_set(ptr, value);
}

int Mesh_tessface_uv_textures_length(PointerRNA *ptr)
{
	return rna_Mesh_tessface_uv_textures_length(ptr);
}

static PointerRNA Mesh_tessface_uv_textures_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshTextureFaceLayer, rna_iterator_array_get(iter));
}

void Mesh_tessface_uv_textures_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_tessface_uv_textures;

	rna_Mesh_tessface_uv_textures_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = Mesh_tessface_uv_textures_get(iter);
}

void Mesh_tessface_uv_textures_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_tessface_uv_textures_get(iter);
}

void Mesh_tessface_uv_textures_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_tessface_uv_textures_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_tessface_uv_textures_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_tessface_uv_textures_get(&iter);
	}

	Mesh_tessface_uv_textures_end(&iter);

	return found;
}

int Mesh_tessface_uv_textures_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	extern int MeshTextureFaceLayer_name_length(PointerRNA *);
	extern void MeshTextureFaceLayer_name_get(PointerRNA *, char *);

	bool found = false;
	CollectionPropertyIterator iter;
	char namebuf[1024];
	char *name;

	Mesh_tessface_uv_textures_begin(&iter, ptr);

	while (iter.valid) {
		if (iter.ptr.data) {
			int namelen = MeshTextureFaceLayer_name_length(&iter.ptr);
			if (namelen < 1024) {
				MeshTextureFaceLayer_name_get(&iter.ptr, namebuf);
				if (strcmp(namebuf, key) == 0) {
					found = true;
					*r_ptr = iter.ptr;
					break;
				}
			}
			else {
				name = MEM_mallocN(namelen+1, "name string");
				MeshTextureFaceLayer_name_get(&iter.ptr, name);
				if (strcmp(name, key) == 0) {
					MEM_freeN(name);

					found = true;
					*r_ptr = iter.ptr;
					break;
				}
				else {
					MEM_freeN(name);
				}
			}
		}
		Mesh_tessface_uv_textures_next(&iter);
	}
	Mesh_tessface_uv_textures_end(&iter);

	return found;
}

int Mesh_uv_textures_length(PointerRNA *ptr)
{
	return rna_Mesh_uv_textures_length(ptr);
}

static PointerRNA Mesh_uv_textures_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshTexturePolyLayer, rna_iterator_array_get(iter));
}

void Mesh_uv_textures_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_uv_textures;

	rna_Mesh_uv_textures_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = Mesh_uv_textures_get(iter);
}

void Mesh_uv_textures_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_uv_textures_get(iter);
}

void Mesh_uv_textures_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_uv_textures_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_uv_textures_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_uv_textures_get(&iter);
	}

	Mesh_uv_textures_end(&iter);

	return found;
}

int Mesh_uv_textures_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	extern int MeshTexturePolyLayer_name_length(PointerRNA *);
	extern void MeshTexturePolyLayer_name_get(PointerRNA *, char *);

	bool found = false;
	CollectionPropertyIterator iter;
	char namebuf[1024];
	char *name;

	Mesh_uv_textures_begin(&iter, ptr);

	while (iter.valid) {
		if (iter.ptr.data) {
			int namelen = MeshTexturePolyLayer_name_length(&iter.ptr);
			if (namelen < 1024) {
				MeshTexturePolyLayer_name_get(&iter.ptr, namebuf);
				if (strcmp(namebuf, key) == 0) {
					found = true;
					*r_ptr = iter.ptr;
					break;
				}
			}
			else {
				name = MEM_mallocN(namelen+1, "name string");
				MeshTexturePolyLayer_name_get(&iter.ptr, name);
				if (strcmp(name, key) == 0) {
					MEM_freeN(name);

					found = true;
					*r_ptr = iter.ptr;
					break;
				}
				else {
					MEM_freeN(name);
				}
			}
		}
		Mesh_uv_textures_next(&iter);
	}
	Mesh_uv_textures_end(&iter);

	return found;
}

PointerRNA Mesh_uv_texture_clone_get(PointerRNA *ptr)
{
	return rna_Mesh_uv_texture_clone_get(ptr);
}

void Mesh_uv_texture_clone_set(PointerRNA *ptr, PointerRNA value)
{
	rna_Mesh_uv_texture_clone_set(ptr, value);
}

int Mesh_uv_texture_clone_index_get(PointerRNA *ptr)
{
	return rna_Mesh_uv_texture_clone_index_get(ptr);
}

void Mesh_uv_texture_clone_index_set(PointerRNA *ptr, int value)
{
	rna_Mesh_uv_texture_clone_index_set(ptr, value);
}

PointerRNA Mesh_uv_texture_stencil_get(PointerRNA *ptr)
{
	return rna_Mesh_uv_texture_stencil_get(ptr);
}

void Mesh_uv_texture_stencil_set(PointerRNA *ptr, PointerRNA value)
{
	rna_Mesh_uv_texture_stencil_set(ptr, value);
}

int Mesh_uv_texture_stencil_index_get(PointerRNA *ptr)
{
	return rna_Mesh_uv_texture_stencil_index_get(ptr);
}

void Mesh_uv_texture_stencil_index_set(PointerRNA *ptr, int value)
{
	rna_Mesh_uv_texture_stencil_index_set(ptr, value);
}

int Mesh_tessface_vertex_colors_length(PointerRNA *ptr)
{
	return rna_Mesh_tessface_vertex_colors_length(ptr);
}

static PointerRNA Mesh_tessface_vertex_colors_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshColorLayer, rna_iterator_array_get(iter));
}

void Mesh_tessface_vertex_colors_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_tessface_vertex_colors;

	rna_Mesh_tessface_vertex_colors_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = Mesh_tessface_vertex_colors_get(iter);
}

void Mesh_tessface_vertex_colors_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_tessface_vertex_colors_get(iter);
}

void Mesh_tessface_vertex_colors_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_tessface_vertex_colors_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_tessface_vertex_colors_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_tessface_vertex_colors_get(&iter);
	}

	Mesh_tessface_vertex_colors_end(&iter);

	return found;
}

int Mesh_tessface_vertex_colors_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	extern int MeshColorLayer_name_length(PointerRNA *);
	extern void MeshColorLayer_name_get(PointerRNA *, char *);

	bool found = false;
	CollectionPropertyIterator iter;
	char namebuf[1024];
	char *name;

	Mesh_tessface_vertex_colors_begin(&iter, ptr);

	while (iter.valid) {
		if (iter.ptr.data) {
			int namelen = MeshColorLayer_name_length(&iter.ptr);
			if (namelen < 1024) {
				MeshColorLayer_name_get(&iter.ptr, namebuf);
				if (strcmp(namebuf, key) == 0) {
					found = true;
					*r_ptr = iter.ptr;
					break;
				}
			}
			else {
				name = MEM_mallocN(namelen+1, "name string");
				MeshColorLayer_name_get(&iter.ptr, name);
				if (strcmp(name, key) == 0) {
					MEM_freeN(name);

					found = true;
					*r_ptr = iter.ptr;
					break;
				}
				else {
					MEM_freeN(name);
				}
			}
		}
		Mesh_tessface_vertex_colors_next(&iter);
	}
	Mesh_tessface_vertex_colors_end(&iter);

	return found;
}

int Mesh_vertex_colors_length(PointerRNA *ptr)
{
	return rna_Mesh_vertex_colors_length(ptr);
}

static PointerRNA Mesh_vertex_colors_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshLoopColorLayer, rna_iterator_array_get(iter));
}

void Mesh_vertex_colors_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_vertex_colors;

	rna_Mesh_vertex_colors_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = Mesh_vertex_colors_get(iter);
}

void Mesh_vertex_colors_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_vertex_colors_get(iter);
}

void Mesh_vertex_colors_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_vertex_colors_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_vertex_colors_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_vertex_colors_get(&iter);
	}

	Mesh_vertex_colors_end(&iter);

	return found;
}

int Mesh_vertex_colors_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	extern int MeshLoopColorLayer_name_length(PointerRNA *);
	extern void MeshLoopColorLayer_name_get(PointerRNA *, char *);

	bool found = false;
	CollectionPropertyIterator iter;
	char namebuf[1024];
	char *name;

	Mesh_vertex_colors_begin(&iter, ptr);

	while (iter.valid) {
		if (iter.ptr.data) {
			int namelen = MeshLoopColorLayer_name_length(&iter.ptr);
			if (namelen < 1024) {
				MeshLoopColorLayer_name_get(&iter.ptr, namebuf);
				if (strcmp(namebuf, key) == 0) {
					found = true;
					*r_ptr = iter.ptr;
					break;
				}
			}
			else {
				name = MEM_mallocN(namelen+1, "name string");
				MeshLoopColorLayer_name_get(&iter.ptr, name);
				if (strcmp(name, key) == 0) {
					MEM_freeN(name);

					found = true;
					*r_ptr = iter.ptr;
					break;
				}
				else {
					MEM_freeN(name);
				}
			}
		}
		Mesh_vertex_colors_next(&iter);
	}
	Mesh_vertex_colors_end(&iter);

	return found;
}

int Mesh_vertex_layers_float_length(PointerRNA *ptr)
{
	return rna_Mesh_vertex_float_layers_length(ptr);
}

static PointerRNA Mesh_vertex_layers_float_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshVertexFloatPropertyLayer, rna_iterator_array_get(iter));
}

void Mesh_vertex_layers_float_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_vertex_layers_float;

	rna_Mesh_vertex_float_layers_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = Mesh_vertex_layers_float_get(iter);
}

void Mesh_vertex_layers_float_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_vertex_layers_float_get(iter);
}

void Mesh_vertex_layers_float_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_vertex_layers_float_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_vertex_layers_float_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_vertex_layers_float_get(&iter);
	}

	Mesh_vertex_layers_float_end(&iter);

	return found;
}

int Mesh_vertex_layers_float_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	extern int MeshVertexFloatPropertyLayer_name_length(PointerRNA *);
	extern void MeshVertexFloatPropertyLayer_name_get(PointerRNA *, char *);

	bool found = false;
	CollectionPropertyIterator iter;
	char namebuf[1024];
	char *name;

	Mesh_vertex_layers_float_begin(&iter, ptr);

	while (iter.valid) {
		if (iter.ptr.data) {
			int namelen = MeshVertexFloatPropertyLayer_name_length(&iter.ptr);
			if (namelen < 1024) {
				MeshVertexFloatPropertyLayer_name_get(&iter.ptr, namebuf);
				if (strcmp(namebuf, key) == 0) {
					found = true;
					*r_ptr = iter.ptr;
					break;
				}
			}
			else {
				name = MEM_mallocN(namelen+1, "name string");
				MeshVertexFloatPropertyLayer_name_get(&iter.ptr, name);
				if (strcmp(name, key) == 0) {
					MEM_freeN(name);

					found = true;
					*r_ptr = iter.ptr;
					break;
				}
				else {
					MEM_freeN(name);
				}
			}
		}
		Mesh_vertex_layers_float_next(&iter);
	}
	Mesh_vertex_layers_float_end(&iter);

	return found;
}

int Mesh_vertex_layers_int_length(PointerRNA *ptr)
{
	return rna_Mesh_vertex_int_layers_length(ptr);
}

static PointerRNA Mesh_vertex_layers_int_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshVertexIntPropertyLayer, rna_iterator_array_get(iter));
}

void Mesh_vertex_layers_int_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_vertex_layers_int;

	rna_Mesh_vertex_int_layers_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = Mesh_vertex_layers_int_get(iter);
}

void Mesh_vertex_layers_int_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_vertex_layers_int_get(iter);
}

void Mesh_vertex_layers_int_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_vertex_layers_int_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_vertex_layers_int_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_vertex_layers_int_get(&iter);
	}

	Mesh_vertex_layers_int_end(&iter);

	return found;
}

int Mesh_vertex_layers_int_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	extern int MeshVertexIntPropertyLayer_name_length(PointerRNA *);
	extern void MeshVertexIntPropertyLayer_name_get(PointerRNA *, char *);

	bool found = false;
	CollectionPropertyIterator iter;
	char namebuf[1024];
	char *name;

	Mesh_vertex_layers_int_begin(&iter, ptr);

	while (iter.valid) {
		if (iter.ptr.data) {
			int namelen = MeshVertexIntPropertyLayer_name_length(&iter.ptr);
			if (namelen < 1024) {
				MeshVertexIntPropertyLayer_name_get(&iter.ptr, namebuf);
				if (strcmp(namebuf, key) == 0) {
					found = true;
					*r_ptr = iter.ptr;
					break;
				}
			}
			else {
				name = MEM_mallocN(namelen+1, "name string");
				MeshVertexIntPropertyLayer_name_get(&iter.ptr, name);
				if (strcmp(name, key) == 0) {
					MEM_freeN(name);

					found = true;
					*r_ptr = iter.ptr;
					break;
				}
				else {
					MEM_freeN(name);
				}
			}
		}
		Mesh_vertex_layers_int_next(&iter);
	}
	Mesh_vertex_layers_int_end(&iter);

	return found;
}

int Mesh_vertex_layers_string_length(PointerRNA *ptr)
{
	return rna_Mesh_vertex_string_layers_length(ptr);
}

static PointerRNA Mesh_vertex_layers_string_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshVertexStringPropertyLayer, rna_iterator_array_get(iter));
}

void Mesh_vertex_layers_string_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_vertex_layers_string;

	rna_Mesh_vertex_string_layers_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = Mesh_vertex_layers_string_get(iter);
}

void Mesh_vertex_layers_string_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_vertex_layers_string_get(iter);
}

void Mesh_vertex_layers_string_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_vertex_layers_string_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_vertex_layers_string_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_vertex_layers_string_get(&iter);
	}

	Mesh_vertex_layers_string_end(&iter);

	return found;
}

int Mesh_vertex_layers_string_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	extern int MeshVertexStringPropertyLayer_name_length(PointerRNA *);
	extern void MeshVertexStringPropertyLayer_name_get(PointerRNA *, char *);

	bool found = false;
	CollectionPropertyIterator iter;
	char namebuf[1024];
	char *name;

	Mesh_vertex_layers_string_begin(&iter, ptr);

	while (iter.valid) {
		if (iter.ptr.data) {
			int namelen = MeshVertexStringPropertyLayer_name_length(&iter.ptr);
			if (namelen < 1024) {
				MeshVertexStringPropertyLayer_name_get(&iter.ptr, namebuf);
				if (strcmp(namebuf, key) == 0) {
					found = true;
					*r_ptr = iter.ptr;
					break;
				}
			}
			else {
				name = MEM_mallocN(namelen+1, "name string");
				MeshVertexStringPropertyLayer_name_get(&iter.ptr, name);
				if (strcmp(name, key) == 0) {
					MEM_freeN(name);

					found = true;
					*r_ptr = iter.ptr;
					break;
				}
				else {
					MEM_freeN(name);
				}
			}
		}
		Mesh_vertex_layers_string_next(&iter);
	}
	Mesh_vertex_layers_string_end(&iter);

	return found;
}

int Mesh_polygon_layers_float_length(PointerRNA *ptr)
{
	return rna_Mesh_polygon_float_layers_length(ptr);
}

static PointerRNA Mesh_polygon_layers_float_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshPolygonFloatPropertyLayer, rna_iterator_array_get(iter));
}

void Mesh_polygon_layers_float_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_polygon_layers_float;

	rna_Mesh_polygon_float_layers_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = Mesh_polygon_layers_float_get(iter);
}

void Mesh_polygon_layers_float_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_polygon_layers_float_get(iter);
}

void Mesh_polygon_layers_float_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_polygon_layers_float_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_polygon_layers_float_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_polygon_layers_float_get(&iter);
	}

	Mesh_polygon_layers_float_end(&iter);

	return found;
}

int Mesh_polygon_layers_float_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	extern int MeshPolygonFloatPropertyLayer_name_length(PointerRNA *);
	extern void MeshPolygonFloatPropertyLayer_name_get(PointerRNA *, char *);

	bool found = false;
	CollectionPropertyIterator iter;
	char namebuf[1024];
	char *name;

	Mesh_polygon_layers_float_begin(&iter, ptr);

	while (iter.valid) {
		if (iter.ptr.data) {
			int namelen = MeshPolygonFloatPropertyLayer_name_length(&iter.ptr);
			if (namelen < 1024) {
				MeshPolygonFloatPropertyLayer_name_get(&iter.ptr, namebuf);
				if (strcmp(namebuf, key) == 0) {
					found = true;
					*r_ptr = iter.ptr;
					break;
				}
			}
			else {
				name = MEM_mallocN(namelen+1, "name string");
				MeshPolygonFloatPropertyLayer_name_get(&iter.ptr, name);
				if (strcmp(name, key) == 0) {
					MEM_freeN(name);

					found = true;
					*r_ptr = iter.ptr;
					break;
				}
				else {
					MEM_freeN(name);
				}
			}
		}
		Mesh_polygon_layers_float_next(&iter);
	}
	Mesh_polygon_layers_float_end(&iter);

	return found;
}

int Mesh_polygon_layers_int_length(PointerRNA *ptr)
{
	return rna_Mesh_polygon_int_layers_length(ptr);
}

static PointerRNA Mesh_polygon_layers_int_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshPolygonIntPropertyLayer, rna_iterator_array_get(iter));
}

void Mesh_polygon_layers_int_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_polygon_layers_int;

	rna_Mesh_polygon_int_layers_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = Mesh_polygon_layers_int_get(iter);
}

void Mesh_polygon_layers_int_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_polygon_layers_int_get(iter);
}

void Mesh_polygon_layers_int_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_polygon_layers_int_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_polygon_layers_int_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_polygon_layers_int_get(&iter);
	}

	Mesh_polygon_layers_int_end(&iter);

	return found;
}

int Mesh_polygon_layers_int_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	extern int MeshPolygonIntPropertyLayer_name_length(PointerRNA *);
	extern void MeshPolygonIntPropertyLayer_name_get(PointerRNA *, char *);

	bool found = false;
	CollectionPropertyIterator iter;
	char namebuf[1024];
	char *name;

	Mesh_polygon_layers_int_begin(&iter, ptr);

	while (iter.valid) {
		if (iter.ptr.data) {
			int namelen = MeshPolygonIntPropertyLayer_name_length(&iter.ptr);
			if (namelen < 1024) {
				MeshPolygonIntPropertyLayer_name_get(&iter.ptr, namebuf);
				if (strcmp(namebuf, key) == 0) {
					found = true;
					*r_ptr = iter.ptr;
					break;
				}
			}
			else {
				name = MEM_mallocN(namelen+1, "name string");
				MeshPolygonIntPropertyLayer_name_get(&iter.ptr, name);
				if (strcmp(name, key) == 0) {
					MEM_freeN(name);

					found = true;
					*r_ptr = iter.ptr;
					break;
				}
				else {
					MEM_freeN(name);
				}
			}
		}
		Mesh_polygon_layers_int_next(&iter);
	}
	Mesh_polygon_layers_int_end(&iter);

	return found;
}

int Mesh_polygon_layers_string_length(PointerRNA *ptr)
{
	return rna_Mesh_polygon_string_layers_length(ptr);
}

static PointerRNA Mesh_polygon_layers_string_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshPolygonStringPropertyLayer, rna_iterator_array_get(iter));
}

void Mesh_polygon_layers_string_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_polygon_layers_string;

	rna_Mesh_polygon_string_layers_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = Mesh_polygon_layers_string_get(iter);
}

void Mesh_polygon_layers_string_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_polygon_layers_string_get(iter);
}

void Mesh_polygon_layers_string_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_polygon_layers_string_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_polygon_layers_string_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_polygon_layers_string_get(&iter);
	}

	Mesh_polygon_layers_string_end(&iter);

	return found;
}

int Mesh_polygon_layers_string_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	extern int MeshPolygonStringPropertyLayer_name_length(PointerRNA *);
	extern void MeshPolygonStringPropertyLayer_name_get(PointerRNA *, char *);

	bool found = false;
	CollectionPropertyIterator iter;
	char namebuf[1024];
	char *name;

	Mesh_polygon_layers_string_begin(&iter, ptr);

	while (iter.valid) {
		if (iter.ptr.data) {
			int namelen = MeshPolygonStringPropertyLayer_name_length(&iter.ptr);
			if (namelen < 1024) {
				MeshPolygonStringPropertyLayer_name_get(&iter.ptr, namebuf);
				if (strcmp(namebuf, key) == 0) {
					found = true;
					*r_ptr = iter.ptr;
					break;
				}
			}
			else {
				name = MEM_mallocN(namelen+1, "name string");
				MeshPolygonStringPropertyLayer_name_get(&iter.ptr, name);
				if (strcmp(name, key) == 0) {
					MEM_freeN(name);

					found = true;
					*r_ptr = iter.ptr;
					break;
				}
				else {
					MEM_freeN(name);
				}
			}
		}
		Mesh_polygon_layers_string_next(&iter);
	}
	Mesh_polygon_layers_string_end(&iter);

	return found;
}

int Mesh_skin_vertices_length(PointerRNA *ptr)
{
	return rna_Mesh_skin_vertices_length(ptr);
}

static PointerRNA Mesh_skin_vertices_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshSkinVertexLayer, rna_iterator_array_get(iter));
}

void Mesh_skin_vertices_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_skin_vertices;

	rna_Mesh_skin_vertices_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = Mesh_skin_vertices_get(iter);
}

void Mesh_skin_vertices_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_skin_vertices_get(iter);
}

void Mesh_skin_vertices_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_skin_vertices_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_skin_vertices_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_skin_vertices_get(&iter);
	}

	Mesh_skin_vertices_end(&iter);

	return found;
}

int Mesh_skin_vertices_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	extern int MeshSkinVertexLayer_name_length(PointerRNA *);
	extern void MeshSkinVertexLayer_name_get(PointerRNA *, char *);

	bool found = false;
	CollectionPropertyIterator iter;
	char namebuf[1024];
	char *name;

	Mesh_skin_vertices_begin(&iter, ptr);

	while (iter.valid) {
		if (iter.ptr.data) {
			int namelen = MeshSkinVertexLayer_name_length(&iter.ptr);
			if (namelen < 1024) {
				MeshSkinVertexLayer_name_get(&iter.ptr, namebuf);
				if (strcmp(namebuf, key) == 0) {
					found = true;
					*r_ptr = iter.ptr;
					break;
				}
			}
			else {
				name = MEM_mallocN(namelen+1, "name string");
				MeshSkinVertexLayer_name_get(&iter.ptr, name);
				if (strcmp(name, key) == 0) {
					MEM_freeN(name);

					found = true;
					*r_ptr = iter.ptr;
					break;
				}
				else {
					MEM_freeN(name);
				}
			}
		}
		Mesh_skin_vertices_next(&iter);
	}
	Mesh_skin_vertices_end(&iter);

	return found;
}

int Mesh_vertex_paint_masks_length(PointerRNA *ptr)
{
	return rna_Mesh_vertex_paint_masks_length(ptr);
}

static PointerRNA Mesh_vertex_paint_masks_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshPaintMaskLayer, rna_iterator_array_get(iter));
}

void Mesh_vertex_paint_masks_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_vertex_paint_masks;

	rna_Mesh_vertex_paint_masks_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = Mesh_vertex_paint_masks_get(iter);
}

void Mesh_vertex_paint_masks_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_vertex_paint_masks_get(iter);
}

void Mesh_vertex_paint_masks_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_vertex_paint_masks_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_vertex_paint_masks_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_vertex_paint_masks_get(&iter);
	}

	Mesh_vertex_paint_masks_end(&iter);

	return found;
}

int Mesh_use_auto_smooth_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->flag) & 32) != 0);
}

void Mesh_use_auto_smooth_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->flag |= 32;
	else data->flag &= ~32;
}

float Mesh_auto_smooth_angle_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (float)(data->smoothresh);
}

void Mesh_auto_smooth_angle_set(PointerRNA *ptr, float value)
{
	Mesh *data = (Mesh *)(ptr->data);
	data->smoothresh = CLAMPIS(value, 0.0f, 3.1415927410f);
}

int Mesh_has_custom_normals_get(PointerRNA *ptr)
{
	return rna_Mesh_has_custom_normals_get(ptr);
}

int Mesh_show_double_sided_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->flag) & 4) != 0);
}

void Mesh_show_double_sided_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->flag |= 4;
	else data->flag &= ~4;
}

PointerRNA Mesh_texco_mesh_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return rna_pointer_inherit_refine(ptr, &RNA_Mesh, data->texcomesh);
}

void Mesh_texco_mesh_set(PointerRNA *ptr, PointerRNA value)
{
	Mesh *data = (Mesh *)(ptr->data);

	if (data->texcomesh)
		id_us_min((ID *)data->texcomesh);
	if (value.data)
		id_us_plus((ID *)value.data);

	data->texcomesh = value.data;
}

PointerRNA Mesh_shape_keys_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return rna_pointer_inherit_refine(ptr, &RNA_Key, data->key);
}

int Mesh_use_auto_texspace_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->texflag) & 1) != 0);
}

void Mesh_use_auto_texspace_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->texflag |= 1;
	else data->texflag &= ~1;
}

int Mesh_show_edges_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 1) != 0);
}

void Mesh_show_edges_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 1;
	else data->drawflag &= ~1;
}

int Mesh_show_faces_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 2) != 0);
}

void Mesh_show_faces_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 2;
	else data->drawflag &= ~2;
}

int Mesh_show_normal_face_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 4) != 0);
}

void Mesh_show_normal_face_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 4;
	else data->drawflag &= ~4;
}

int Mesh_show_normal_loop_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 262144) != 0);
}

void Mesh_show_normal_loop_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 262144;
	else data->drawflag &= ~262144;
}

int Mesh_show_normal_vertex_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 8) != 0);
}

void Mesh_show_normal_vertex_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 8;
	else data->drawflag &= ~8;
}

int Mesh_show_weight_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 16) != 0);
}

void Mesh_show_weight_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 16;
	else data->drawflag &= ~16;
}

int Mesh_show_edge_crease_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 64) != 0);
}

void Mesh_show_edge_crease_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 64;
	else data->drawflag &= ~64;
}

int Mesh_show_edge_bevel_weight_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 512) != 0);
}

void Mesh_show_edge_bevel_weight_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 512;
	else data->drawflag &= ~512;
}

int Mesh_show_edge_seams_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 128) != 0);
}

void Mesh_show_edge_seams_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 128;
	else data->drawflag &= ~128;
}

int Mesh_show_edge_sharp_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 256) != 0);
}

void Mesh_show_edge_sharp_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 256;
	else data->drawflag &= ~256;
}

int Mesh_show_freestyle_edge_marks_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 32768) != 0);
}

void Mesh_show_freestyle_edge_marks_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 32768;
	else data->drawflag &= ~32768;
}

int Mesh_show_freestyle_face_marks_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 65536) != 0);
}

void Mesh_show_freestyle_face_marks_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 65536;
	else data->drawflag &= ~65536;
}

int Mesh_show_statvis_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 131072) != 0);
}

void Mesh_show_statvis_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 131072;
	else data->drawflag &= ~131072;
}

int Mesh_show_extra_edge_length_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 1024) != 0);
}

void Mesh_show_extra_edge_length_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 1024;
	else data->drawflag &= ~1024;
}

int Mesh_show_extra_edge_angle_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 8192) != 0);
}

void Mesh_show_extra_edge_angle_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 8192;
	else data->drawflag &= ~8192;
}

int Mesh_show_extra_face_angle_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 4096) != 0);
}

void Mesh_show_extra_face_angle_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 4096;
	else data->drawflag &= ~4096;
}

int Mesh_show_extra_face_area_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 2048) != 0);
}

void Mesh_show_extra_face_area_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 2048;
	else data->drawflag &= ~2048;
}

int Mesh_show_extra_indices_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->drawflag) & 16384) != 0);
}

void Mesh_show_extra_indices_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->drawflag |= 16384;
	else data->drawflag &= ~16384;
}

int Mesh_use_mirror_x_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->editflag) & 1) != 0);
}

void Mesh_use_mirror_x_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->editflag |= 1;
	else data->editflag &= ~1;
}

int Mesh_use_mirror_topology_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->editflag) & 16) != 0);
}

void Mesh_use_mirror_topology_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->editflag |= 16;
	else data->editflag &= ~16;
}

int Mesh_use_paint_mask_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->editflag) & 8) != 0);
}

void Mesh_use_paint_mask_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->editflag |= 8;
	else data->editflag &= ~8;
}

int Mesh_use_paint_mask_vertex_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->editflag) & 32) != 0);
}

void Mesh_use_paint_mask_vertex_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->editflag |= 32;
	else data->editflag &= ~32;
}

int Mesh_use_customdata_vertex_bevel_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->cd_flag) & 1) != 0);
}

void Mesh_use_customdata_vertex_bevel_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->cd_flag |= 1;
	else data->cd_flag &= ~1;
}

int Mesh_use_customdata_edge_bevel_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->cd_flag) & 2) != 0);
}

void Mesh_use_customdata_edge_bevel_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->cd_flag |= 2;
	else data->cd_flag &= ~2;
}

int Mesh_use_customdata_edge_crease_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->cd_flag) & 4) != 0);
}

void Mesh_use_customdata_edge_crease_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->cd_flag |= 4;
	else data->cd_flag &= ~4;
}

int Mesh_total_vert_sel_get(PointerRNA *ptr)
{
	return rna_Mesh_tot_vert_get(ptr);
}

int Mesh_total_edge_sel_get(PointerRNA *ptr)
{
	return rna_Mesh_tot_edge_get(ptr);
}

int Mesh_total_face_sel_get(PointerRNA *ptr)
{
	return rna_Mesh_tot_face_get(ptr);
}

int Mesh_is_editmode_get(PointerRNA *ptr)
{
	return rna_Mesh_is_editmode_get(ptr);
}

PointerRNA Mesh_animation_data_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return rna_pointer_inherit_refine(ptr, &RNA_AnimData, data->adt);
}

int Mesh_auto_texspace_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (((data->texflag) & 1) != 0);
}

void Mesh_auto_texspace_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	if (value) data->texflag |= 1;
	else data->texflag &= ~1;
}

void Mesh_texspace_location_get(PointerRNA *ptr, float values[3])
{
	rna_Mesh_texspace_loc_get(ptr, values);
}

void Mesh_texspace_location_set(PointerRNA *ptr, const float values[3])
{
	Mesh *data = (Mesh *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 3; i++) {
		((float *)data->loc)[i] = values[i];
	}
}

void Mesh_texspace_size_get(PointerRNA *ptr, float values[3])
{
	rna_Mesh_texspace_size_get(ptr, values);
}

void Mesh_texspace_size_set(PointerRNA *ptr, const float values[3])
{
	Mesh *data = (Mesh *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 3; i++) {
		((float *)data->size)[i] = values[i];
	}
}

int Mesh_materials_length(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (data->mat == NULL) ? 0 : data->totcol;
}

static PointerRNA Mesh_materials_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_Material, rna_iterator_array_dereference_get(iter));
}

void Mesh_materials_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_Mesh_materials;

	rna_iterator_array_begin(iter, data->mat, sizeof(data->mat[0]), data->totcol, 0, NULL);

	if (iter->valid)
		iter->ptr = Mesh_materials_get(iter);
}

void Mesh_materials_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = Mesh_materials_get(iter);
}

void Mesh_materials_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int Mesh_materials_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	Mesh_materials_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = Mesh_materials_get(&iter);
	}

	Mesh_materials_end(&iter);

	return found;
}

int Mesh_materials_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	extern int ID_name_length(PointerRNA *);
	extern void ID_name_get(PointerRNA *, char *);

	bool found = false;
	CollectionPropertyIterator iter;
	char namebuf[1024];
	char *name;

	Mesh_materials_begin(&iter, ptr);

	while (iter.valid) {
		if (iter.ptr.data) {
			int namelen = ID_name_length(&iter.ptr);
			if (namelen < 1024) {
				ID_name_get(&iter.ptr, namebuf);
				if (strcmp(namebuf, key) == 0) {
					found = true;
					*r_ptr = iter.ptr;
					break;
				}
			}
			else {
				name = MEM_mallocN(namelen+1, "name string");
				ID_name_get(&iter.ptr, name);
				if (strcmp(name, key) == 0) {
					MEM_freeN(name);

					found = true;
					*r_ptr = iter.ptr;
					break;
				}
				else {
					MEM_freeN(name);
				}
			}
		}
		Mesh_materials_next(&iter);
	}
	Mesh_materials_end(&iter);

	return found;
}

static PointerRNA MeshVertices_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshVertices_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshVertices_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshVertices_rna_properties_get(iter);
}

void MeshVertices_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshVertices_rna_properties_get(iter);
}

void MeshVertices_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshVertices_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshVertices_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

static PointerRNA MeshEdges_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshEdges_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshEdges_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshEdges_rna_properties_get(iter);
}

void MeshEdges_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshEdges_rna_properties_get(iter);
}

void MeshEdges_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshEdges_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshEdges_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

static PointerRNA MeshTessFaces_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshTessFaces_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshTessFaces_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshTessFaces_rna_properties_get(iter);
}

void MeshTessFaces_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshTessFaces_rna_properties_get(iter);
}

void MeshTessFaces_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshTessFaces_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshTessFaces_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

int MeshTessFaces_active_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (int)(data->act_face);
}

void MeshTessFaces_active_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	data->act_face = value;
}

static PointerRNA MeshLoops_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshLoops_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshLoops_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshLoops_rna_properties_get(iter);
}

void MeshLoops_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshLoops_rna_properties_get(iter);
}

void MeshLoops_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshLoops_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshLoops_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

static PointerRNA MeshPolygons_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshPolygons_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPolygons_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPolygons_rna_properties_get(iter);
}

void MeshPolygons_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshPolygons_rna_properties_get(iter);
}

void MeshPolygons_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshPolygons_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshPolygons_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

int MeshPolygons_active_get(PointerRNA *ptr)
{
	Mesh *data = (Mesh *)(ptr->data);
	return (int)(data->act_face);
}

void MeshPolygons_active_set(PointerRNA *ptr, int value)
{
	Mesh *data = (Mesh *)(ptr->data);
	data->act_face = value;
}

static PointerRNA UVLoopLayers_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void UVLoopLayers_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_UVLoopLayers_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = UVLoopLayers_rna_properties_get(iter);
}

void UVLoopLayers_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = UVLoopLayers_rna_properties_get(iter);
}

void UVLoopLayers_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int UVLoopLayers_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA UVLoopLayers_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

PointerRNA UVLoopLayers_active_get(PointerRNA *ptr)
{
	return rna_Mesh_uv_layer_active_get(ptr);
}

void UVLoopLayers_active_set(PointerRNA *ptr, PointerRNA value)
{
	rna_Mesh_uv_layer_active_set(ptr, value);
}

int UVLoopLayers_active_index_get(PointerRNA *ptr)
{
	return rna_Mesh_uv_layer_active_index_get(ptr);
}

void UVLoopLayers_active_index_set(PointerRNA *ptr, int value)
{
	rna_Mesh_uv_layer_active_index_set(ptr, value);
}

static PointerRNA TessfaceUVTextures_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void TessfaceUVTextures_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_TessfaceUVTextures_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = TessfaceUVTextures_rna_properties_get(iter);
}

void TessfaceUVTextures_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = TessfaceUVTextures_rna_properties_get(iter);
}

void TessfaceUVTextures_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int TessfaceUVTextures_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA TessfaceUVTextures_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

PointerRNA TessfaceUVTextures_active_get(PointerRNA *ptr)
{
	return rna_Mesh_tessface_uv_texture_active_get(ptr);
}

int TessfaceUVTextures_active_index_get(PointerRNA *ptr)
{
	return rna_Mesh_tessface_uv_texture_active_index_get(ptr);
}

void TessfaceUVTextures_active_index_set(PointerRNA *ptr, int value)
{
	rna_Mesh_tessface_uv_texture_active_index_set(ptr, value);
}

static PointerRNA UVTextures_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void UVTextures_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_UVTextures_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = UVTextures_rna_properties_get(iter);
}

void UVTextures_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = UVTextures_rna_properties_get(iter);
}

void UVTextures_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int UVTextures_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA UVTextures_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

PointerRNA UVTextures_active_get(PointerRNA *ptr)
{
	return rna_Mesh_uv_texture_active_get(ptr);
}

void UVTextures_active_set(PointerRNA *ptr, PointerRNA value)
{
	rna_Mesh_uv_texture_active_set(ptr, value);
}

int UVTextures_active_index_get(PointerRNA *ptr)
{
	return rna_Mesh_uv_texture_active_index_get(ptr);
}

void UVTextures_active_index_set(PointerRNA *ptr, int value)
{
	rna_Mesh_uv_texture_active_index_set(ptr, value);
}

static PointerRNA VertexColors_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void VertexColors_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_VertexColors_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = VertexColors_rna_properties_get(iter);
}

void VertexColors_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = VertexColors_rna_properties_get(iter);
}

void VertexColors_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int VertexColors_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA VertexColors_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

PointerRNA VertexColors_active_get(PointerRNA *ptr)
{
	return rna_Mesh_tessface_vertex_color_active_get(ptr);
}

int VertexColors_active_index_get(PointerRNA *ptr)
{
	return rna_Mesh_tessface_vertex_color_active_index_get(ptr);
}

void VertexColors_active_index_set(PointerRNA *ptr, int value)
{
	rna_Mesh_tessface_vertex_color_active_index_set(ptr, value);
}

static PointerRNA LoopColors_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void LoopColors_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_LoopColors_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = LoopColors_rna_properties_get(iter);
}

void LoopColors_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = LoopColors_rna_properties_get(iter);
}

void LoopColors_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int LoopColors_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA LoopColors_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

PointerRNA LoopColors_active_get(PointerRNA *ptr)
{
	return rna_Mesh_vertex_color_active_get(ptr);
}

void LoopColors_active_set(PointerRNA *ptr, PointerRNA value)
{
	rna_Mesh_vertex_color_active_set(ptr, value);
}

int LoopColors_active_index_get(PointerRNA *ptr)
{
	return rna_Mesh_vertex_color_active_index_get(ptr);
}

void LoopColors_active_index_set(PointerRNA *ptr, int value)
{
	rna_Mesh_vertex_color_active_index_set(ptr, value);
}

static PointerRNA VertexFloatProperties_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void VertexFloatProperties_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_VertexFloatProperties_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = VertexFloatProperties_rna_properties_get(iter);
}

void VertexFloatProperties_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = VertexFloatProperties_rna_properties_get(iter);
}

void VertexFloatProperties_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int VertexFloatProperties_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA VertexFloatProperties_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

static PointerRNA VertexIntProperties_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void VertexIntProperties_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_VertexIntProperties_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = VertexIntProperties_rna_properties_get(iter);
}

void VertexIntProperties_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = VertexIntProperties_rna_properties_get(iter);
}

void VertexIntProperties_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int VertexIntProperties_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA VertexIntProperties_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

static PointerRNA VertexStringProperties_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void VertexStringProperties_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_VertexStringProperties_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = VertexStringProperties_rna_properties_get(iter);
}

void VertexStringProperties_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = VertexStringProperties_rna_properties_get(iter);
}

void VertexStringProperties_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int VertexStringProperties_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA VertexStringProperties_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

static PointerRNA PolygonFloatProperties_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void PolygonFloatProperties_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_PolygonFloatProperties_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = PolygonFloatProperties_rna_properties_get(iter);
}

void PolygonFloatProperties_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = PolygonFloatProperties_rna_properties_get(iter);
}

void PolygonFloatProperties_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int PolygonFloatProperties_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA PolygonFloatProperties_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

static PointerRNA PolygonIntProperties_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void PolygonIntProperties_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_PolygonIntProperties_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = PolygonIntProperties_rna_properties_get(iter);
}

void PolygonIntProperties_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = PolygonIntProperties_rna_properties_get(iter);
}

void PolygonIntProperties_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int PolygonIntProperties_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA PolygonIntProperties_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

static PointerRNA PolygonStringProperties_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void PolygonStringProperties_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_PolygonStringProperties_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = PolygonStringProperties_rna_properties_get(iter);
}

void PolygonStringProperties_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = PolygonStringProperties_rna_properties_get(iter);
}

void PolygonStringProperties_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int PolygonStringProperties_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA PolygonStringProperties_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

static PointerRNA MeshSkinVertexLayer_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshSkinVertexLayer_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshSkinVertexLayer_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshSkinVertexLayer_rna_properties_get(iter);
}

void MeshSkinVertexLayer_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshSkinVertexLayer_rna_properties_get(iter);
}

void MeshSkinVertexLayer_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshSkinVertexLayer_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshSkinVertexLayer_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshSkinVertexLayer_name_get(PointerRNA *ptr, char *value)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	BLI_strncpy_utf8(value, data->name, 64);
}

int MeshSkinVertexLayer_name_length(PointerRNA *ptr)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	return strlen(data->name);
}

void MeshSkinVertexLayer_name_set(PointerRNA *ptr, const char *value)
{
	rna_MeshVertexLayer_name_set(ptr, value);
}

int MeshSkinVertexLayer_data_length(PointerRNA *ptr)
{
	return rna_MeshSkinVertexLayer_data_length(ptr);
}

static PointerRNA MeshSkinVertexLayer_data_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshSkinVertex, rna_iterator_array_get(iter));
}

void MeshSkinVertexLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshSkinVertexLayer_data;

	rna_MeshSkinVertexLayer_data_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshSkinVertexLayer_data_get(iter);
}

void MeshSkinVertexLayer_data_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshSkinVertexLayer_data_get(iter);
}

void MeshSkinVertexLayer_data_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshSkinVertexLayer_data_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	MeshSkinVertexLayer_data_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = MeshSkinVertexLayer_data_get(&iter);
	}

	MeshSkinVertexLayer_data_end(&iter);

	return found;
}

static PointerRNA MeshSkinVertex_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshSkinVertex_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshSkinVertex_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshSkinVertex_rna_properties_get(iter);
}

void MeshSkinVertex_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshSkinVertex_rna_properties_get(iter);
}

void MeshSkinVertex_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshSkinVertex_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshSkinVertex_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshSkinVertex_radius_get(PointerRNA *ptr, float values[2])
{
	MVertSkin *data = (MVertSkin *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 2; i++) {
		values[i] = (float)(((float *)data->radius)[i]);
	}
}

void MeshSkinVertex_radius_set(PointerRNA *ptr, const float values[2])
{
	MVertSkin *data = (MVertSkin *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 2; i++) {
		((float *)data->radius)[i] = CLAMPIS(values[i], 0.0f, FLT_MAX);
	}
}

int MeshSkinVertex_use_root_get(PointerRNA *ptr)
{
	MVertSkin *data = (MVertSkin *)(ptr->data);
	return (((data->flag) & 1) != 0);
}

void MeshSkinVertex_use_root_set(PointerRNA *ptr, int value)
{
	MVertSkin *data = (MVertSkin *)(ptr->data);
	if (value) data->flag |= 1;
	else data->flag &= ~1;
}

int MeshSkinVertex_use_loose_get(PointerRNA *ptr)
{
	MVertSkin *data = (MVertSkin *)(ptr->data);
	return (((data->flag) & 2) != 0);
}

void MeshSkinVertex_use_loose_set(PointerRNA *ptr, int value)
{
	MVertSkin *data = (MVertSkin *)(ptr->data);
	if (value) data->flag |= 2;
	else data->flag &= ~2;
}

static PointerRNA MeshPaintMaskLayer_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshPaintMaskLayer_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPaintMaskLayer_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPaintMaskLayer_rna_properties_get(iter);
}

void MeshPaintMaskLayer_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshPaintMaskLayer_rna_properties_get(iter);
}

void MeshPaintMaskLayer_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshPaintMaskLayer_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshPaintMaskLayer_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

int MeshPaintMaskLayer_data_length(PointerRNA *ptr)
{
	return rna_MeshPaintMaskLayer_data_length(ptr);
}

static PointerRNA MeshPaintMaskLayer_data_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshPaintMaskProperty, rna_iterator_array_get(iter));
}

void MeshPaintMaskLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPaintMaskLayer_data;

	rna_MeshPaintMaskLayer_data_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPaintMaskLayer_data_get(iter);
}

void MeshPaintMaskLayer_data_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshPaintMaskLayer_data_get(iter);
}

void MeshPaintMaskLayer_data_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshPaintMaskLayer_data_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	MeshPaintMaskLayer_data_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = MeshPaintMaskLayer_data_get(&iter);
	}

	MeshPaintMaskLayer_data_end(&iter);

	return found;
}

static PointerRNA MeshPaintMaskProperty_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshPaintMaskProperty_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPaintMaskProperty_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPaintMaskProperty_rna_properties_get(iter);
}

void MeshPaintMaskProperty_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshPaintMaskProperty_rna_properties_get(iter);
}

void MeshPaintMaskProperty_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshPaintMaskProperty_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshPaintMaskProperty_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

float MeshPaintMaskProperty_value_get(PointerRNA *ptr)
{
	MFloatProperty *data = (MFloatProperty *)(ptr->data);
	return (float)(data->f);
}

void MeshPaintMaskProperty_value_set(PointerRNA *ptr, float value)
{
	MFloatProperty *data = (MFloatProperty *)(ptr->data);
	data->f = value;
}

static PointerRNA MeshVertex_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshVertex_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshVertex_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshVertex_rna_properties_get(iter);
}

void MeshVertex_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshVertex_rna_properties_get(iter);
}

void MeshVertex_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshVertex_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshVertex_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshVertex_co_get(PointerRNA *ptr, float values[3])
{
	MVert *data = (MVert *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 3; i++) {
		values[i] = (float)(((float *)data->co)[i]);
	}
}

void MeshVertex_co_set(PointerRNA *ptr, const float values[3])
{
	MVert *data = (MVert *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 3; i++) {
		((float *)data->co)[i] = values[i];
	}
}

void MeshVertex_normal_get(PointerRNA *ptr, float values[3])
{
	rna_MeshVertex_normal_get(ptr, values);
}

void MeshVertex_normal_set(PointerRNA *ptr, const float values[3])
{
	rna_MeshVertex_normal_set(ptr, values);
}

int MeshVertex_select_get(PointerRNA *ptr)
{
	MVert *data = (MVert *)(ptr->data);
	return (((data->flag) & 1) != 0);
}

void MeshVertex_select_set(PointerRNA *ptr, int value)
{
	MVert *data = (MVert *)(ptr->data);
	if (value) data->flag |= 1;
	else data->flag &= ~1;
}

int MeshVertex_hide_get(PointerRNA *ptr)
{
	MVert *data = (MVert *)(ptr->data);
	return (((data->flag) & 16) != 0);
}

void MeshVertex_hide_set(PointerRNA *ptr, int value)
{
	MVert *data = (MVert *)(ptr->data);
	if (value) data->flag |= 16;
	else data->flag &= ~16;
}

float MeshVertex_bevel_weight_get(PointerRNA *ptr)
{
	return rna_MeshVertex_bevel_weight_get(ptr);
}

void MeshVertex_bevel_weight_set(PointerRNA *ptr, float value)
{
	rna_MeshVertex_bevel_weight_set(ptr, value);
}

static PointerRNA MeshVertex_groups_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_VertexGroupElement, rna_iterator_array_get(iter));
}

void MeshVertex_groups_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshVertex_groups;

	rna_MeshVertex_groups_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshVertex_groups_get(iter);
}

void MeshVertex_groups_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshVertex_groups_get(iter);
}

void MeshVertex_groups_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshVertex_index_get(PointerRNA *ptr)
{
	return rna_MeshVertex_index_get(ptr);
}

void MeshVertex_undeformed_co_get(PointerRNA *ptr, float values[3])
{
	rna_MeshVertex_undeformed_co_get(ptr, values);
}

static PointerRNA VertexGroupElement_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void VertexGroupElement_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_VertexGroupElement_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = VertexGroupElement_rna_properties_get(iter);
}

void VertexGroupElement_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = VertexGroupElement_rna_properties_get(iter);
}

void VertexGroupElement_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int VertexGroupElement_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA VertexGroupElement_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

int VertexGroupElement_group_get(PointerRNA *ptr)
{
	MDeformWeight *data = (MDeformWeight *)(ptr->data);
	return (int)(data->def_nr);
}

float VertexGroupElement_weight_get(PointerRNA *ptr)
{
	MDeformWeight *data = (MDeformWeight *)(ptr->data);
	return (float)(data->weight);
}

void VertexGroupElement_weight_set(PointerRNA *ptr, float value)
{
	MDeformWeight *data = (MDeformWeight *)(ptr->data);
	data->weight = CLAMPIS(value, 0.0f, 1.0f);
}

static PointerRNA MeshEdge_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshEdge_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshEdge_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshEdge_rna_properties_get(iter);
}

void MeshEdge_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshEdge_rna_properties_get(iter);
}

void MeshEdge_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshEdge_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshEdge_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshEdge_vertices_get(PointerRNA *ptr, int values[2])
{
	MEdge *data = (MEdge *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 2; i++) {
		values[i] = (int)((&data->v1)[i]);
	}
}

void MeshEdge_vertices_set(PointerRNA *ptr, const int values[2])
{
	MEdge *data = (MEdge *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 2; i++) {
		(&data->v1)[i] = CLAMPIS(values[i], 0, INT_MAX);
	}
}

float MeshEdge_crease_get(PointerRNA *ptr)
{
	return rna_MEdge_crease_get(ptr);
}

void MeshEdge_crease_set(PointerRNA *ptr, float value)
{
	rna_MEdge_crease_set(ptr, value);
}

float MeshEdge_bevel_weight_get(PointerRNA *ptr)
{
	return rna_MEdge_bevel_weight_get(ptr);
}

void MeshEdge_bevel_weight_set(PointerRNA *ptr, float value)
{
	rna_MEdge_bevel_weight_set(ptr, value);
}

int MeshEdge_select_get(PointerRNA *ptr)
{
	MEdge *data = (MEdge *)(ptr->data);
	return (((data->flag) & 1) != 0);
}

void MeshEdge_select_set(PointerRNA *ptr, int value)
{
	MEdge *data = (MEdge *)(ptr->data);
	if (value) data->flag |= 1;
	else data->flag &= ~1;
}

int MeshEdge_hide_get(PointerRNA *ptr)
{
	MEdge *data = (MEdge *)(ptr->data);
	return (((data->flag) & 16) != 0);
}

void MeshEdge_hide_set(PointerRNA *ptr, int value)
{
	MEdge *data = (MEdge *)(ptr->data);
	if (value) data->flag |= 16;
	else data->flag &= ~16;
}

int MeshEdge_use_seam_get(PointerRNA *ptr)
{
	MEdge *data = (MEdge *)(ptr->data);
	return (((data->flag) & 4) != 0);
}

void MeshEdge_use_seam_set(PointerRNA *ptr, int value)
{
	MEdge *data = (MEdge *)(ptr->data);
	if (value) data->flag |= 4;
	else data->flag &= ~4;
}

int MeshEdge_use_edge_sharp_get(PointerRNA *ptr)
{
	MEdge *data = (MEdge *)(ptr->data);
	return (((data->flag) & 512) != 0);
}

void MeshEdge_use_edge_sharp_set(PointerRNA *ptr, int value)
{
	MEdge *data = (MEdge *)(ptr->data);
	if (value) data->flag |= 512;
	else data->flag &= ~512;
}

int MeshEdge_is_loose_get(PointerRNA *ptr)
{
	MEdge *data = (MEdge *)(ptr->data);
	return (((data->flag) & 128) != 0);
}

void MeshEdge_is_loose_set(PointerRNA *ptr, int value)
{
	MEdge *data = (MEdge *)(ptr->data);
	if (value) data->flag |= 128;
	else data->flag &= ~128;
}

int MeshEdge_use_freestyle_mark_get(PointerRNA *ptr)
{
	return rna_MEdge_freestyle_edge_mark_get(ptr);
}

void MeshEdge_use_freestyle_mark_set(PointerRNA *ptr, int value)
{
	rna_MEdge_freestyle_edge_mark_set(ptr, value);
}

int MeshEdge_index_get(PointerRNA *ptr)
{
	return rna_MeshEdge_index_get(ptr);
}

static PointerRNA MeshTessFace_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshTessFace_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshTessFace_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshTessFace_rna_properties_get(iter);
}

void MeshTessFace_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshTessFace_rna_properties_get(iter);
}

void MeshTessFace_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshTessFace_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshTessFace_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshTessFace_vertices_get(PointerRNA *ptr, int values[])
{
	rna_MeshTessFace_verts_get(ptr, values);
}

void MeshTessFace_vertices_set(PointerRNA *ptr, const int values[])
{
	rna_MeshTessFace_verts_set(ptr, values);
}

void MeshTessFace_vertices_raw_get(PointerRNA *ptr, int values[4])
{
	MFace *data = (MFace *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 4; i++) {
		values[i] = (int)((&data->v1)[i]);
	}
}

void MeshTessFace_vertices_raw_set(PointerRNA *ptr, const int values[4])
{
	MFace *data = (MFace *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 4; i++) {
		(&data->v1)[i] = CLAMPIS(values[i], 0, INT_MAX);
	}
}

int MeshTessFace_material_index_get(PointerRNA *ptr)
{
	MFace *data = (MFace *)(ptr->data);
	return (int)(data->mat_nr);
}

void MeshTessFace_material_index_set(PointerRNA *ptr, int value)
{
	MFace *data = (MFace *)(ptr->data);
	data->mat_nr = CLAMPIS(value, 0, 32767);
}

int MeshTessFace_select_get(PointerRNA *ptr)
{
	MFace *data = (MFace *)(ptr->data);
	return (((data->flag) & 2) != 0);
}

void MeshTessFace_select_set(PointerRNA *ptr, int value)
{
	MFace *data = (MFace *)(ptr->data);
	if (value) data->flag |= 2;
	else data->flag &= ~2;
}

int MeshTessFace_hide_get(PointerRNA *ptr)
{
	MFace *data = (MFace *)(ptr->data);
	return (((data->flag) & 16) != 0);
}

void MeshTessFace_hide_set(PointerRNA *ptr, int value)
{
	MFace *data = (MFace *)(ptr->data);
	if (value) data->flag |= 16;
	else data->flag &= ~16;
}

int MeshTessFace_use_smooth_get(PointerRNA *ptr)
{
	MFace *data = (MFace *)(ptr->data);
	return (((data->flag) & 1) != 0);
}

void MeshTessFace_use_smooth_set(PointerRNA *ptr, int value)
{
	MFace *data = (MFace *)(ptr->data);
	if (value) data->flag |= 1;
	else data->flag &= ~1;
}

void MeshTessFace_normal_get(PointerRNA *ptr, float values[3])
{
	rna_MeshTessFace_normal_get(ptr, values);
}

void MeshTessFace_split_normals_get(PointerRNA *ptr, float values[12])
{
	rna_MeshTessFace_split_normals_get(ptr, values);
}

float MeshTessFace_area_get(PointerRNA *ptr)
{
	return rna_MeshTessFace_area_get(ptr);
}

int MeshTessFace_index_get(PointerRNA *ptr)
{
	return rna_MeshTessFace_index_get(ptr);
}

static PointerRNA MeshLoop_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshLoop_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshLoop_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshLoop_rna_properties_get(iter);
}

void MeshLoop_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshLoop_rna_properties_get(iter);
}

void MeshLoop_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshLoop_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshLoop_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

int MeshLoop_vertex_index_get(PointerRNA *ptr)
{
	MLoop *data = (MLoop *)(ptr->data);
	return (int)(data->v);
}

void MeshLoop_vertex_index_set(PointerRNA *ptr, int value)
{
	MLoop *data = (MLoop *)(ptr->data);
	data->v = CLAMPIS(value, 0, INT_MAX);
}

int MeshLoop_edge_index_get(PointerRNA *ptr)
{
	MLoop *data = (MLoop *)(ptr->data);
	return (int)(data->e);
}

void MeshLoop_edge_index_set(PointerRNA *ptr, int value)
{
	MLoop *data = (MLoop *)(ptr->data);
	data->e = CLAMPIS(value, 0, INT_MAX);
}

int MeshLoop_index_get(PointerRNA *ptr)
{
	return rna_MeshLoop_index_get(ptr);
}

void MeshLoop_normal_get(PointerRNA *ptr, float values[3])
{
	rna_MeshLoop_normal_get(ptr, values);
}

void MeshLoop_normal_set(PointerRNA *ptr, const float values[3])
{
	rna_MeshLoop_normal_set(ptr, values);
}

void MeshLoop_tangent_get(PointerRNA *ptr, float values[3])
{
	rna_MeshLoop_tangent_get(ptr, values);
}

float MeshLoop_bitangent_sign_get(PointerRNA *ptr)
{
	return rna_MeshLoop_bitangent_sign_get(ptr);
}

void MeshLoop_bitangent_get(PointerRNA *ptr, float values[3])
{
	rna_MeshLoop_bitangent_get(ptr, values);
}

static PointerRNA MeshPolygon_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshPolygon_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPolygon_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPolygon_rna_properties_get(iter);
}

void MeshPolygon_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshPolygon_rna_properties_get(iter);
}

void MeshPolygon_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshPolygon_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshPolygon_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshPolygon_vertices_get(PointerRNA *ptr, int values[])
{
	rna_MeshPoly_vertices_get(ptr, values);
}

void MeshPolygon_vertices_set(PointerRNA *ptr, const int values[])
{
	rna_MeshPoly_vertices_set(ptr, values);
}

int MeshPolygon_loop_start_get(PointerRNA *ptr)
{
	MPoly *data = (MPoly *)(ptr->data);
	return (int)(data->loopstart);
}

void MeshPolygon_loop_start_set(PointerRNA *ptr, int value)
{
	MPoly *data = (MPoly *)(ptr->data);
	data->loopstart = CLAMPIS(value, 0, INT_MAX);
}

int MeshPolygon_loop_total_get(PointerRNA *ptr)
{
	MPoly *data = (MPoly *)(ptr->data);
	return (int)(data->totloop);
}

void MeshPolygon_loop_total_set(PointerRNA *ptr, int value)
{
	MPoly *data = (MPoly *)(ptr->data);
	data->totloop = CLAMPIS(value, 0, INT_MAX);
}

int MeshPolygon_material_index_get(PointerRNA *ptr)
{
	MPoly *data = (MPoly *)(ptr->data);
	return (int)(data->mat_nr);
}

void MeshPolygon_material_index_set(PointerRNA *ptr, int value)
{
	MPoly *data = (MPoly *)(ptr->data);
	data->mat_nr = CLAMPIS(value, 0, 32767);
}

int MeshPolygon_select_get(PointerRNA *ptr)
{
	MPoly *data = (MPoly *)(ptr->data);
	return (((data->flag) & 2) != 0);
}

void MeshPolygon_select_set(PointerRNA *ptr, int value)
{
	MPoly *data = (MPoly *)(ptr->data);
	if (value) data->flag |= 2;
	else data->flag &= ~2;
}

int MeshPolygon_hide_get(PointerRNA *ptr)
{
	MPoly *data = (MPoly *)(ptr->data);
	return (((data->flag) & 16) != 0);
}

void MeshPolygon_hide_set(PointerRNA *ptr, int value)
{
	MPoly *data = (MPoly *)(ptr->data);
	if (value) data->flag |= 16;
	else data->flag &= ~16;
}

int MeshPolygon_use_smooth_get(PointerRNA *ptr)
{
	MPoly *data = (MPoly *)(ptr->data);
	return (((data->flag) & 1) != 0);
}

void MeshPolygon_use_smooth_set(PointerRNA *ptr, int value)
{
	MPoly *data = (MPoly *)(ptr->data);
	if (value) data->flag |= 1;
	else data->flag &= ~1;
}

int MeshPolygon_use_freestyle_mark_get(PointerRNA *ptr)
{
	return rna_MPoly_freestyle_face_mark_get(ptr);
}

void MeshPolygon_use_freestyle_mark_set(PointerRNA *ptr, int value)
{
	rna_MPoly_freestyle_face_mark_set(ptr, value);
}

void MeshPolygon_normal_get(PointerRNA *ptr, float values[3])
{
	rna_MeshPolygon_normal_get(ptr, values);
}

void MeshPolygon_center_get(PointerRNA *ptr, float values[3])
{
	rna_MeshPolygon_center_get(ptr, values);
}

float MeshPolygon_area_get(PointerRNA *ptr)
{
	return rna_MeshPolygon_area_get(ptr);
}

int MeshPolygon_index_get(PointerRNA *ptr)
{
	return rna_MeshPolygon_index_get(ptr);
}

static PointerRNA MeshUVLoopLayer_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshUVLoopLayer_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshUVLoopLayer_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshUVLoopLayer_rna_properties_get(iter);
}

void MeshUVLoopLayer_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshUVLoopLayer_rna_properties_get(iter);
}

void MeshUVLoopLayer_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshUVLoopLayer_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshUVLoopLayer_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

int MeshUVLoopLayer_data_length(PointerRNA *ptr)
{
	return rna_MeshUVLoopLayer_data_length(ptr);
}

static PointerRNA MeshUVLoopLayer_data_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshUVLoop, rna_iterator_array_get(iter));
}

void MeshUVLoopLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshUVLoopLayer_data;

	rna_MeshUVLoopLayer_data_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshUVLoopLayer_data_get(iter);
}

void MeshUVLoopLayer_data_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshUVLoopLayer_data_get(iter);
}

void MeshUVLoopLayer_data_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshUVLoopLayer_data_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	MeshUVLoopLayer_data_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = MeshUVLoopLayer_data_get(&iter);
	}

	MeshUVLoopLayer_data_end(&iter);

	return found;
}

void MeshUVLoopLayer_name_get(PointerRNA *ptr, char *value)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	BLI_strncpy_utf8(value, data->name, 64);
}

int MeshUVLoopLayer_name_length(PointerRNA *ptr)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	return strlen(data->name);
}

void MeshUVLoopLayer_name_set(PointerRNA *ptr, const char *value)
{
	rna_MeshUVLayer_name_set(ptr, value);
}

static PointerRNA MeshUVLoop_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshUVLoop_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshUVLoop_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshUVLoop_rna_properties_get(iter);
}

void MeshUVLoop_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshUVLoop_rna_properties_get(iter);
}

void MeshUVLoop_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshUVLoop_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshUVLoop_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshUVLoop_uv_get(PointerRNA *ptr, float values[2])
{
	MLoopUV *data = (MLoopUV *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 2; i++) {
		values[i] = (float)(((float *)data->uv)[i]);
	}
}

void MeshUVLoop_uv_set(PointerRNA *ptr, const float values[2])
{
	MLoopUV *data = (MLoopUV *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 2; i++) {
		((float *)data->uv)[i] = values[i];
	}
}

int MeshUVLoop_pin_uv_get(PointerRNA *ptr)
{
	MLoopUV *data = (MLoopUV *)(ptr->data);
	return (((data->flag) & 4) != 0);
}

void MeshUVLoop_pin_uv_set(PointerRNA *ptr, int value)
{
	MLoopUV *data = (MLoopUV *)(ptr->data);
	if (value) data->flag |= 4;
	else data->flag &= ~4;
}

int MeshUVLoop_select_get(PointerRNA *ptr)
{
	MLoopUV *data = (MLoopUV *)(ptr->data);
	return (((data->flag) & 2) != 0);
}

void MeshUVLoop_select_set(PointerRNA *ptr, int value)
{
	MLoopUV *data = (MLoopUV *)(ptr->data);
	if (value) data->flag |= 2;
	else data->flag &= ~2;
}

int MeshUVLoop_select_edge_get(PointerRNA *ptr)
{
	MLoopUV *data = (MLoopUV *)(ptr->data);
	return (((data->flag) & 1) != 0);
}

void MeshUVLoop_select_edge_set(PointerRNA *ptr, int value)
{
	MLoopUV *data = (MLoopUV *)(ptr->data);
	if (value) data->flag |= 1;
	else data->flag &= ~1;
}

static PointerRNA MeshTextureFaceLayer_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshTextureFaceLayer_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshTextureFaceLayer_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshTextureFaceLayer_rna_properties_get(iter);
}

void MeshTextureFaceLayer_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshTextureFaceLayer_rna_properties_get(iter);
}

void MeshTextureFaceLayer_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshTextureFaceLayer_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshTextureFaceLayer_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshTextureFaceLayer_name_get(PointerRNA *ptr, char *value)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	BLI_strncpy_utf8(value, data->name, 64);
}

int MeshTextureFaceLayer_name_length(PointerRNA *ptr)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	return strlen(data->name);
}

void MeshTextureFaceLayer_name_set(PointerRNA *ptr, const char *value)
{
	rna_MeshUVLayer_name_set(ptr, value);
}

int MeshTextureFaceLayer_active_get(PointerRNA *ptr)
{
	return rna_MeshTextureFaceLayer_active_get(ptr);
}

void MeshTextureFaceLayer_active_set(PointerRNA *ptr, int value)
{
	rna_MeshTextureFaceLayer_active_set(ptr, value);
}

int MeshTextureFaceLayer_active_render_get(PointerRNA *ptr)
{
	return rna_MeshTextureFaceLayer_active_render_get(ptr);
}

void MeshTextureFaceLayer_active_render_set(PointerRNA *ptr, int value)
{
	rna_MeshTextureFaceLayer_active_render_set(ptr, value);
}

int MeshTextureFaceLayer_active_clone_get(PointerRNA *ptr)
{
	return rna_MeshTextureFaceLayer_clone_get(ptr);
}

void MeshTextureFaceLayer_active_clone_set(PointerRNA *ptr, int value)
{
	rna_MeshTextureFaceLayer_clone_set(ptr, value);
}

int MeshTextureFaceLayer_data_length(PointerRNA *ptr)
{
	return rna_MeshTextureFaceLayer_data_length(ptr);
}

static PointerRNA MeshTextureFaceLayer_data_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshTextureFace, rna_iterator_array_get(iter));
}

void MeshTextureFaceLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshTextureFaceLayer_data;

	rna_MeshTextureFaceLayer_data_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshTextureFaceLayer_data_get(iter);
}

void MeshTextureFaceLayer_data_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshTextureFaceLayer_data_get(iter);
}

void MeshTextureFaceLayer_data_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshTextureFaceLayer_data_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	MeshTextureFaceLayer_data_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = MeshTextureFaceLayer_data_get(&iter);
	}

	MeshTextureFaceLayer_data_end(&iter);

	return found;
}

static PointerRNA MeshTextureFace_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshTextureFace_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshTextureFace_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshTextureFace_rna_properties_get(iter);
}

void MeshTextureFace_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshTextureFace_rna_properties_get(iter);
}

void MeshTextureFace_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshTextureFace_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshTextureFace_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

PointerRNA MeshTextureFace_image_get(PointerRNA *ptr)
{
	MTFace *data = (MTFace *)(ptr->data);
	return rna_pointer_inherit_refine(ptr, &RNA_Image, data->tpage);
}

void MeshTextureFace_image_set(PointerRNA *ptr, PointerRNA value)
{
	rna_TextureFace_image_set(ptr, value);
}

void MeshTextureFace_uv1_get(PointerRNA *ptr, float values[2])
{
	rna_MeshTextureFace_uv1_get(ptr, values);
}

void MeshTextureFace_uv1_set(PointerRNA *ptr, const float values[2])
{
	rna_MeshTextureFace_uv1_set(ptr, values);
}

void MeshTextureFace_uv2_get(PointerRNA *ptr, float values[2])
{
	rna_MeshTextureFace_uv2_get(ptr, values);
}

void MeshTextureFace_uv2_set(PointerRNA *ptr, const float values[2])
{
	rna_MeshTextureFace_uv2_set(ptr, values);
}

void MeshTextureFace_uv3_get(PointerRNA *ptr, float values[2])
{
	rna_MeshTextureFace_uv3_get(ptr, values);
}

void MeshTextureFace_uv3_set(PointerRNA *ptr, const float values[2])
{
	rna_MeshTextureFace_uv3_set(ptr, values);
}

void MeshTextureFace_uv4_get(PointerRNA *ptr, float values[2])
{
	rna_MeshTextureFace_uv4_get(ptr, values);
}

void MeshTextureFace_uv4_set(PointerRNA *ptr, const float values[2])
{
	rna_MeshTextureFace_uv4_set(ptr, values);
}

void MeshTextureFace_uv_get(PointerRNA *ptr, float values[])
{
	rna_MeshTextureFace_uv_get(ptr, values);
}

void MeshTextureFace_uv_set(PointerRNA *ptr, const float values[])
{
	rna_MeshTextureFace_uv_set(ptr, values);
}

void MeshTextureFace_uv_raw_get(PointerRNA *ptr, float values[8])
{
	MTFace *data = (MTFace *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 8; i++) {
		values[i] = (float)(((float *)data->uv)[i]);
	}
}

void MeshTextureFace_uv_raw_set(PointerRNA *ptr, const float values[8])
{
	MTFace *data = (MTFace *)(ptr->data);
	unsigned int i;

	for (i = 0; i < 8; i++) {
		((float *)data->uv)[i] = values[i];
	}
}

static PointerRNA MeshTexturePolyLayer_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshTexturePolyLayer_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshTexturePolyLayer_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshTexturePolyLayer_rna_properties_get(iter);
}

void MeshTexturePolyLayer_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshTexturePolyLayer_rna_properties_get(iter);
}

void MeshTexturePolyLayer_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshTexturePolyLayer_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshTexturePolyLayer_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshTexturePolyLayer_name_get(PointerRNA *ptr, char *value)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	BLI_strncpy_utf8(value, data->name, 64);
}

int MeshTexturePolyLayer_name_length(PointerRNA *ptr)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	return strlen(data->name);
}

void MeshTexturePolyLayer_name_set(PointerRNA *ptr, const char *value)
{
	rna_MeshUVLayer_name_set(ptr, value);
}

int MeshTexturePolyLayer_active_get(PointerRNA *ptr)
{
	return rna_MeshTexturePolyLayer_active_get(ptr);
}

void MeshTexturePolyLayer_active_set(PointerRNA *ptr, int value)
{
	rna_MeshTexturePolyLayer_active_set(ptr, value);
}

int MeshTexturePolyLayer_active_render_get(PointerRNA *ptr)
{
	return rna_MeshTexturePolyLayer_active_render_get(ptr);
}

void MeshTexturePolyLayer_active_render_set(PointerRNA *ptr, int value)
{
	rna_MeshTexturePolyLayer_active_render_set(ptr, value);
}

int MeshTexturePolyLayer_active_clone_get(PointerRNA *ptr)
{
	return rna_MeshTexturePolyLayer_clone_get(ptr);
}

void MeshTexturePolyLayer_active_clone_set(PointerRNA *ptr, int value)
{
	rna_MeshTexturePolyLayer_clone_set(ptr, value);
}

int MeshTexturePolyLayer_data_length(PointerRNA *ptr)
{
	return rna_MeshTexturePolyLayer_data_length(ptr);
}

static PointerRNA MeshTexturePolyLayer_data_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshTexturePoly, rna_iterator_array_get(iter));
}

void MeshTexturePolyLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshTexturePolyLayer_data;

	rna_MeshTexturePolyLayer_data_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshTexturePolyLayer_data_get(iter);
}

void MeshTexturePolyLayer_data_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshTexturePolyLayer_data_get(iter);
}

void MeshTexturePolyLayer_data_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshTexturePolyLayer_data_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	MeshTexturePolyLayer_data_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = MeshTexturePolyLayer_data_get(&iter);
	}

	MeshTexturePolyLayer_data_end(&iter);

	return found;
}

static PointerRNA MeshTexturePoly_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshTexturePoly_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshTexturePoly_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshTexturePoly_rna_properties_get(iter);
}

void MeshTexturePoly_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshTexturePoly_rna_properties_get(iter);
}

void MeshTexturePoly_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshTexturePoly_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshTexturePoly_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

PointerRNA MeshTexturePoly_image_get(PointerRNA *ptr)
{
	MTexPoly *data = (MTexPoly *)(ptr->data);
	return rna_pointer_inherit_refine(ptr, &RNA_Image, data->tpage);
}

void MeshTexturePoly_image_set(PointerRNA *ptr, PointerRNA value)
{
	rna_TexturePoly_image_set(ptr, value);
}

static PointerRNA MeshColorLayer_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshColorLayer_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshColorLayer_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshColorLayer_rna_properties_get(iter);
}

void MeshColorLayer_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshColorLayer_rna_properties_get(iter);
}

void MeshColorLayer_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshColorLayer_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshColorLayer_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshColorLayer_name_get(PointerRNA *ptr, char *value)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	BLI_strncpy_utf8(value, data->name, 64);
}

int MeshColorLayer_name_length(PointerRNA *ptr)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	return strlen(data->name);
}

void MeshColorLayer_name_set(PointerRNA *ptr, const char *value)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	BLI_strncpy_utf8(data->name, value, 64);
}

int MeshColorLayer_active_get(PointerRNA *ptr)
{
	return rna_MeshColorLayer_active_get(ptr);
}

void MeshColorLayer_active_set(PointerRNA *ptr, int value)
{
	rna_MeshColorLayer_active_set(ptr, value);
}

int MeshColorLayer_active_render_get(PointerRNA *ptr)
{
	return rna_MeshColorLayer_active_render_get(ptr);
}

void MeshColorLayer_active_render_set(PointerRNA *ptr, int value)
{
	rna_MeshColorLayer_active_render_set(ptr, value);
}

int MeshColorLayer_data_length(PointerRNA *ptr)
{
	return rna_MeshColorLayer_data_length(ptr);
}

static PointerRNA MeshColorLayer_data_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshColor, rna_iterator_array_get(iter));
}

void MeshColorLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshColorLayer_data;

	rna_MeshColorLayer_data_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshColorLayer_data_get(iter);
}

void MeshColorLayer_data_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshColorLayer_data_get(iter);
}

void MeshColorLayer_data_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshColorLayer_data_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	MeshColorLayer_data_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = MeshColorLayer_data_get(&iter);
	}

	MeshColorLayer_data_end(&iter);

	return found;
}

static PointerRNA MeshColor_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshColor_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshColor_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshColor_rna_properties_get(iter);
}

void MeshColor_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshColor_rna_properties_get(iter);
}

void MeshColor_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshColor_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshColor_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshColor_color1_get(PointerRNA *ptr, float values[3])
{
	rna_MeshColor_color1_get(ptr, values);
}

void MeshColor_color1_set(PointerRNA *ptr, const float values[3])
{
	rna_MeshColor_color1_set(ptr, values);
}

void MeshColor_color2_get(PointerRNA *ptr, float values[3])
{
	rna_MeshColor_color2_get(ptr, values);
}

void MeshColor_color2_set(PointerRNA *ptr, const float values[3])
{
	rna_MeshColor_color2_set(ptr, values);
}

void MeshColor_color3_get(PointerRNA *ptr, float values[3])
{
	rna_MeshColor_color3_get(ptr, values);
}

void MeshColor_color3_set(PointerRNA *ptr, const float values[3])
{
	rna_MeshColor_color3_set(ptr, values);
}

void MeshColor_color4_get(PointerRNA *ptr, float values[3])
{
	rna_MeshColor_color4_get(ptr, values);
}

void MeshColor_color4_set(PointerRNA *ptr, const float values[3])
{
	rna_MeshColor_color4_set(ptr, values);
}

static PointerRNA MeshLoopColorLayer_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshLoopColorLayer_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshLoopColorLayer_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshLoopColorLayer_rna_properties_get(iter);
}

void MeshLoopColorLayer_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshLoopColorLayer_rna_properties_get(iter);
}

void MeshLoopColorLayer_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshLoopColorLayer_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshLoopColorLayer_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshLoopColorLayer_name_get(PointerRNA *ptr, char *value)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	BLI_strncpy_utf8(value, data->name, 64);
}

int MeshLoopColorLayer_name_length(PointerRNA *ptr)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	return strlen(data->name);
}

void MeshLoopColorLayer_name_set(PointerRNA *ptr, const char *value)
{
	rna_MeshLoopLayer_name_set(ptr, value);
}

int MeshLoopColorLayer_active_get(PointerRNA *ptr)
{
	return rna_MeshLoopColorLayer_active_get(ptr);
}

void MeshLoopColorLayer_active_set(PointerRNA *ptr, int value)
{
	rna_MeshLoopColorLayer_active_set(ptr, value);
}

int MeshLoopColorLayer_active_render_get(PointerRNA *ptr)
{
	return rna_MeshLoopColorLayer_active_render_get(ptr);
}

void MeshLoopColorLayer_active_render_set(PointerRNA *ptr, int value)
{
	rna_MeshLoopColorLayer_active_render_set(ptr, value);
}

int MeshLoopColorLayer_data_length(PointerRNA *ptr)
{
	return rna_MeshLoopColorLayer_data_length(ptr);
}

static PointerRNA MeshLoopColorLayer_data_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshLoopColor, rna_iterator_array_get(iter));
}

void MeshLoopColorLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshLoopColorLayer_data;

	rna_MeshLoopColorLayer_data_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshLoopColorLayer_data_get(iter);
}

void MeshLoopColorLayer_data_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshLoopColorLayer_data_get(iter);
}

void MeshLoopColorLayer_data_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshLoopColorLayer_data_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	MeshLoopColorLayer_data_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = MeshLoopColorLayer_data_get(&iter);
	}

	MeshLoopColorLayer_data_end(&iter);

	return found;
}

static PointerRNA MeshLoopColor_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshLoopColor_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshLoopColor_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshLoopColor_rna_properties_get(iter);
}

void MeshLoopColor_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshLoopColor_rna_properties_get(iter);
}

void MeshLoopColor_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshLoopColor_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshLoopColor_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshLoopColor_color_get(PointerRNA *ptr, float values[3])
{
	rna_MeshLoopColor_color_get(ptr, values);
}

void MeshLoopColor_color_set(PointerRNA *ptr, const float values[3])
{
	rna_MeshLoopColor_color_set(ptr, values);
}

static PointerRNA MeshVertexFloatPropertyLayer_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshVertexFloatPropertyLayer_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshVertexFloatPropertyLayer_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshVertexFloatPropertyLayer_rna_properties_get(iter);
}

void MeshVertexFloatPropertyLayer_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshVertexFloatPropertyLayer_rna_properties_get(iter);
}

void MeshVertexFloatPropertyLayer_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshVertexFloatPropertyLayer_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshVertexFloatPropertyLayer_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshVertexFloatPropertyLayer_name_get(PointerRNA *ptr, char *value)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	BLI_strncpy_utf8(value, data->name, 64);
}

int MeshVertexFloatPropertyLayer_name_length(PointerRNA *ptr)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	return strlen(data->name);
}

void MeshVertexFloatPropertyLayer_name_set(PointerRNA *ptr, const char *value)
{
	rna_MeshAnyLayer_name_set(ptr, value);
}

int MeshVertexFloatPropertyLayer_data_length(PointerRNA *ptr)
{
	return rna_MeshVertexFloatPropertyLayer_data_length(ptr);
}

static PointerRNA MeshVertexFloatPropertyLayer_data_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshVertexFloatProperty, rna_iterator_array_get(iter));
}

void MeshVertexFloatPropertyLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshVertexFloatPropertyLayer_data;

	rna_MeshVertexFloatPropertyLayer_data_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshVertexFloatPropertyLayer_data_get(iter);
}

void MeshVertexFloatPropertyLayer_data_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshVertexFloatPropertyLayer_data_get(iter);
}

void MeshVertexFloatPropertyLayer_data_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshVertexFloatPropertyLayer_data_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	MeshVertexFloatPropertyLayer_data_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = MeshVertexFloatPropertyLayer_data_get(&iter);
	}

	MeshVertexFloatPropertyLayer_data_end(&iter);

	return found;
}

static PointerRNA MeshVertexFloatProperty_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshVertexFloatProperty_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshVertexFloatProperty_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshVertexFloatProperty_rna_properties_get(iter);
}

void MeshVertexFloatProperty_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshVertexFloatProperty_rna_properties_get(iter);
}

void MeshVertexFloatProperty_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshVertexFloatProperty_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshVertexFloatProperty_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

float MeshVertexFloatProperty_value_get(PointerRNA *ptr)
{
	MFloatProperty *data = (MFloatProperty *)(ptr->data);
	return (float)(data->f);
}

void MeshVertexFloatProperty_value_set(PointerRNA *ptr, float value)
{
	MFloatProperty *data = (MFloatProperty *)(ptr->data);
	data->f = value;
}

static PointerRNA MeshPolygonFloatPropertyLayer_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshPolygonFloatPropertyLayer_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPolygonFloatPropertyLayer_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPolygonFloatPropertyLayer_rna_properties_get(iter);
}

void MeshPolygonFloatPropertyLayer_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshPolygonFloatPropertyLayer_rna_properties_get(iter);
}

void MeshPolygonFloatPropertyLayer_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshPolygonFloatPropertyLayer_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshPolygonFloatPropertyLayer_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshPolygonFloatPropertyLayer_name_get(PointerRNA *ptr, char *value)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	BLI_strncpy_utf8(value, data->name, 64);
}

int MeshPolygonFloatPropertyLayer_name_length(PointerRNA *ptr)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	return strlen(data->name);
}

void MeshPolygonFloatPropertyLayer_name_set(PointerRNA *ptr, const char *value)
{
	rna_MeshAnyLayer_name_set(ptr, value);
}

int MeshPolygonFloatPropertyLayer_data_length(PointerRNA *ptr)
{
	return rna_MeshPolygonFloatPropertyLayer_data_length(ptr);
}

static PointerRNA MeshPolygonFloatPropertyLayer_data_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshPolygonFloatProperty, rna_iterator_array_get(iter));
}

void MeshPolygonFloatPropertyLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPolygonFloatPropertyLayer_data;

	rna_MeshPolygonFloatPropertyLayer_data_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPolygonFloatPropertyLayer_data_get(iter);
}

void MeshPolygonFloatPropertyLayer_data_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshPolygonFloatPropertyLayer_data_get(iter);
}

void MeshPolygonFloatPropertyLayer_data_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshPolygonFloatPropertyLayer_data_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	MeshPolygonFloatPropertyLayer_data_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = MeshPolygonFloatPropertyLayer_data_get(&iter);
	}

	MeshPolygonFloatPropertyLayer_data_end(&iter);

	return found;
}

static PointerRNA MeshPolygonFloatProperty_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshPolygonFloatProperty_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPolygonFloatProperty_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPolygonFloatProperty_rna_properties_get(iter);
}

void MeshPolygonFloatProperty_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshPolygonFloatProperty_rna_properties_get(iter);
}

void MeshPolygonFloatProperty_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshPolygonFloatProperty_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshPolygonFloatProperty_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

float MeshPolygonFloatProperty_value_get(PointerRNA *ptr)
{
	MFloatProperty *data = (MFloatProperty *)(ptr->data);
	return (float)(data->f);
}

void MeshPolygonFloatProperty_value_set(PointerRNA *ptr, float value)
{
	MFloatProperty *data = (MFloatProperty *)(ptr->data);
	data->f = value;
}

static PointerRNA MeshVertexIntPropertyLayer_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshVertexIntPropertyLayer_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshVertexIntPropertyLayer_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshVertexIntPropertyLayer_rna_properties_get(iter);
}

void MeshVertexIntPropertyLayer_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshVertexIntPropertyLayer_rna_properties_get(iter);
}

void MeshVertexIntPropertyLayer_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshVertexIntPropertyLayer_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshVertexIntPropertyLayer_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshVertexIntPropertyLayer_name_get(PointerRNA *ptr, char *value)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	BLI_strncpy_utf8(value, data->name, 64);
}

int MeshVertexIntPropertyLayer_name_length(PointerRNA *ptr)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	return strlen(data->name);
}

void MeshVertexIntPropertyLayer_name_set(PointerRNA *ptr, const char *value)
{
	rna_MeshAnyLayer_name_set(ptr, value);
}

int MeshVertexIntPropertyLayer_data_length(PointerRNA *ptr)
{
	return rna_MeshVertexIntPropertyLayer_data_length(ptr);
}

static PointerRNA MeshVertexIntPropertyLayer_data_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshVertexIntProperty, rna_iterator_array_get(iter));
}

void MeshVertexIntPropertyLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshVertexIntPropertyLayer_data;

	rna_MeshVertexIntPropertyLayer_data_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshVertexIntPropertyLayer_data_get(iter);
}

void MeshVertexIntPropertyLayer_data_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshVertexIntPropertyLayer_data_get(iter);
}

void MeshVertexIntPropertyLayer_data_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshVertexIntPropertyLayer_data_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	MeshVertexIntPropertyLayer_data_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = MeshVertexIntPropertyLayer_data_get(&iter);
	}

	MeshVertexIntPropertyLayer_data_end(&iter);

	return found;
}

static PointerRNA MeshVertexIntProperty_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshVertexIntProperty_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshVertexIntProperty_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshVertexIntProperty_rna_properties_get(iter);
}

void MeshVertexIntProperty_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshVertexIntProperty_rna_properties_get(iter);
}

void MeshVertexIntProperty_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshVertexIntProperty_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshVertexIntProperty_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

int MeshVertexIntProperty_value_get(PointerRNA *ptr)
{
	MIntProperty *data = (MIntProperty *)(ptr->data);
	return (int)(data->i);
}

void MeshVertexIntProperty_value_set(PointerRNA *ptr, int value)
{
	MIntProperty *data = (MIntProperty *)(ptr->data);
	data->i = value;
}

static PointerRNA MeshPolygonIntPropertyLayer_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshPolygonIntPropertyLayer_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPolygonIntPropertyLayer_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPolygonIntPropertyLayer_rna_properties_get(iter);
}

void MeshPolygonIntPropertyLayer_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshPolygonIntPropertyLayer_rna_properties_get(iter);
}

void MeshPolygonIntPropertyLayer_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshPolygonIntPropertyLayer_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshPolygonIntPropertyLayer_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshPolygonIntPropertyLayer_name_get(PointerRNA *ptr, char *value)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	BLI_strncpy_utf8(value, data->name, 64);
}

int MeshPolygonIntPropertyLayer_name_length(PointerRNA *ptr)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	return strlen(data->name);
}

void MeshPolygonIntPropertyLayer_name_set(PointerRNA *ptr, const char *value)
{
	rna_MeshAnyLayer_name_set(ptr, value);
}

int MeshPolygonIntPropertyLayer_data_length(PointerRNA *ptr)
{
	return rna_MeshPolygonIntPropertyLayer_data_length(ptr);
}

static PointerRNA MeshPolygonIntPropertyLayer_data_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshPolygonIntProperty, rna_iterator_array_get(iter));
}

void MeshPolygonIntPropertyLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPolygonIntPropertyLayer_data;

	rna_MeshPolygonIntPropertyLayer_data_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPolygonIntPropertyLayer_data_get(iter);
}

void MeshPolygonIntPropertyLayer_data_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshPolygonIntPropertyLayer_data_get(iter);
}

void MeshPolygonIntPropertyLayer_data_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshPolygonIntPropertyLayer_data_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	MeshPolygonIntPropertyLayer_data_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = MeshPolygonIntPropertyLayer_data_get(&iter);
	}

	MeshPolygonIntPropertyLayer_data_end(&iter);

	return found;
}

static PointerRNA MeshPolygonIntProperty_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshPolygonIntProperty_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPolygonIntProperty_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPolygonIntProperty_rna_properties_get(iter);
}

void MeshPolygonIntProperty_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshPolygonIntProperty_rna_properties_get(iter);
}

void MeshPolygonIntProperty_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshPolygonIntProperty_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshPolygonIntProperty_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

int MeshPolygonIntProperty_value_get(PointerRNA *ptr)
{
	MIntProperty *data = (MIntProperty *)(ptr->data);
	return (int)(data->i);
}

void MeshPolygonIntProperty_value_set(PointerRNA *ptr, int value)
{
	MIntProperty *data = (MIntProperty *)(ptr->data);
	data->i = value;
}

static PointerRNA MeshVertexStringPropertyLayer_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshVertexStringPropertyLayer_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshVertexStringPropertyLayer_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshVertexStringPropertyLayer_rna_properties_get(iter);
}

void MeshVertexStringPropertyLayer_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshVertexStringPropertyLayer_rna_properties_get(iter);
}

void MeshVertexStringPropertyLayer_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshVertexStringPropertyLayer_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshVertexStringPropertyLayer_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshVertexStringPropertyLayer_name_get(PointerRNA *ptr, char *value)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	BLI_strncpy_utf8(value, data->name, 64);
}

int MeshVertexStringPropertyLayer_name_length(PointerRNA *ptr)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	return strlen(data->name);
}

void MeshVertexStringPropertyLayer_name_set(PointerRNA *ptr, const char *value)
{
	rna_MeshAnyLayer_name_set(ptr, value);
}

int MeshVertexStringPropertyLayer_data_length(PointerRNA *ptr)
{
	return rna_MeshVertexStringPropertyLayer_data_length(ptr);
}

static PointerRNA MeshVertexStringPropertyLayer_data_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshVertexStringProperty, rna_iterator_array_get(iter));
}

void MeshVertexStringPropertyLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshVertexStringPropertyLayer_data;

	rna_MeshVertexStringPropertyLayer_data_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshVertexStringPropertyLayer_data_get(iter);
}

void MeshVertexStringPropertyLayer_data_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshVertexStringPropertyLayer_data_get(iter);
}

void MeshVertexStringPropertyLayer_data_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshVertexStringPropertyLayer_data_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	MeshVertexStringPropertyLayer_data_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = MeshVertexStringPropertyLayer_data_get(&iter);
	}

	MeshVertexStringPropertyLayer_data_end(&iter);

	return found;
}

static PointerRNA MeshVertexStringProperty_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshVertexStringProperty_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshVertexStringProperty_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshVertexStringProperty_rna_properties_get(iter);
}

void MeshVertexStringProperty_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshVertexStringProperty_rna_properties_get(iter);
}

void MeshVertexStringProperty_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshVertexStringProperty_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshVertexStringProperty_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshVertexStringProperty_value_get(PointerRNA *ptr, char *value)
{
	rna_MeshStringProperty_s_get(ptr, value);
}

int MeshVertexStringProperty_value_length(PointerRNA *ptr)
{
	return rna_MeshStringProperty_s_length(ptr);
}

void MeshVertexStringProperty_value_set(PointerRNA *ptr, const char *value)
{
	rna_MeshStringProperty_s_set(ptr, value);
}

static PointerRNA MeshPolygonStringPropertyLayer_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshPolygonStringPropertyLayer_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPolygonStringPropertyLayer_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPolygonStringPropertyLayer_rna_properties_get(iter);
}

void MeshPolygonStringPropertyLayer_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshPolygonStringPropertyLayer_rna_properties_get(iter);
}

void MeshPolygonStringPropertyLayer_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshPolygonStringPropertyLayer_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshPolygonStringPropertyLayer_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshPolygonStringPropertyLayer_name_get(PointerRNA *ptr, char *value)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	BLI_strncpy_utf8(value, data->name, 64);
}

int MeshPolygonStringPropertyLayer_name_length(PointerRNA *ptr)
{
	CustomDataLayer *data = (CustomDataLayer *)(ptr->data);
	return strlen(data->name);
}

void MeshPolygonStringPropertyLayer_name_set(PointerRNA *ptr, const char *value)
{
	rna_MeshAnyLayer_name_set(ptr, value);
}

int MeshPolygonStringPropertyLayer_data_length(PointerRNA *ptr)
{
	return rna_MeshPolygonStringPropertyLayer_data_length(ptr);
}

static PointerRNA MeshPolygonStringPropertyLayer_data_get(CollectionPropertyIterator *iter)
{
	return rna_pointer_inherit_refine(&iter->parent, &RNA_MeshPolygonStringProperty, rna_iterator_array_get(iter));
}

void MeshPolygonStringPropertyLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPolygonStringPropertyLayer_data;

	rna_MeshPolygonStringPropertyLayer_data_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPolygonStringPropertyLayer_data_get(iter);
}

void MeshPolygonStringPropertyLayer_data_next(CollectionPropertyIterator *iter)
{
	rna_iterator_array_next(iter);

	if (iter->valid)
		iter->ptr = MeshPolygonStringPropertyLayer_data_get(iter);
}

void MeshPolygonStringPropertyLayer_data_end(CollectionPropertyIterator *iter)
{
	rna_iterator_array_end(iter);
}

int MeshPolygonStringPropertyLayer_data_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
	int found = 0;
	CollectionPropertyIterator iter;

	MeshPolygonStringPropertyLayer_data_begin(&iter, ptr);

	if (iter.valid) {
		ArrayIterator *internal = &iter.internal.array;
		if (index < 0 || index >= internal->length) {
#ifdef __GNUC__
			printf("Array iterator out of range: %s (index %d)\n", __func__, index);
#else
			printf("Array iterator out of range: (index %d)\n", index);
#endif
		}
		else if (internal->skip) {
			while (index-- > 0 && iter.valid) {
				rna_iterator_array_next(&iter);
			}
			found = (index == -1 && iter.valid);
		}
		else {
			internal->ptr += internal->itemsize * index;
			found = 1;
		}
		if (found) *r_ptr = MeshPolygonStringPropertyLayer_data_get(&iter);
	}

	MeshPolygonStringPropertyLayer_data_end(&iter);

	return found;
}

static PointerRNA MeshPolygonStringProperty_rna_properties_get(CollectionPropertyIterator *iter)
{
	return rna_builtin_properties_get(iter);
}

void MeshPolygonStringProperty_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

	memset(iter, 0, sizeof(*iter));
	iter->parent = *ptr;
	iter->prop = (PropertyRNA *)&rna_MeshPolygonStringProperty_rna_properties;

	rna_builtin_properties_begin(iter, ptr);

	if (iter->valid)
		iter->ptr = MeshPolygonStringProperty_rna_properties_get(iter);
}

void MeshPolygonStringProperty_rna_properties_next(CollectionPropertyIterator *iter)
{
	rna_builtin_properties_next(iter);

	if (iter->valid)
		iter->ptr = MeshPolygonStringProperty_rna_properties_get(iter);
}

void MeshPolygonStringProperty_rna_properties_end(CollectionPropertyIterator *iter)
{
	rna_iterator_listbase_end(iter);
}

int MeshPolygonStringProperty_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
	return rna_builtin_properties_lookup_string(ptr, key, r_ptr);
}

PointerRNA MeshPolygonStringProperty_rna_type_get(PointerRNA *ptr)
{
	return rna_builtin_type_get(ptr);
}

void MeshPolygonStringProperty_value_get(PointerRNA *ptr, char *value)
{
	rna_MeshStringProperty_s_get(ptr, value);
}

int MeshPolygonStringProperty_value_length(PointerRNA *ptr)
{
	return rna_MeshStringProperty_s_length(ptr);
}

void MeshPolygonStringProperty_value_set(PointerRNA *ptr, const char *value)
{
	rna_MeshStringProperty_s_set(ptr, value);
}

void Mesh_transform(struct Mesh *_self, float matrix[16], int shape_keys)
{
	rna_Mesh_transform(_self, matrix, shape_keys);
}

void Mesh_transform_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	float *matrix;
	int shape_keys;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	matrix = ((float *)_data);
	_data += 64;
	shape_keys = *((int *)_data);
	
	rna_Mesh_transform(_self, matrix, shape_keys);
}

void Mesh_flip_normals(struct Mesh *_self)
{
	rna_Mesh_flip_normals(_self);
}

void Mesh_flip_normals_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	_self = (struct Mesh *)_ptr->data;
	
	rna_Mesh_flip_normals(_self);
}

void Mesh_calc_normals(struct Mesh *_self)
{
	BKE_mesh_calc_normals(_self);
}

void Mesh_calc_normals_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	_self = (struct Mesh *)_ptr->data;
	
	BKE_mesh_calc_normals(_self);
}

void Mesh_create_normals_split(struct Mesh *_self)
{
	rna_Mesh_create_normals_split(_self);
}

void Mesh_create_normals_split_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	_self = (struct Mesh *)_ptr->data;
	
	rna_Mesh_create_normals_split(_self);
}

void Mesh_calc_normals_split(struct Mesh *_self)
{
	BKE_mesh_calc_normals_split(_self);
}

void Mesh_calc_normals_split_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	_self = (struct Mesh *)_ptr->data;
	
	BKE_mesh_calc_normals_split(_self);
}

void Mesh_free_normals_split(struct Mesh *_self)
{
	rna_Mesh_free_normals_split(_self);
}

void Mesh_free_normals_split_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	_self = (struct Mesh *)_ptr->data;
	
	rna_Mesh_free_normals_split(_self);
}

void Mesh_split_faces(struct Mesh *_self)
{
	BKE_mesh_split_faces(_self);
}

void Mesh_split_faces_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	_self = (struct Mesh *)_ptr->data;
	
	BKE_mesh_split_faces(_self);
}

void Mesh_calc_tangents(struct Mesh *_self, ReportList *reports, const char * uvmap)
{
	rna_Mesh_calc_tangents(_self, reports, uvmap);
}

void Mesh_calc_tangents_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	const char * uvmap;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	uvmap = *((const char * *)_data);
	
	rna_Mesh_calc_tangents(_self, reports, uvmap);
}

void Mesh_free_tangents(struct Mesh *_self)
{
	rna_Mesh_free_tangents(_self);
}

void Mesh_free_tangents_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	_self = (struct Mesh *)_ptr->data;
	
	rna_Mesh_free_tangents(_self);
}

void Mesh_calc_tessface(struct Mesh *_self, int free_mpoly)
{
	rna_Mesh_calc_tessface(_self, free_mpoly);
}

void Mesh_calc_tessface_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	int free_mpoly;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	free_mpoly = *((int *)_data);
	
	rna_Mesh_calc_tessface(_self, free_mpoly);
}

void Mesh_calc_smooth_groups(struct Mesh *_self, int use_bitflags, int *poly_groups_len, int **poly_groups, int *groups)
{
	rna_Mesh_calc_smooth_groups(_self, use_bitflags, poly_groups_len, poly_groups, groups);
}

void Mesh_calc_smooth_groups_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	int use_bitflags;
	int *poly_groups_len;
	int **poly_groups;
	int *groups;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	use_bitflags = *((int *)_data);
	_data += 4;
	poly_groups_len = (int *)&((ParameterDynAlloc *)_data)->array_tot;
	poly_groups = ((int **)(&(((ParameterDynAlloc *)_data)->array)));
	_data += 16;
	groups = ((int *)_data);
	
	rna_Mesh_calc_smooth_groups(_self, use_bitflags, poly_groups_len, poly_groups, groups);
}

void Mesh_normals_split_custom_set(struct Mesh *_self, ReportList *reports, int normals_len, float *normals)
{
	rna_Mesh_normals_split_custom_set(_self, reports, normals_len, normals);
}

void Mesh_normals_split_custom_set_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	int normals_len;
	float *normals;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	normals_len = (int)((ParameterDynAlloc *)_data)->array_tot;
	normals = *((float **)(&(((ParameterDynAlloc *)_data)->array)));
	
	rna_Mesh_normals_split_custom_set(_self, reports, normals_len, normals);
}

void Mesh_normals_split_custom_set_from_vertices(struct Mesh *_self, ReportList *reports, int normals_len, float *normals)
{
	rna_Mesh_normals_split_custom_set_from_vertices(_self, reports, normals_len, normals);
}

void Mesh_normals_split_custom_set_from_vertices_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	int normals_len;
	float *normals;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	normals_len = (int)((ParameterDynAlloc *)_data)->array_tot;
	normals = *((float **)(&(((ParameterDynAlloc *)_data)->array)));
	
	rna_Mesh_normals_split_custom_set_from_vertices(_self, reports, normals_len, normals);
}

void Mesh_update(struct Mesh *_self, bContext *C, int calc_edges, int calc_tessface)
{
	ED_mesh_update(_self, C, calc_edges, calc_tessface);
}

void Mesh_update_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	int calc_edges;
	int calc_tessface;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	calc_edges = *((int *)_data);
	_data += 4;
	calc_tessface = *((int *)_data);
	
	ED_mesh_update(_self, C, calc_edges, calc_tessface);
}

const char * Mesh_unit_test_compare(struct Mesh *_self, struct Mesh *mesh)
{
	return rna_Mesh_unit_test_compare(_self, mesh);
}

void Mesh_unit_test_compare_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	struct Mesh *mesh;
	const char * result;
	char *_data, *_retdata;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	mesh = *((struct Mesh **)_data);
	_data += 8;
	_retdata = _data;
	
	result = rna_Mesh_unit_test_compare(_self, mesh);
	*((const char * *)_retdata) = result;
}

int Mesh_validate(struct Mesh *_self, int verbose, int clean_customdata)
{
	return BKE_mesh_validate(_self, verbose, clean_customdata);
}

void Mesh_validate_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	int verbose;
	int clean_customdata;
	int result;
	char *_data, *_retdata;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	verbose = *((int *)_data);
	_data += 4;
	clean_customdata = *((int *)_data);
	_data += 4;
	_retdata = _data;
	
	result = BKE_mesh_validate(_self, verbose, clean_customdata);
	*((int *)_retdata) = result;
}

int Mesh_validate_material_indices(struct Mesh *_self)
{
	return BKE_mesh_validate_material_indices(_self);
}

void Mesh_validate_material_indices_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	int result;
	char *_data, *_retdata;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	_retdata = _data;
	
	result = BKE_mesh_validate_material_indices(_self);
	*((int *)_retdata) = result;
}

/* Repeated prototypes to detect errors */

void rna_Mesh_transform(struct Mesh *_self, float matrix[16], int shape_keys);
void rna_Mesh_flip_normals(struct Mesh *_self);
void BKE_mesh_calc_normals(struct Mesh *_self);
void rna_Mesh_create_normals_split(struct Mesh *_self);
void BKE_mesh_calc_normals_split(struct Mesh *_self);
void rna_Mesh_free_normals_split(struct Mesh *_self);
void BKE_mesh_split_faces(struct Mesh *_self);
void rna_Mesh_calc_tangents(struct Mesh *_self, ReportList *reports, const char * uvmap);
void rna_Mesh_free_tangents(struct Mesh *_self);
void rna_Mesh_calc_tessface(struct Mesh *_self, int free_mpoly);
void rna_Mesh_calc_smooth_groups(struct Mesh *_self, int use_bitflags, int *poly_groups_len, int **poly_groups, int *groups);
void rna_Mesh_normals_split_custom_set(struct Mesh *_self, ReportList *reports, int normals_len, float *normals);
void rna_Mesh_normals_split_custom_set_from_vertices(struct Mesh *_self, ReportList *reports, int normals_len, float *normals);
void ED_mesh_update(struct Mesh *_self, bContext *C, int calc_edges, int calc_tessface);
const char * rna_Mesh_unit_test_compare(struct Mesh *_self, struct Mesh *mesh);
int BKE_mesh_validate(struct Mesh *_self, int verbose, int clean_customdata);
int BKE_mesh_validate_material_indices(struct Mesh *_self);

void MeshVertices_add(struct Mesh *_self, ReportList *reports, int count)
{
	ED_mesh_vertices_add(_self, reports, count);
}

void MeshVertices_add_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	int count;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	count = *((int *)_data);
	
	ED_mesh_vertices_add(_self, reports, count);
}

/* Repeated prototypes to detect errors */

void ED_mesh_vertices_add(struct Mesh *_self, ReportList *reports, int count);

void MeshEdges_add(struct Mesh *_self, ReportList *reports, int count)
{
	ED_mesh_edges_add(_self, reports, count);
}

void MeshEdges_add_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	int count;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	count = *((int *)_data);
	
	ED_mesh_edges_add(_self, reports, count);
}

/* Repeated prototypes to detect errors */

void ED_mesh_edges_add(struct Mesh *_self, ReportList *reports, int count);

void MeshTessFaces_add(struct Mesh *_self, ReportList *reports, int count)
{
	ED_mesh_tessfaces_add(_self, reports, count);
}

void MeshTessFaces_add_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	int count;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	count = *((int *)_data);
	
	ED_mesh_tessfaces_add(_self, reports, count);
}

/* Repeated prototypes to detect errors */

void ED_mesh_tessfaces_add(struct Mesh *_self, ReportList *reports, int count);

void MeshLoops_add(struct Mesh *_self, ReportList *reports, int count)
{
	ED_mesh_loops_add(_self, reports, count);
}

void MeshLoops_add_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	int count;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	count = *((int *)_data);
	
	ED_mesh_loops_add(_self, reports, count);
}

/* Repeated prototypes to detect errors */

void ED_mesh_loops_add(struct Mesh *_self, ReportList *reports, int count);

void MeshPolygons_add(struct Mesh *_self, ReportList *reports, int count)
{
	ED_mesh_polys_add(_self, reports, count);
}

void MeshPolygons_add_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	int count;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	count = *((int *)_data);
	
	ED_mesh_polys_add(_self, reports, count);
}

/* Repeated prototypes to detect errors */

void ED_mesh_polys_add(struct Mesh *_self, ReportList *reports, int count);


struct PointerRNA TessfaceUVTextures_new(struct Mesh *_self, ReportList *reports, const char * name)
{
	return rna_Mesh_tessface_uv_texture_new(_self, reports, name);
}

void TessfaceUVTextures_new_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	const char * name;
	struct PointerRNA layer;
	char *_data, *_retdata;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	name = *((const char * *)_data);
	_data += 8;
	_retdata = _data;
	
	layer = rna_Mesh_tessface_uv_texture_new(_self, reports, name);
	*((struct PointerRNA *)_retdata) = layer;
}

/* Repeated prototypes to detect errors */

struct PointerRNA rna_Mesh_tessface_uv_texture_new(struct Mesh *_self, ReportList *reports, const char * name);

struct PointerRNA UVTextures_new(struct Mesh *_self, const char * name)
{
	return rna_Mesh_uv_texture_new(_self, name);
}

void UVTextures_new_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	const char * name;
	struct PointerRNA layer;
	char *_data, *_retdata;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	name = *((const char * *)_data);
	_data += 8;
	_retdata = _data;
	
	layer = rna_Mesh_uv_texture_new(_self, name);
	*((struct PointerRNA *)_retdata) = layer;
}

void UVTextures_remove(struct Mesh *_self, ReportList *reports, struct CustomDataLayer *layer)
{
	rna_Mesh_uv_texture_layers_remove(_self, reports, layer);
}

void UVTextures_remove_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	struct CustomDataLayer *layer;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	layer = *((struct CustomDataLayer **)_data);
	
	rna_Mesh_uv_texture_layers_remove(_self, reports, layer);
}

/* Repeated prototypes to detect errors */

struct PointerRNA rna_Mesh_uv_texture_new(struct Mesh *_self, const char * name);
void rna_Mesh_uv_texture_layers_remove(struct Mesh *_self, ReportList *reports, struct CustomDataLayer *layer);

struct PointerRNA VertexColors_new(struct Mesh *_self, ReportList *reports, const char * name)
{
	return rna_Mesh_tessface_vertex_color_new(_self, reports, name);
}

void VertexColors_new_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	const char * name;
	struct PointerRNA layer;
	char *_data, *_retdata;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	name = *((const char * *)_data);
	_data += 8;
	_retdata = _data;
	
	layer = rna_Mesh_tessface_vertex_color_new(_self, reports, name);
	*((struct PointerRNA *)_retdata) = layer;
}

/* Repeated prototypes to detect errors */

struct PointerRNA rna_Mesh_tessface_vertex_color_new(struct Mesh *_self, ReportList *reports, const char * name);

struct PointerRNA LoopColors_new(struct Mesh *_self, const char * name)
{
	return rna_Mesh_vertex_color_new(_self, name);
}

void LoopColors_new_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	const char * name;
	struct PointerRNA layer;
	char *_data, *_retdata;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	name = *((const char * *)_data);
	_data += 8;
	_retdata = _data;
	
	layer = rna_Mesh_vertex_color_new(_self, name);
	*((struct PointerRNA *)_retdata) = layer;
}

void LoopColors_remove(struct Mesh *_self, ReportList *reports, struct CustomDataLayer *layer)
{
	rna_Mesh_vertex_color_remove(_self, reports, layer);
}

void LoopColors_remove_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	struct CustomDataLayer *layer;
	char *_data;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	layer = *((struct CustomDataLayer **)_data);
	
	rna_Mesh_vertex_color_remove(_self, reports, layer);
}

/* Repeated prototypes to detect errors */

struct PointerRNA rna_Mesh_vertex_color_new(struct Mesh *_self, const char * name);
void rna_Mesh_vertex_color_remove(struct Mesh *_self, ReportList *reports, struct CustomDataLayer *layer);

struct PointerRNA VertexFloatProperties_new(struct Mesh *_self, const char * name)
{
	return rna_Mesh_vertex_float_property_new(_self, name);
}

void VertexFloatProperties_new_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	const char * name;
	struct PointerRNA layer;
	char *_data, *_retdata;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	name = *((const char * *)_data);
	_data += 8;
	_retdata = _data;
	
	layer = rna_Mesh_vertex_float_property_new(_self, name);
	*((struct PointerRNA *)_retdata) = layer;
}

/* Repeated prototypes to detect errors */

struct PointerRNA rna_Mesh_vertex_float_property_new(struct Mesh *_self, const char * name);

struct PointerRNA VertexIntProperties_new(struct Mesh *_self, const char * name)
{
	return rna_Mesh_vertex_int_property_new(_self, name);
}

void VertexIntProperties_new_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	const char * name;
	struct PointerRNA layer;
	char *_data, *_retdata;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	name = *((const char * *)_data);
	_data += 8;
	_retdata = _data;
	
	layer = rna_Mesh_vertex_int_property_new(_self, name);
	*((struct PointerRNA *)_retdata) = layer;
}

/* Repeated prototypes to detect errors */

struct PointerRNA rna_Mesh_vertex_int_property_new(struct Mesh *_self, const char * name);

struct PointerRNA VertexStringProperties_new(struct Mesh *_self, const char * name)
{
	return rna_Mesh_vertex_string_property_new(_self, name);
}

void VertexStringProperties_new_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	const char * name;
	struct PointerRNA layer;
	char *_data, *_retdata;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	name = *((const char * *)_data);
	_data += 8;
	_retdata = _data;
	
	layer = rna_Mesh_vertex_string_property_new(_self, name);
	*((struct PointerRNA *)_retdata) = layer;
}

/* Repeated prototypes to detect errors */

struct PointerRNA rna_Mesh_vertex_string_property_new(struct Mesh *_self, const char * name);

struct PointerRNA PolygonFloatProperties_new(struct Mesh *_self, const char * name)
{
	return rna_Mesh_polygon_float_property_new(_self, name);
}

void PolygonFloatProperties_new_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	const char * name;
	struct PointerRNA layer;
	char *_data, *_retdata;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	name = *((const char * *)_data);
	_data += 8;
	_retdata = _data;
	
	layer = rna_Mesh_polygon_float_property_new(_self, name);
	*((struct PointerRNA *)_retdata) = layer;
}

/* Repeated prototypes to detect errors */

struct PointerRNA rna_Mesh_polygon_float_property_new(struct Mesh *_self, const char * name);

struct PointerRNA PolygonIntProperties_new(struct Mesh *_self, const char * name)
{
	return rna_Mesh_polygon_int_property_new(_self, name);
}

void PolygonIntProperties_new_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	const char * name;
	struct PointerRNA layer;
	char *_data, *_retdata;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	name = *((const char * *)_data);
	_data += 8;
	_retdata = _data;
	
	layer = rna_Mesh_polygon_int_property_new(_self, name);
	*((struct PointerRNA *)_retdata) = layer;
}

/* Repeated prototypes to detect errors */

struct PointerRNA rna_Mesh_polygon_int_property_new(struct Mesh *_self, const char * name);

struct PointerRNA PolygonStringProperties_new(struct Mesh *_self, const char * name)
{
	return rna_Mesh_polygon_string_property_new(_self, name);
}

void PolygonStringProperties_new_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Mesh *_self;
	const char * name;
	struct PointerRNA layer;
	char *_data, *_retdata;
	
	_self = (struct Mesh *)_ptr->data;
	_data = (char *)_parms->data;
	name = *((const char * *)_data);
	_data += 8;
	_retdata = _data;
	
	layer = rna_Mesh_polygon_string_property_new(_self, name);
	*((struct PointerRNA *)_retdata) = layer;
}

/* Repeated prototypes to detect errors */

struct PointerRNA rna_Mesh_polygon_string_property_new(struct Mesh *_self, const char * name);








int MeshTessFace_vertices_get_length(PointerRNA *ptr, int *arraylen)
{
	return rna_MeshTessFace_verts_get_length(ptr, arraylen);
}



int MeshPolygon_vertices_get_length(PointerRNA *ptr, int *arraylen)
{
	return rna_MeshPoly_vertices_get_length(ptr, arraylen);
}

void MeshPolygon_flip(struct ID *_selfid, struct MPoly *_self)
{
	rna_MeshPolygon_flip(_selfid, _self);
}

void MeshPolygon_flip_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_selfid;
	struct MPoly *_self;
	_selfid = (struct ID *)_ptr->id.data;
	_self = (struct MPoly *)_ptr->data;
	
	rna_MeshPolygon_flip(_selfid, _self);
}

/* Repeated prototypes to detect errors */

void rna_MeshPolygon_flip(struct ID *_selfid, struct MPoly *_self);




int MeshTextureFace_uv_get_length(PointerRNA *ptr, int *arraylen)
{
	return rna_MeshTextureFace_uv_get_length(ptr, arraylen);
}




















/* Mesh */
CollectionPropertyRNA rna_Mesh_vertices = {
	{(PropertyRNA *)&rna_Mesh_edges, NULL,
	-1, "vertices", 0, 0, 8, "Vertices",
	"Vertices of the mesh",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_MeshVertices},
	Mesh_vertices_begin, Mesh_vertices_next, Mesh_vertices_end, Mesh_vertices_get, Mesh_vertices_length, Mesh_vertices_lookup_int, NULL, NULL, &RNA_MeshVertex
};

CollectionPropertyRNA rna_Mesh_edges = {
	{(PropertyRNA *)&rna_Mesh_tessfaces, (PropertyRNA *)&rna_Mesh_vertices,
	-1, "edges", 0, 0, 8, "Edges",
	"Edges of the mesh",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_MeshEdges},
	Mesh_edges_begin, Mesh_edges_next, Mesh_edges_end, Mesh_edges_get, Mesh_edges_length, Mesh_edges_lookup_int, NULL, NULL, &RNA_MeshEdge
};

CollectionPropertyRNA rna_Mesh_tessfaces = {
	{(PropertyRNA *)&rna_Mesh_loops, (PropertyRNA *)&rna_Mesh_edges,
	-1, "tessfaces", 0, 0, 8, "TessFaces",
	"Tessellated faces of the mesh (derived from polygons)",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_MeshTessFaces},
	Mesh_tessfaces_begin, Mesh_tessfaces_next, Mesh_tessfaces_end, Mesh_tessfaces_get, Mesh_tessfaces_length, Mesh_tessfaces_lookup_int, NULL, NULL, &RNA_MeshTessFace
};

CollectionPropertyRNA rna_Mesh_loops = {
	{(PropertyRNA *)&rna_Mesh_polygons, (PropertyRNA *)&rna_Mesh_tessfaces,
	-1, "loops", 0, 0, 8, "Loops",
	"Loops of the mesh (polygon corners)",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_MeshLoops},
	Mesh_loops_begin, Mesh_loops_next, Mesh_loops_end, Mesh_loops_get, Mesh_loops_length, Mesh_loops_lookup_int, NULL, NULL, &RNA_MeshLoop
};

CollectionPropertyRNA rna_Mesh_polygons = {
	{(PropertyRNA *)&rna_Mesh_texture_mesh, (PropertyRNA *)&rna_Mesh_loops,
	-1, "polygons", 0, 0, 8, "Polygons",
	"Polygons of the mesh",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_MeshPolygons},
	Mesh_polygons_begin, Mesh_polygons_next, Mesh_polygons_end, Mesh_polygons_get, Mesh_polygons_length, Mesh_polygons_lookup_int, NULL, NULL, &RNA_MeshPolygon
};

PointerPropertyRNA rna_Mesh_texture_mesh = {
	{(PropertyRNA *)&rna_Mesh_uv_layers, (PropertyRNA *)&rna_Mesh_polygons,
	-1, "texture_mesh", 9437249, 0, 0, "Texture Mesh",
	"Use another mesh for texture indices (vertex indices must be aligned)",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_texture_mesh_get, Mesh_texture_mesh_set, NULL, NULL,&RNA_Mesh
};

CollectionPropertyRNA rna_Mesh_uv_layers = {
	{(PropertyRNA *)&rna_Mesh_uv_layer_clone, (PropertyRNA *)&rna_Mesh_texture_mesh,
	-1, "uv_layers", 0, 0, 8, "UV Loop Layers",
	"All UV loop layers",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_UVLoopLayers},
	Mesh_uv_layers_begin, Mesh_uv_layers_next, Mesh_uv_layers_end, Mesh_uv_layers_get, Mesh_uv_layers_length, Mesh_uv_layers_lookup_int, Mesh_uv_layers_lookup_string, NULL, &RNA_MeshUVLoopLayer
};

PointerPropertyRNA rna_Mesh_uv_layer_clone = {
	{(PropertyRNA *)&rna_Mesh_uv_layer_clone_index, (PropertyRNA *)&rna_Mesh_uv_layers,
	-1, "uv_layer_clone", 8388609, 0, 0, "Clone UV loop layer",
	"UV loop layer to be used as cloning source",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_uv_layer_clone_get, Mesh_uv_layer_clone_set, NULL, NULL,&RNA_MeshUVLoopLayer
};

IntPropertyRNA rna_Mesh_uv_layer_clone_index = {
	{(PropertyRNA *)&rna_Mesh_uv_layer_stencil, (PropertyRNA *)&rna_Mesh_uv_layer_clone,
	-1, "uv_layer_clone_index", 3, 0, 0, "Clone UV loop layer Index",
	"Clone UV loop layer index",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_uv_layer_clone_index_get, Mesh_uv_layer_clone_index_set, NULL, NULL, rna_Mesh_uv_layer_index_range, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

PointerPropertyRNA rna_Mesh_uv_layer_stencil = {
	{(PropertyRNA *)&rna_Mesh_uv_layer_stencil_index, (PropertyRNA *)&rna_Mesh_uv_layer_clone_index,
	-1, "uv_layer_stencil", 8388609, 0, 0, "Mask UV loop layer",
	"UV loop layer to mask the painted area",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_uv_layer_stencil_get, Mesh_uv_layer_stencil_set, NULL, NULL,&RNA_MeshUVLoopLayer
};

IntPropertyRNA rna_Mesh_uv_layer_stencil_index = {
	{(PropertyRNA *)&rna_Mesh_tessface_uv_textures, (PropertyRNA *)&rna_Mesh_uv_layer_stencil,
	-1, "uv_layer_stencil_index", 3, 0, 0, "Mask UV loop layer Index",
	"Mask UV loop layer index",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_uv_layer_stencil_index_get, Mesh_uv_layer_stencil_index_set, NULL, NULL, rna_Mesh_uv_layer_index_range, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

CollectionPropertyRNA rna_Mesh_tessface_uv_textures = {
	{(PropertyRNA *)&rna_Mesh_uv_textures, (PropertyRNA *)&rna_Mesh_uv_layer_stencil_index,
	-1, "tessface_uv_textures", 0, 0, 8, "Tessellated Face UV Maps",
	"All UV maps for tessellated faces (read-only, for use by renderers)",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_TessfaceUVTextures},
	Mesh_tessface_uv_textures_begin, Mesh_tessface_uv_textures_next, Mesh_tessface_uv_textures_end, Mesh_tessface_uv_textures_get, Mesh_tessface_uv_textures_length, Mesh_tessface_uv_textures_lookup_int, Mesh_tessface_uv_textures_lookup_string, NULL, &RNA_MeshTextureFaceLayer
};

CollectionPropertyRNA rna_Mesh_uv_textures = {
	{(PropertyRNA *)&rna_Mesh_uv_texture_clone, (PropertyRNA *)&rna_Mesh_tessface_uv_textures,
	-1, "uv_textures", 0, 0, 8, "UV Maps",
	"All UV maps",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_UVTextures},
	Mesh_uv_textures_begin, Mesh_uv_textures_next, Mesh_uv_textures_end, Mesh_uv_textures_get, Mesh_uv_textures_length, Mesh_uv_textures_lookup_int, Mesh_uv_textures_lookup_string, NULL, &RNA_MeshTexturePolyLayer
};

PointerPropertyRNA rna_Mesh_uv_texture_clone = {
	{(PropertyRNA *)&rna_Mesh_uv_texture_clone_index, (PropertyRNA *)&rna_Mesh_uv_textures,
	-1, "uv_texture_clone", 8388609, 0, 0, "Clone UV Map",
	"UV map to be used as cloning source",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_uv_texture_clone_get, Mesh_uv_texture_clone_set, NULL, NULL,&RNA_MeshTexturePolyLayer
};

IntPropertyRNA rna_Mesh_uv_texture_clone_index = {
	{(PropertyRNA *)&rna_Mesh_uv_texture_stencil, (PropertyRNA *)&rna_Mesh_uv_texture_clone,
	-1, "uv_texture_clone_index", 3, 0, 0, "Clone UV Map Index",
	"Clone UV map index",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_uv_texture_clone_index_get, Mesh_uv_texture_clone_index_set, NULL, NULL, rna_Mesh_uv_texture_index_range, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

PointerPropertyRNA rna_Mesh_uv_texture_stencil = {
	{(PropertyRNA *)&rna_Mesh_uv_texture_stencil_index, (PropertyRNA *)&rna_Mesh_uv_texture_clone_index,
	-1, "uv_texture_stencil", 8388609, 0, 0, "Mask UV Map",
	"UV map to mask the painted area",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_uv_texture_stencil_get, Mesh_uv_texture_stencil_set, NULL, NULL,&RNA_MeshTexturePolyLayer
};

IntPropertyRNA rna_Mesh_uv_texture_stencil_index = {
	{(PropertyRNA *)&rna_Mesh_tessface_vertex_colors, (PropertyRNA *)&rna_Mesh_uv_texture_stencil,
	-1, "uv_texture_stencil_index", 3, 0, 0, "Mask UV Map Index",
	"Mask UV map index",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_uv_texture_stencil_index_get, Mesh_uv_texture_stencil_index_set, NULL, NULL, rna_Mesh_uv_texture_index_range, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

CollectionPropertyRNA rna_Mesh_tessface_vertex_colors = {
	{(PropertyRNA *)&rna_Mesh_vertex_colors, (PropertyRNA *)&rna_Mesh_uv_texture_stencil_index,
	-1, "tessface_vertex_colors", 0, 0, 8, "Tessellated Face Colors",
	"All tessellated face colors (read-only, for use by renderers)",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_VertexColors},
	Mesh_tessface_vertex_colors_begin, Mesh_tessface_vertex_colors_next, Mesh_tessface_vertex_colors_end, Mesh_tessface_vertex_colors_get, Mesh_tessface_vertex_colors_length, Mesh_tessface_vertex_colors_lookup_int, Mesh_tessface_vertex_colors_lookup_string, NULL, &RNA_MeshColorLayer
};

CollectionPropertyRNA rna_Mesh_vertex_colors = {
	{(PropertyRNA *)&rna_Mesh_vertex_layers_float, (PropertyRNA *)&rna_Mesh_tessface_vertex_colors,
	-1, "vertex_colors", 0, 0, 8, "Vertex Colors",
	"All vertex colors",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_LoopColors},
	Mesh_vertex_colors_begin, Mesh_vertex_colors_next, Mesh_vertex_colors_end, Mesh_vertex_colors_get, Mesh_vertex_colors_length, Mesh_vertex_colors_lookup_int, Mesh_vertex_colors_lookup_string, NULL, &RNA_MeshLoopColorLayer
};

CollectionPropertyRNA rna_Mesh_vertex_layers_float = {
	{(PropertyRNA *)&rna_Mesh_vertex_layers_int, (PropertyRNA *)&rna_Mesh_vertex_colors,
	-1, "vertex_layers_float", 0, 0, 8, "Float Property Layers",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_VertexFloatProperties},
	Mesh_vertex_layers_float_begin, Mesh_vertex_layers_float_next, Mesh_vertex_layers_float_end, Mesh_vertex_layers_float_get, Mesh_vertex_layers_float_length, Mesh_vertex_layers_float_lookup_int, Mesh_vertex_layers_float_lookup_string, NULL, &RNA_MeshVertexFloatPropertyLayer
};

CollectionPropertyRNA rna_Mesh_vertex_layers_int = {
	{(PropertyRNA *)&rna_Mesh_vertex_layers_string, (PropertyRNA *)&rna_Mesh_vertex_layers_float,
	-1, "vertex_layers_int", 0, 0, 8, "Int Property Layers",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_VertexIntProperties},
	Mesh_vertex_layers_int_begin, Mesh_vertex_layers_int_next, Mesh_vertex_layers_int_end, Mesh_vertex_layers_int_get, Mesh_vertex_layers_int_length, Mesh_vertex_layers_int_lookup_int, Mesh_vertex_layers_int_lookup_string, NULL, &RNA_MeshVertexIntPropertyLayer
};

CollectionPropertyRNA rna_Mesh_vertex_layers_string = {
	{(PropertyRNA *)&rna_Mesh_polygon_layers_float, (PropertyRNA *)&rna_Mesh_vertex_layers_int,
	-1, "vertex_layers_string", 0, 0, 8, "String Property Layers",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_VertexStringProperties},
	Mesh_vertex_layers_string_begin, Mesh_vertex_layers_string_next, Mesh_vertex_layers_string_end, Mesh_vertex_layers_string_get, Mesh_vertex_layers_string_length, Mesh_vertex_layers_string_lookup_int, Mesh_vertex_layers_string_lookup_string, NULL, &RNA_MeshVertexStringPropertyLayer
};

CollectionPropertyRNA rna_Mesh_polygon_layers_float = {
	{(PropertyRNA *)&rna_Mesh_polygon_layers_int, (PropertyRNA *)&rna_Mesh_vertex_layers_string,
	-1, "polygon_layers_float", 0, 0, 8, "Float Property Layers",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_PolygonFloatProperties},
	Mesh_polygon_layers_float_begin, Mesh_polygon_layers_float_next, Mesh_polygon_layers_float_end, Mesh_polygon_layers_float_get, Mesh_polygon_layers_float_length, Mesh_polygon_layers_float_lookup_int, Mesh_polygon_layers_float_lookup_string, NULL, &RNA_MeshPolygonFloatPropertyLayer
};

CollectionPropertyRNA rna_Mesh_polygon_layers_int = {
	{(PropertyRNA *)&rna_Mesh_polygon_layers_string, (PropertyRNA *)&rna_Mesh_polygon_layers_float,
	-1, "polygon_layers_int", 0, 0, 8, "Int Property Layers",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_PolygonIntProperties},
	Mesh_polygon_layers_int_begin, Mesh_polygon_layers_int_next, Mesh_polygon_layers_int_end, Mesh_polygon_layers_int_get, Mesh_polygon_layers_int_length, Mesh_polygon_layers_int_lookup_int, Mesh_polygon_layers_int_lookup_string, NULL, &RNA_MeshPolygonIntPropertyLayer
};

CollectionPropertyRNA rna_Mesh_polygon_layers_string = {
	{(PropertyRNA *)&rna_Mesh_skin_vertices, (PropertyRNA *)&rna_Mesh_polygon_layers_int,
	-1, "polygon_layers_string", 0, 0, 8, "String Property Layers",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_PolygonStringProperties},
	Mesh_polygon_layers_string_begin, Mesh_polygon_layers_string_next, Mesh_polygon_layers_string_end, Mesh_polygon_layers_string_get, Mesh_polygon_layers_string_length, Mesh_polygon_layers_string_lookup_int, Mesh_polygon_layers_string_lookup_string, NULL, &RNA_MeshPolygonStringPropertyLayer
};

CollectionPropertyRNA rna_Mesh_skin_vertices = {
	{(PropertyRNA *)&rna_Mesh_vertex_paint_masks, (PropertyRNA *)&rna_Mesh_polygon_layers_string,
	-1, "skin_vertices", 0, 0, 8, "Skin Vertices",
	"All skin vertices",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_skin_vertices_begin, Mesh_skin_vertices_next, Mesh_skin_vertices_end, Mesh_skin_vertices_get, Mesh_skin_vertices_length, Mesh_skin_vertices_lookup_int, Mesh_skin_vertices_lookup_string, NULL, &RNA_MeshSkinVertexLayer
};

CollectionPropertyRNA rna_Mesh_vertex_paint_masks = {
	{(PropertyRNA *)&rna_Mesh_use_auto_smooth, (PropertyRNA *)&rna_Mesh_skin_vertices,
	-1, "vertex_paint_masks", 0, 0, 8, "Vertex Paint Mask",
	"Vertex paint mask",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_vertex_paint_masks_begin, Mesh_vertex_paint_masks_next, Mesh_vertex_paint_masks_end, Mesh_vertex_paint_masks_get, Mesh_vertex_paint_masks_length, Mesh_vertex_paint_masks_lookup_int, NULL, NULL, &RNA_MeshPaintMaskLayer
};

BoolPropertyRNA rna_Mesh_use_auto_smooth = {
	{(PropertyRNA *)&rna_Mesh_auto_smooth_angle, (PropertyRNA *)&rna_Mesh_vertex_paint_masks,
	-1, "use_auto_smooth", 3, 0, 0, "Auto Smooth",
	"Auto smooth (based on smooth/sharp faces/edges and angle between faces), or use custom split normals data if available",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_use_auto_smooth_get, Mesh_use_auto_smooth_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

FloatPropertyRNA rna_Mesh_auto_smooth_angle = {
	{(PropertyRNA *)&rna_Mesh_has_custom_normals, (PropertyRNA *)&rna_Mesh_use_auto_smooth,
	-1, "auto_smooth_angle", 3, 0, 4, "Auto Smooth Angle",
	"Maximum angle between face normals that will be considered as smooth (unused if custom split normals data are available)",
	0, "*",
	PROP_FLOAT, PROP_ANGLE | PROP_UNIT_ROTATION, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	offsetof(Mesh, smoothresh), 4, NULL},
	Mesh_auto_smooth_angle_get, Mesh_auto_smooth_angle_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0.0f, 3.1415927410f, 0.0f, 3.1415927410f, 10.0f, 3, 3.1415927410f, NULL
};

BoolPropertyRNA rna_Mesh_has_custom_normals = {
	{(PropertyRNA *)&rna_Mesh_show_double_sided, (PropertyRNA *)&rna_Mesh_auto_smooth_angle,
	-1, "has_custom_normals", 2, 0, 0, "Has Custom Normals",
	"True if there are custom split normals data in this mesh",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_has_custom_normals_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_double_sided = {
	{(PropertyRNA *)&rna_Mesh_texco_mesh, (PropertyRNA *)&rna_Mesh_has_custom_normals,
	-1, "show_double_sided", 3, 0, 0, "Double Sided",
	"Display the mesh with double or single sided lighting (OpenGL only)",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_double_sided_get, Mesh_show_double_sided_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

PointerPropertyRNA rna_Mesh_texco_mesh = {
	{(PropertyRNA *)&rna_Mesh_shape_keys, (PropertyRNA *)&rna_Mesh_show_double_sided,
	-1, "texco_mesh", 8388673, 0, 0, "Texture Space Mesh",
	"Derive texture coordinates from another mesh",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_texco_mesh_get, Mesh_texco_mesh_set, NULL, NULL,&RNA_Mesh
};

PointerPropertyRNA rna_Mesh_shape_keys = {
	{(PropertyRNA *)&rna_Mesh_use_auto_texspace, (PropertyRNA *)&rna_Mesh_texco_mesh,
	-1, "shape_keys", 8388672, 0, 0, "Shape Keys",
	"",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_shape_keys_get, NULL, NULL, NULL,&RNA_Key
};

BoolPropertyRNA rna_Mesh_use_auto_texspace = {
	{(PropertyRNA *)&rna_Mesh_show_edges, (PropertyRNA *)&rna_Mesh_shape_keys,
	-1, "use_auto_texspace", 3, 0, 0, "Auto Texture Space",
	"Adjust active object\'s texture space automatically when transforming object",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_use_auto_texspace_get, Mesh_use_auto_texspace_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_edges = {
	{(PropertyRNA *)&rna_Mesh_show_faces, (PropertyRNA *)&rna_Mesh_use_auto_texspace,
	-1, "show_edges", 3, 0, 0, "Draw Edges",
	"Display selected edges using highlights in the 3D view and UV editor",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_edges_get, Mesh_show_edges_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_faces = {
	{(PropertyRNA *)&rna_Mesh_show_normal_face, (PropertyRNA *)&rna_Mesh_show_edges,
	-1, "show_faces", 3, 0, 0, "Draw Faces",
	"Display all faces as shades in the 3D view and UV editor",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_faces_get, Mesh_show_faces_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_normal_face = {
	{(PropertyRNA *)&rna_Mesh_show_normal_loop, (PropertyRNA *)&rna_Mesh_show_faces,
	-1, "show_normal_face", 3, 0, 0, "Draw Normals",
	"Display face normals as lines",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_normal_face_get, Mesh_show_normal_face_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_normal_loop = {
	{(PropertyRNA *)&rna_Mesh_show_normal_vertex, (PropertyRNA *)&rna_Mesh_show_normal_face,
	-1, "show_normal_loop", 3, 0, 0, "Draw Split Normals",
	"Display vertex-per-face normals as lines",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_normal_loop_get, Mesh_show_normal_loop_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_normal_vertex = {
	{(PropertyRNA *)&rna_Mesh_show_weight, (PropertyRNA *)&rna_Mesh_show_normal_loop,
	-1, "show_normal_vertex", 3, 0, 0, "Draw Vertex Normals",
	"Display vertex normals as lines",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_normal_vertex_get, Mesh_show_normal_vertex_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_weight = {
	{(PropertyRNA *)&rna_Mesh_show_edge_crease, (PropertyRNA *)&rna_Mesh_show_normal_vertex,
	-1, "show_weight", 3, 0, 0, "Show Weights",
	"Draw weights in editmode",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data_edit_color, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_weight_get, Mesh_show_weight_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_edge_crease = {
	{(PropertyRNA *)&rna_Mesh_show_edge_bevel_weight, (PropertyRNA *)&rna_Mesh_show_weight,
	-1, "show_edge_crease", 3, 0, 0, "Draw Creases",
	"Display creases created for Subdivision Surface modifier",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_edge_crease_get, Mesh_show_edge_crease_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_edge_bevel_weight = {
	{(PropertyRNA *)&rna_Mesh_show_edge_seams, (PropertyRNA *)&rna_Mesh_show_edge_crease,
	-1, "show_edge_bevel_weight", 3, 0, 0, "Draw Bevel Weights",
	"Display weights created for the Bevel modifier",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_edge_bevel_weight_get, Mesh_show_edge_bevel_weight_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_edge_seams = {
	{(PropertyRNA *)&rna_Mesh_show_edge_sharp, (PropertyRNA *)&rna_Mesh_show_edge_bevel_weight,
	-1, "show_edge_seams", 3, 0, 0, "Draw Seams",
	"Display UV unwrapping seams",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_edge_seams_get, Mesh_show_edge_seams_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_edge_sharp = {
	{(PropertyRNA *)&rna_Mesh_show_freestyle_edge_marks, (PropertyRNA *)&rna_Mesh_show_edge_seams,
	-1, "show_edge_sharp", 3, 0, 0, "Draw Sharp",
	"Display sharp edges, used with the Edge Split modifier",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_edge_sharp_get, Mesh_show_edge_sharp_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_freestyle_edge_marks = {
	{(PropertyRNA *)&rna_Mesh_show_freestyle_face_marks, (PropertyRNA *)&rna_Mesh_show_edge_sharp,
	-1, "show_freestyle_edge_marks", 3, 0, 0, "Draw Freestyle Edge Marks",
	"Display Freestyle edge marks, used with the Freestyle renderer",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_freestyle_edge_marks_get, Mesh_show_freestyle_edge_marks_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_freestyle_face_marks = {
	{(PropertyRNA *)&rna_Mesh_show_statvis, (PropertyRNA *)&rna_Mesh_show_freestyle_edge_marks,
	-1, "show_freestyle_face_marks", 3, 0, 0, "Draw Freestyle Face Marks",
	"Display Freestyle face marks, used with the Freestyle renderer",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_freestyle_face_marks_get, Mesh_show_freestyle_face_marks_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_statvis = {
	{(PropertyRNA *)&rna_Mesh_show_extra_edge_length, (PropertyRNA *)&rna_Mesh_show_freestyle_face_marks,
	-1, "show_statvis", 3, 0, 0, "Stat Vis",
	"Display statistical information about the mesh",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data_edit_color, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_statvis_get, Mesh_show_statvis_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_extra_edge_length = {
	{(PropertyRNA *)&rna_Mesh_show_extra_edge_angle, (PropertyRNA *)&rna_Mesh_show_statvis,
	-1, "show_extra_edge_length", 3, 0, 0, "Edge Length",
	"Display selected edge lengths, using global values when set in the transform panel",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_extra_edge_length_get, Mesh_show_extra_edge_length_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_extra_edge_angle = {
	{(PropertyRNA *)&rna_Mesh_show_extra_face_angle, (PropertyRNA *)&rna_Mesh_show_extra_edge_length,
	-1, "show_extra_edge_angle", 3, 0, 0, "Edge Angle",
	"Display selected edge angle, using global values when set in the transform panel",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_extra_edge_angle_get, Mesh_show_extra_edge_angle_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_extra_face_angle = {
	{(PropertyRNA *)&rna_Mesh_show_extra_face_area, (PropertyRNA *)&rna_Mesh_show_extra_edge_angle,
	-1, "show_extra_face_angle", 3, 0, 0, "Face Angles",
	"Display the angles in the selected edges, using global values when set in the transform panel",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_extra_face_angle_get, Mesh_show_extra_face_angle_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_extra_face_area = {
	{(PropertyRNA *)&rna_Mesh_show_extra_indices, (PropertyRNA *)&rna_Mesh_show_extra_face_angle,
	-1, "show_extra_face_area", 3, 0, 0, "Face Area",
	"Display the area of selected faces, using global values when set in the transform panel",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_extra_face_area_get, Mesh_show_extra_face_area_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_show_extra_indices = {
	{(PropertyRNA *)&rna_Mesh_use_mirror_x, (PropertyRNA *)&rna_Mesh_show_extra_face_area,
	-1, "show_extra_indices", 3, 0, 0, "Indices",
	"Display the index numbers of selected vertices, edges, and faces",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_draw, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_show_extra_indices_get, Mesh_show_extra_indices_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_use_mirror_x = {
	{(PropertyRNA *)&rna_Mesh_use_mirror_topology, (PropertyRNA *)&rna_Mesh_show_extra_indices,
	-1, "use_mirror_x", 3, 0, 0, "X Mirror",
	"X Axis mirror editing",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_use_mirror_x_get, Mesh_use_mirror_x_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_use_mirror_topology = {
	{(PropertyRNA *)&rna_Mesh_use_paint_mask, (PropertyRNA *)&rna_Mesh_use_mirror_x,
	-1, "use_mirror_topology", 3, 0, 0, "Topology Mirror",
	"Use topology based mirroring (for when both sides of mesh have matching, unique topology)",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_use_mirror_topology_get, Mesh_use_mirror_topology_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_use_paint_mask = {
	{(PropertyRNA *)&rna_Mesh_use_paint_mask_vertex, (PropertyRNA *)&rna_Mesh_use_mirror_topology,
	-1, "use_paint_mask", 3, 0, 0, "Paint Mask",
	"Face selection masking for painting",
	132, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_facemask, 252248064, NULL, NULL,
	0, -1, NULL},
	Mesh_use_paint_mask_get, Mesh_use_paint_mask_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_use_paint_mask_vertex = {
	{(PropertyRNA *)&rna_Mesh_use_customdata_vertex_bevel, (PropertyRNA *)&rna_Mesh_use_paint_mask,
	-1, "use_paint_mask_vertex", 3, 0, 0, "Vertex Selection",
	"Vertex selection masking for painting (weight paint only)",
	546, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_vertmask, 252248064, NULL, NULL,
	0, -1, NULL},
	Mesh_use_paint_mask_vertex_get, Mesh_use_paint_mask_vertex_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_use_customdata_vertex_bevel = {
	{(PropertyRNA *)&rna_Mesh_use_customdata_edge_bevel, (PropertyRNA *)&rna_Mesh_use_paint_mask_vertex,
	-1, "use_customdata_vertex_bevel", 3, 0, 0, "Store Vertex Bevel Weight",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_use_customdata_vertex_bevel_get, Mesh_use_customdata_vertex_bevel_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_use_customdata_edge_bevel = {
	{(PropertyRNA *)&rna_Mesh_use_customdata_edge_crease, (PropertyRNA *)&rna_Mesh_use_customdata_vertex_bevel,
	-1, "use_customdata_edge_bevel", 3, 0, 0, "Store Edge Bevel Weight",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_use_customdata_edge_bevel_get, Mesh_use_customdata_edge_bevel_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_use_customdata_edge_crease = {
	{(PropertyRNA *)&rna_Mesh_total_vert_sel, (PropertyRNA *)&rna_Mesh_use_customdata_edge_bevel,
	-1, "use_customdata_edge_crease", 3, 0, 0, "Store Edge Crease",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_use_customdata_edge_crease_get, Mesh_use_customdata_edge_crease_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

IntPropertyRNA rna_Mesh_total_vert_sel = {
	{(PropertyRNA *)&rna_Mesh_total_edge_sel, (PropertyRNA *)&rna_Mesh_use_customdata_edge_crease,
	-1, "total_vert_sel", 2, 0, 0, "Selected Vert Total",
	"Selected vertex count in editmode",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_total_vert_sel_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

IntPropertyRNA rna_Mesh_total_edge_sel = {
	{(PropertyRNA *)&rna_Mesh_total_face_sel, (PropertyRNA *)&rna_Mesh_total_vert_sel,
	-1, "total_edge_sel", 2, 0, 0, "Selected Edge Total",
	"Selected edge count in editmode",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_total_edge_sel_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

IntPropertyRNA rna_Mesh_total_face_sel = {
	{(PropertyRNA *)&rna_Mesh_is_editmode, (PropertyRNA *)&rna_Mesh_total_edge_sel,
	-1, "total_face_sel", 2, 0, 0, "Selected Face Total",
	"Selected face count in editmode",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_total_face_sel_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

BoolPropertyRNA rna_Mesh_is_editmode = {
	{(PropertyRNA *)&rna_Mesh_animation_data, (PropertyRNA *)&rna_Mesh_total_face_sel,
	-1, "is_editmode", 2, 0, 0, "Is Editmode",
	"True when used in editmode",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_is_editmode_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

PointerPropertyRNA rna_Mesh_animation_data = {
	{(PropertyRNA *)&rna_Mesh_auto_texspace, (PropertyRNA *)&rna_Mesh_is_editmode,
	-1, "animation_data", 8388608, 0, 0, "Animation Data",
	"Animation data for this data-block",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_animation_data_get, NULL, NULL, NULL,&RNA_AnimData
};

BoolPropertyRNA rna_Mesh_auto_texspace = {
	{(PropertyRNA *)&rna_Mesh_texspace_location, (PropertyRNA *)&rna_Mesh_animation_data,
	-1, "auto_texspace", 3, 0, 0, "Auto Texture Space",
	"Adjust active object\'s texture space automatically when transforming object",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Mesh_auto_texspace_get, Mesh_auto_texspace_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

static float rna_Mesh_texspace_location_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_Mesh_texspace_location = {
	{(PropertyRNA *)&rna_Mesh_texspace_size, (PropertyRNA *)&rna_Mesh_auto_texspace,
	-1, "texspace_location", 3, 0, 0, "Texture Space Location",
	"Texture space location",
	0, "*",
	PROP_FLOAT, PROP_TRANSLATION | PROP_UNIT_LENGTH, NULL, 1, {3, 0, 0}, 3,
	rna_Mesh_update_data, 0, rna_Mesh_texspace_editable, NULL,
	0, -1, NULL},
	NULL, NULL, Mesh_texspace_location_get, Mesh_texspace_location_set, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_Mesh_texspace_location_default
};

static float rna_Mesh_texspace_size_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_Mesh_texspace_size = {
	{(PropertyRNA *)&rna_Mesh_materials, (PropertyRNA *)&rna_Mesh_texspace_location,
	-1, "texspace_size", 67108867, 0, 0, "Texture Space Size",
	"Texture space size",
	0, "*",
	PROP_FLOAT, PROP_XYZ | PROP_UNIT_NONE, NULL, 1, {3, 0, 0}, 3,
	rna_Mesh_update_data, 0, rna_Mesh_texspace_editable, NULL,
	0, -1, NULL},
	NULL, NULL, Mesh_texspace_size_get, Mesh_texspace_size_set, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_Mesh_texspace_size_default
};

CollectionPropertyRNA rna_Mesh_materials = {
	{NULL, (PropertyRNA *)&rna_Mesh_texspace_size,
	-1, "materials", 0, 0, 0, "Materials",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, &RNA_IDMaterials},
	Mesh_materials_begin, Mesh_materials_next, Mesh_materials_end, Mesh_materials_get, Mesh_materials_length, Mesh_materials_lookup_int, Mesh_materials_lookup_string, rna_IDMaterials_assign_int, &RNA_Material
};

static float rna_Mesh_transform_matrix_default[16] = {
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_Mesh_transform_matrix = {
	{(PropertyRNA *)&rna_Mesh_transform_shape_keys, NULL,
	-1, "matrix", 3, 1, 0, "",
	"Matrix",
	0, "*",
	PROP_FLOAT, PROP_MATRIX | PROP_UNIT_NONE, NULL, 2, {4, 4, 0}, 16,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0.0f, 0.0f, -FLT_MAX, FLT_MAX, 1.0f, 3, 0.0f, rna_Mesh_transform_matrix_default
};

BoolPropertyRNA rna_Mesh_transform_shape_keys = {
	{NULL, (PropertyRNA *)&rna_Mesh_transform_matrix,
	-1, "shape_keys", 3, 0, 0, "",
	"Transform Shape Keys",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

FunctionRNA rna_Mesh_transform_func = {
	{(FunctionRNA *)&rna_Mesh_flip_normals_func, NULL,
	NULL,
	{(PropertyRNA *)&rna_Mesh_transform_matrix, (PropertyRNA *)&rna_Mesh_transform_shape_keys}},
	"transform", 0, "Transform mesh vertices by a matrix (Warning: inverts normals if matrix is negative)",
	Mesh_transform_call,
	NULL
};

FunctionRNA rna_Mesh_flip_normals_func = {
	{(FunctionRNA *)&rna_Mesh_calc_normals_func, (FunctionRNA *)&rna_Mesh_transform_func,
	NULL,
	{NULL, NULL}},
	"flip_normals", 0, "Invert winding of all polygons (clears tessellation, does not handle custom normals)",
	Mesh_flip_normals_call,
	NULL
};

FunctionRNA rna_Mesh_calc_normals_func = {
	{(FunctionRNA *)&rna_Mesh_create_normals_split_func, (FunctionRNA *)&rna_Mesh_flip_normals_func,
	NULL,
	{NULL, NULL}},
	"calc_normals", 0, "Calculate vertex normals",
	Mesh_calc_normals_call,
	NULL
};

FunctionRNA rna_Mesh_create_normals_split_func = {
	{(FunctionRNA *)&rna_Mesh_calc_normals_split_func, (FunctionRNA *)&rna_Mesh_calc_normals_func,
	NULL,
	{NULL, NULL}},
	"create_normals_split", 0, "Empty split vertex normals",
	Mesh_create_normals_split_call,
	NULL
};

FunctionRNA rna_Mesh_calc_normals_split_func = {
	{(FunctionRNA *)&rna_Mesh_free_normals_split_func, (FunctionRNA *)&rna_Mesh_create_normals_split_func,
	NULL,
	{NULL, NULL}},
	"calc_normals_split", 0, "Calculate split vertex normals, which preserve sharp edges",
	Mesh_calc_normals_split_call,
	NULL
};

FunctionRNA rna_Mesh_free_normals_split_func = {
	{(FunctionRNA *)&rna_Mesh_split_faces_func, (FunctionRNA *)&rna_Mesh_calc_normals_split_func,
	NULL,
	{NULL, NULL}},
	"free_normals_split", 0, "Free split vertex normals",
	Mesh_free_normals_split_call,
	NULL
};

FunctionRNA rna_Mesh_split_faces_func = {
	{(FunctionRNA *)&rna_Mesh_calc_tangents_func, (FunctionRNA *)&rna_Mesh_free_normals_split_func,
	NULL,
	{NULL, NULL}},
	"split_faces", 0, "Split faces based on the edge angle",
	Mesh_split_faces_call,
	NULL
};

StringPropertyRNA rna_Mesh_calc_tangents_uvmap = {
	{NULL, NULL,
	-1, "uvmap", 262145, 0, 0, "",
	"Name of the UV map to use for tangent space computation",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, 64, ""
};

FunctionRNA rna_Mesh_calc_tangents_func = {
	{(FunctionRNA *)&rna_Mesh_free_tangents_func, (FunctionRNA *)&rna_Mesh_split_faces_func,
	NULL,
	{(PropertyRNA *)&rna_Mesh_calc_tangents_uvmap, (PropertyRNA *)&rna_Mesh_calc_tangents_uvmap}},
	"calc_tangents", 16, "Compute tangents and bitangent signs, to be used together with the split normals to get a complete tangent space for normal mapping (split normals are also computed if not yet present)",
	Mesh_calc_tangents_call,
	NULL
};

FunctionRNA rna_Mesh_free_tangents_func = {
	{(FunctionRNA *)&rna_Mesh_calc_tessface_func, (FunctionRNA *)&rna_Mesh_calc_tangents_func,
	NULL,
	{NULL, NULL}},
	"free_tangents", 0, "Free tangents",
	Mesh_free_tangents_call,
	NULL
};

BoolPropertyRNA rna_Mesh_calc_tessface_free_mpoly = {
	{NULL, NULL,
	-1, "free_mpoly", 3, 0, 0, "Free MPoly",
	"Free data used by polygons and loops. WARNING: This destructive operation removes regular faces, only used on temporary mesh data-blocks to reduce memory footprint of render engines and export scripts",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

FunctionRNA rna_Mesh_calc_tessface_func = {
	{(FunctionRNA *)&rna_Mesh_calc_smooth_groups_func, (FunctionRNA *)&rna_Mesh_free_tangents_func,
	NULL,
	{(PropertyRNA *)&rna_Mesh_calc_tessface_free_mpoly, (PropertyRNA *)&rna_Mesh_calc_tessface_free_mpoly}},
	"calc_tessface", 0, "Calculate face tessellation (supports editmode too)",
	Mesh_calc_tessface_call,
	NULL
};

BoolPropertyRNA rna_Mesh_calc_smooth_groups_use_bitflags = {
	{(PropertyRNA *)&rna_Mesh_calc_smooth_groups_poly_groups, NULL,
	-1, "use_bitflags", 3, 0, 0, "",
	"Produce bitflags groups instead of simple numeric values",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

static int rna_Mesh_calc_smooth_groups_poly_groups_default[1] = {
	0
};

IntPropertyRNA rna_Mesh_calc_smooth_groups_poly_groups = {
	{(PropertyRNA *)&rna_Mesh_calc_smooth_groups_groups, (PropertyRNA *)&rna_Mesh_calc_smooth_groups_use_bitflags,
	-1, "poly_groups", 131075, 2, 0, "",
	"Smooth Groups",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, NULL, 1, {1, 0, 0}, 1,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 0, INT_MIN, INT_MAX, 1, 0, rna_Mesh_calc_smooth_groups_poly_groups_default
};

IntPropertyRNA rna_Mesh_calc_smooth_groups_groups = {
	{NULL, (PropertyRNA *)&rna_Mesh_calc_smooth_groups_poly_groups,
	-1, "groups", 3, 2, 0, "groups",
	"Total number of groups",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, INT_MAX, 0, INT_MAX, 1, 0, NULL
};

FunctionRNA rna_Mesh_calc_smooth_groups_func = {
	{(FunctionRNA *)&rna_Mesh_normals_split_custom_set_func, (FunctionRNA *)&rna_Mesh_calc_tessface_func,
	NULL,
	{(PropertyRNA *)&rna_Mesh_calc_smooth_groups_use_bitflags, (PropertyRNA *)&rna_Mesh_calc_smooth_groups_groups}},
	"calc_smooth_groups", 0, "Calculate smooth groups from sharp edges",
	Mesh_calc_smooth_groups_call,
	NULL
};

static float rna_Mesh_normals_split_custom_set_normals_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_Mesh_normals_split_custom_set_normals = {
	{NULL, NULL,
	-1, "normals", 131075, 1, 0, "",
	"Normals",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, NULL, 2, {1, 3, 0}, 3,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0.0f, 0.0f, -1.0f, 1.0f, 1.0f, 3, 0.0f, rna_Mesh_normals_split_custom_set_normals_default
};

FunctionRNA rna_Mesh_normals_split_custom_set_func = {
	{(FunctionRNA *)&rna_Mesh_normals_split_custom_set_from_vertices_func, (FunctionRNA *)&rna_Mesh_calc_smooth_groups_func,
	NULL,
	{(PropertyRNA *)&rna_Mesh_normals_split_custom_set_normals, (PropertyRNA *)&rna_Mesh_normals_split_custom_set_normals}},
	"normals_split_custom_set", 16, "Define custom split normals of this mesh (use zero-vectors to keep auto ones)",
	Mesh_normals_split_custom_set_call,
	NULL
};

static float rna_Mesh_normals_split_custom_set_from_vertices_normals_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_Mesh_normals_split_custom_set_from_vertices_normals = {
	{NULL, NULL,
	-1, "normals", 131075, 1, 0, "",
	"Normals",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, NULL, 2, {1, 3, 0}, 3,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0.0f, 0.0f, -1.0f, 1.0f, 1.0f, 3, 0.0f, rna_Mesh_normals_split_custom_set_from_vertices_normals_default
};

FunctionRNA rna_Mesh_normals_split_custom_set_from_vertices_func = {
	{(FunctionRNA *)&rna_Mesh_update_func, (FunctionRNA *)&rna_Mesh_normals_split_custom_set_func,
	NULL,
	{(PropertyRNA *)&rna_Mesh_normals_split_custom_set_from_vertices_normals, (PropertyRNA *)&rna_Mesh_normals_split_custom_set_from_vertices_normals}},
	"normals_split_custom_set_from_vertices", 16, "Define custom split normals of this mesh, from vertices\' normals (use zero-vectors to keep auto ones)",
	Mesh_normals_split_custom_set_from_vertices_call,
	NULL
};

BoolPropertyRNA rna_Mesh_update_calc_edges = {
	{(PropertyRNA *)&rna_Mesh_update_calc_tessface, NULL,
	-1, "calc_edges", 3, 0, 0, "Calculate Edges",
	"Force recalculation of edges",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_update_calc_tessface = {
	{NULL, (PropertyRNA *)&rna_Mesh_update_calc_edges,
	-1, "calc_tessface", 3, 0, 0, "Calculate Tessellation",
	"Force recalculation of tessellation faces",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

FunctionRNA rna_Mesh_update_func = {
	{(FunctionRNA *)&rna_Mesh_unit_test_compare_func, (FunctionRNA *)&rna_Mesh_normals_split_custom_set_from_vertices_func,
	NULL,
	{(PropertyRNA *)&rna_Mesh_update_calc_edges, (PropertyRNA *)&rna_Mesh_update_calc_tessface}},
	"update", 8, "update",
	Mesh_update_call,
	NULL
};

PointerPropertyRNA rna_Mesh_unit_test_compare_mesh = {
	{(PropertyRNA *)&rna_Mesh_unit_test_compare_result, NULL,
	-1, "mesh", 8388608, 0, 0, "",
	"Mesh to compare to",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL,&RNA_Mesh
};

StringPropertyRNA rna_Mesh_unit_test_compare_result = {
	{NULL, (PropertyRNA *)&rna_Mesh_unit_test_compare_mesh,
	-1, "result", 262145, 2, 0, "Return value",
	"String description of result of comparison",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, 64, "nothing"
};

FunctionRNA rna_Mesh_unit_test_compare_func = {
	{(FunctionRNA *)&rna_Mesh_validate_func, (FunctionRNA *)&rna_Mesh_update_func,
	NULL,
	{(PropertyRNA *)&rna_Mesh_unit_test_compare_mesh, (PropertyRNA *)&rna_Mesh_unit_test_compare_result}},
	"unit_test_compare", 0, "unit_test_compare",
	Mesh_unit_test_compare_call,
	(PropertyRNA *)&rna_Mesh_unit_test_compare_result
};

BoolPropertyRNA rna_Mesh_validate_verbose = {
	{(PropertyRNA *)&rna_Mesh_validate_clean_customdata, NULL,
	-1, "verbose", 3, 0, 0, "Verbose",
	"Output information about the errors found",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_Mesh_validate_clean_customdata = {
	{(PropertyRNA *)&rna_Mesh_validate_result, (PropertyRNA *)&rna_Mesh_validate_verbose,
	-1, "clean_customdata", 3, 0, 0, "Clean Custom Data",
	"Remove temp/cached custom-data layers, like e.g. normals...",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL
};

BoolPropertyRNA rna_Mesh_validate_result = {
	{NULL, (PropertyRNA *)&rna_Mesh_validate_clean_customdata,
	-1, "result", 3, 2, 0, "Result",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

FunctionRNA rna_Mesh_validate_func = {
	{(FunctionRNA *)&rna_Mesh_validate_material_indices_func, (FunctionRNA *)&rna_Mesh_unit_test_compare_func,
	NULL,
	{(PropertyRNA *)&rna_Mesh_validate_verbose, (PropertyRNA *)&rna_Mesh_validate_result}},
	"validate", 0, "Validate geometry, return True when the mesh has had invalid geometry corrected/removed",
	Mesh_validate_call,
	(PropertyRNA *)&rna_Mesh_validate_result
};

BoolPropertyRNA rna_Mesh_validate_material_indices_result = {
	{NULL, NULL,
	-1, "result", 3, 2, 0, "Result",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

FunctionRNA rna_Mesh_validate_material_indices_func = {
	{NULL, (FunctionRNA *)&rna_Mesh_validate_func,
	NULL,
	{(PropertyRNA *)&rna_Mesh_validate_material_indices_result, (PropertyRNA *)&rna_Mesh_validate_material_indices_result}},
	"validate_material_indices", 0, "Validate material indices of polygons, return True when the mesh has had invalid indices corrected (to default 0)",
	Mesh_validate_material_indices_call,
	(PropertyRNA *)&rna_Mesh_validate_material_indices_result
};

StructRNA RNA_Mesh = {
	{(ContainerRNA *)&RNA_MeshVertices, (ContainerRNA *)&RNA_MaterialGameSettings,
	NULL,
	{(PropertyRNA *)&rna_Mesh_vertices, (PropertyRNA *)&rna_Mesh_materials}},
	"Mesh", NULL, NULL, 7, "Mesh",
	"Mesh data-block defining geometric surfaces",
	"*", 160,
	(PropertyRNA *)&rna_ID_name, (PropertyRNA *)&rna_ID_rna_properties,
	&RNA_ID,
	NULL,
	rna_ID_refine,
	NULL,
	NULL,
	NULL,
	NULL,
	rna_ID_idprops,
	{(FunctionRNA *)&rna_Mesh_transform_func, (FunctionRNA *)&rna_Mesh_validate_material_indices_func}
};

/* Mesh Vertices */
CollectionPropertyRNA rna_MeshVertices_rna_properties = {
	{(PropertyRNA *)&rna_MeshVertices_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertices_rna_properties_begin, MeshVertices_rna_properties_next, MeshVertices_rna_properties_end, MeshVertices_rna_properties_get, NULL, NULL, MeshVertices_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshVertices_rna_type = {
	{NULL, (PropertyRNA *)&rna_MeshVertices_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertices_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

IntPropertyRNA rna_MeshVertices_add_count = {
	{NULL, NULL,
	-1, "count", 3, 0, 0, "Count",
	"Number of vertices to add",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, INT_MAX, 0, INT_MAX, 1, 0, NULL
};

FunctionRNA rna_MeshVertices_add_func = {
	{NULL, NULL,
	NULL,
	{(PropertyRNA *)&rna_MeshVertices_add_count, (PropertyRNA *)&rna_MeshVertices_add_count}},
	"add", 16, "add",
	MeshVertices_add_call,
	NULL
};

StructRNA RNA_MeshVertices = {
	{(ContainerRNA *)&RNA_MeshEdges, (ContainerRNA *)&RNA_Mesh,
	NULL,
	{(PropertyRNA *)&rna_MeshVertices_rna_properties, (PropertyRNA *)&rna_MeshVertices_rna_type}},
	"MeshVertices", NULL, NULL, 4, "Mesh Vertices",
	"Collection of mesh vertices",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshVertices_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_MeshVertices_add_func, (FunctionRNA *)&rna_MeshVertices_add_func}
};

/* Mesh Edges */
CollectionPropertyRNA rna_MeshEdges_rna_properties = {
	{(PropertyRNA *)&rna_MeshEdges_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshEdges_rna_properties_begin, MeshEdges_rna_properties_next, MeshEdges_rna_properties_end, MeshEdges_rna_properties_get, NULL, NULL, MeshEdges_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshEdges_rna_type = {
	{NULL, (PropertyRNA *)&rna_MeshEdges_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshEdges_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

IntPropertyRNA rna_MeshEdges_add_count = {
	{NULL, NULL,
	-1, "count", 3, 0, 0, "Count",
	"Number of edges to add",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, INT_MAX, 0, INT_MAX, 1, 0, NULL
};

FunctionRNA rna_MeshEdges_add_func = {
	{NULL, NULL,
	NULL,
	{(PropertyRNA *)&rna_MeshEdges_add_count, (PropertyRNA *)&rna_MeshEdges_add_count}},
	"add", 16, "add",
	MeshEdges_add_call,
	NULL
};

StructRNA RNA_MeshEdges = {
	{(ContainerRNA *)&RNA_MeshTessFaces, (ContainerRNA *)&RNA_MeshVertices,
	NULL,
	{(PropertyRNA *)&rna_MeshEdges_rna_properties, (PropertyRNA *)&rna_MeshEdges_rna_type}},
	"MeshEdges", NULL, NULL, 4, "Mesh Edges",
	"Collection of mesh edges",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshEdges_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_MeshEdges_add_func, (FunctionRNA *)&rna_MeshEdges_add_func}
};

/* Mesh Faces */
CollectionPropertyRNA rna_MeshTessFaces_rna_properties = {
	{(PropertyRNA *)&rna_MeshTessFaces_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTessFaces_rna_properties_begin, MeshTessFaces_rna_properties_next, MeshTessFaces_rna_properties_end, MeshTessFaces_rna_properties_get, NULL, NULL, MeshTessFaces_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshTessFaces_rna_type = {
	{(PropertyRNA *)&rna_MeshTessFaces_active, (PropertyRNA *)&rna_MeshTessFaces_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTessFaces_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

IntPropertyRNA rna_MeshTessFaces_active = {
	{NULL, (PropertyRNA *)&rna_MeshTessFaces_rna_type,
	-1, "active", 3, 0, 4, "Active Face",
	"The active face for this mesh",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	offsetof(Mesh, act_face), 0, NULL},
	MeshTessFaces_active_get, MeshTessFaces_active_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	-10000, 10000, INT_MIN, INT_MAX, 1, 0, NULL
};

IntPropertyRNA rna_MeshTessFaces_add_count = {
	{NULL, NULL,
	-1, "count", 3, 0, 0, "Count",
	"Number of faces to add",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, INT_MAX, 0, INT_MAX, 1, 0, NULL
};

FunctionRNA rna_MeshTessFaces_add_func = {
	{NULL, NULL,
	NULL,
	{(PropertyRNA *)&rna_MeshTessFaces_add_count, (PropertyRNA *)&rna_MeshTessFaces_add_count}},
	"add", 16, "add",
	MeshTessFaces_add_call,
	NULL
};

StructRNA RNA_MeshTessFaces = {
	{(ContainerRNA *)&RNA_MeshLoops, (ContainerRNA *)&RNA_MeshEdges,
	NULL,
	{(PropertyRNA *)&rna_MeshTessFaces_rna_properties, (PropertyRNA *)&rna_MeshTessFaces_active}},
	"MeshTessFaces", NULL, NULL, 4, "Mesh Faces",
	"Collection of mesh faces",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshTessFaces_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_MeshTessFaces_add_func, (FunctionRNA *)&rna_MeshTessFaces_add_func}
};

/* Mesh Loops */
CollectionPropertyRNA rna_MeshLoops_rna_properties = {
	{(PropertyRNA *)&rna_MeshLoops_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoops_rna_properties_begin, MeshLoops_rna_properties_next, MeshLoops_rna_properties_end, MeshLoops_rna_properties_get, NULL, NULL, MeshLoops_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshLoops_rna_type = {
	{NULL, (PropertyRNA *)&rna_MeshLoops_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoops_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

IntPropertyRNA rna_MeshLoops_add_count = {
	{NULL, NULL,
	-1, "count", 3, 0, 0, "Count",
	"Number of loops to add",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, INT_MAX, 0, INT_MAX, 1, 0, NULL
};

FunctionRNA rna_MeshLoops_add_func = {
	{NULL, NULL,
	NULL,
	{(PropertyRNA *)&rna_MeshLoops_add_count, (PropertyRNA *)&rna_MeshLoops_add_count}},
	"add", 16, "add",
	MeshLoops_add_call,
	NULL
};

StructRNA RNA_MeshLoops = {
	{(ContainerRNA *)&RNA_MeshPolygons, (ContainerRNA *)&RNA_MeshTessFaces,
	NULL,
	{(PropertyRNA *)&rna_MeshLoops_rna_properties, (PropertyRNA *)&rna_MeshLoops_rna_type}},
	"MeshLoops", NULL, NULL, 4, "Mesh Loops",
	"Collection of mesh loops",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshLoops_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_MeshLoops_add_func, (FunctionRNA *)&rna_MeshLoops_add_func}
};

/* Mesh Polygons */
CollectionPropertyRNA rna_MeshPolygons_rna_properties = {
	{(PropertyRNA *)&rna_MeshPolygons_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygons_rna_properties_begin, MeshPolygons_rna_properties_next, MeshPolygons_rna_properties_end, MeshPolygons_rna_properties_get, NULL, NULL, MeshPolygons_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshPolygons_rna_type = {
	{(PropertyRNA *)&rna_MeshPolygons_active, (PropertyRNA *)&rna_MeshPolygons_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygons_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

IntPropertyRNA rna_MeshPolygons_active = {
	{NULL, (PropertyRNA *)&rna_MeshPolygons_rna_type,
	-1, "active", 3, 0, 4, "Active Polygon",
	"The active polygon for this mesh",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	offsetof(Mesh, act_face), 0, NULL},
	MeshPolygons_active_get, MeshPolygons_active_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	-10000, 10000, INT_MIN, INT_MAX, 1, 0, NULL
};

IntPropertyRNA rna_MeshPolygons_add_count = {
	{NULL, NULL,
	-1, "count", 3, 0, 0, "Count",
	"Number of polygons to add",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, INT_MAX, 0, INT_MAX, 1, 0, NULL
};

FunctionRNA rna_MeshPolygons_add_func = {
	{NULL, NULL,
	NULL,
	{(PropertyRNA *)&rna_MeshPolygons_add_count, (PropertyRNA *)&rna_MeshPolygons_add_count}},
	"add", 16, "add",
	MeshPolygons_add_call,
	NULL
};

StructRNA RNA_MeshPolygons = {
	{(ContainerRNA *)&RNA_UVLoopLayers, (ContainerRNA *)&RNA_MeshLoops,
	NULL,
	{(PropertyRNA *)&rna_MeshPolygons_rna_properties, (PropertyRNA *)&rna_MeshPolygons_active}},
	"MeshPolygons", NULL, NULL, 4, "Mesh Polygons",
	"Collection of mesh polygons",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshPolygons_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_MeshPolygons_add_func, (FunctionRNA *)&rna_MeshPolygons_add_func}
};

/* UV Loop Layers */
CollectionPropertyRNA rna_UVLoopLayers_rna_properties = {
	{(PropertyRNA *)&rna_UVLoopLayers_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	UVLoopLayers_rna_properties_begin, UVLoopLayers_rna_properties_next, UVLoopLayers_rna_properties_end, UVLoopLayers_rna_properties_get, NULL, NULL, UVLoopLayers_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_UVLoopLayers_rna_type = {
	{(PropertyRNA *)&rna_UVLoopLayers_active, (PropertyRNA *)&rna_UVLoopLayers_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	UVLoopLayers_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

PointerPropertyRNA rna_UVLoopLayers_active = {
	{(PropertyRNA *)&rna_UVLoopLayers_active_index, (PropertyRNA *)&rna_UVLoopLayers_rna_type,
	-1, "active", 41943041, 0, 0, "Active UV loop layer",
	"Active UV loop layer",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	UVLoopLayers_active_get, UVLoopLayers_active_set, NULL, NULL,&RNA_MeshUVLoopLayer
};

IntPropertyRNA rna_UVLoopLayers_active_index = {
	{NULL, (PropertyRNA *)&rna_UVLoopLayers_active,
	-1, "active_index", 3, 0, 0, "Active UV loop layer Index",
	"Active UV loop layer index",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	UVLoopLayers_active_index_get, UVLoopLayers_active_index_set, NULL, NULL, rna_Mesh_uv_layer_index_range, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

StructRNA RNA_UVLoopLayers = {
	{(ContainerRNA *)&RNA_TessfaceUVTextures, (ContainerRNA *)&RNA_MeshPolygons,
	NULL,
	{(PropertyRNA *)&rna_UVLoopLayers_rna_properties, (PropertyRNA *)&rna_UVLoopLayers_active_index}},
	"UVLoopLayers", NULL, NULL, 4, "UV Loop Layers",
	"Collection of uv loop layers",
	"*", 17,
	NULL, (PropertyRNA *)&rna_UVLoopLayers_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* UV Maps */
CollectionPropertyRNA rna_TessfaceUVTextures_rna_properties = {
	{(PropertyRNA *)&rna_TessfaceUVTextures_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	TessfaceUVTextures_rna_properties_begin, TessfaceUVTextures_rna_properties_next, TessfaceUVTextures_rna_properties_end, TessfaceUVTextures_rna_properties_get, NULL, NULL, TessfaceUVTextures_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_TessfaceUVTextures_rna_type = {
	{(PropertyRNA *)&rna_TessfaceUVTextures_active, (PropertyRNA *)&rna_TessfaceUVTextures_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	TessfaceUVTextures_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

PointerPropertyRNA rna_TessfaceUVTextures_active = {
	{(PropertyRNA *)&rna_TessfaceUVTextures_active_index, (PropertyRNA *)&rna_TessfaceUVTextures_rna_type,
	-1, "active", 8388608, 0, 0, "Active UV Map",
	"Active UV Map",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	TessfaceUVTextures_active_get, NULL, NULL, NULL,&RNA_MeshTextureFaceLayer
};

IntPropertyRNA rna_TessfaceUVTextures_active_index = {
	{NULL, (PropertyRNA *)&rna_TessfaceUVTextures_active,
	-1, "active_index", 3, 0, 0, "Active UV Map Index",
	"Active UV Map index",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	TessfaceUVTextures_active_index_get, TessfaceUVTextures_active_index_set, NULL, NULL, rna_Mesh_uv_texture_index_range, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

StringPropertyRNA rna_TessfaceUVTextures_new_name = {
	{(PropertyRNA *)&rna_TessfaceUVTextures_new_layer, NULL,
	-1, "name", 262145, 0, 0, "",
	"UV map name",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, 0, "UVMap"
};

PointerPropertyRNA rna_TessfaceUVTextures_new_layer = {
	{NULL, (PropertyRNA *)&rna_TessfaceUVTextures_new_name,
	-1, "layer", 8388608, 6, 0, "",
	"The newly created layer",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL,&RNA_MeshTextureFaceLayer
};

FunctionRNA rna_TessfaceUVTextures_new_func = {
	{NULL, NULL,
	NULL,
	{(PropertyRNA *)&rna_TessfaceUVTextures_new_name, (PropertyRNA *)&rna_TessfaceUVTextures_new_layer}},
	"new", 16, "Add a UV tessface-texture layer to Mesh (only for meshes with no polygons)",
	TessfaceUVTextures_new_call,
	(PropertyRNA *)&rna_TessfaceUVTextures_new_layer
};

StructRNA RNA_TessfaceUVTextures = {
	{(ContainerRNA *)&RNA_UVTextures, (ContainerRNA *)&RNA_UVLoopLayers,
	NULL,
	{(PropertyRNA *)&rna_TessfaceUVTextures_rna_properties, (PropertyRNA *)&rna_TessfaceUVTextures_active_index}},
	"TessfaceUVTextures", NULL, NULL, 4, "UV Maps",
	"Collection of UV maps for tessellated faces",
	"*", 17,
	NULL, (PropertyRNA *)&rna_TessfaceUVTextures_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_TessfaceUVTextures_new_func, (FunctionRNA *)&rna_TessfaceUVTextures_new_func}
};

/* UV Maps */
CollectionPropertyRNA rna_UVTextures_rna_properties = {
	{(PropertyRNA *)&rna_UVTextures_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	UVTextures_rna_properties_begin, UVTextures_rna_properties_next, UVTextures_rna_properties_end, UVTextures_rna_properties_get, NULL, NULL, UVTextures_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_UVTextures_rna_type = {
	{(PropertyRNA *)&rna_UVTextures_active, (PropertyRNA *)&rna_UVTextures_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	UVTextures_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

PointerPropertyRNA rna_UVTextures_active = {
	{(PropertyRNA *)&rna_UVTextures_active_index, (PropertyRNA *)&rna_UVTextures_rna_type,
	-1, "active", 41943041, 0, 0, "Active UV Map",
	"Active UV Map",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	UVTextures_active_get, UVTextures_active_set, NULL, NULL,&RNA_MeshTexturePolyLayer
};

IntPropertyRNA rna_UVTextures_active_index = {
	{NULL, (PropertyRNA *)&rna_UVTextures_active,
	-1, "active_index", 3, 0, 0, "Active UV Map Index",
	"Active UV Map index",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	UVTextures_active_index_get, UVTextures_active_index_set, NULL, NULL, rna_Mesh_uv_texture_index_range, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

StringPropertyRNA rna_UVTextures_new_name = {
	{(PropertyRNA *)&rna_UVTextures_new_layer, NULL,
	-1, "name", 262145, 0, 0, "",
	"UV map name",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, 0, "UVMap"
};

PointerPropertyRNA rna_UVTextures_new_layer = {
	{NULL, (PropertyRNA *)&rna_UVTextures_new_name,
	-1, "layer", 8388608, 6, 0, "",
	"The newly created layer",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL,&RNA_MeshTexturePolyLayer
};

FunctionRNA rna_UVTextures_new_func = {
	{(FunctionRNA *)&rna_UVTextures_remove_func, NULL,
	NULL,
	{(PropertyRNA *)&rna_UVTextures_new_name, (PropertyRNA *)&rna_UVTextures_new_layer}},
	"new", 0, "Add a UV map layer to Mesh",
	UVTextures_new_call,
	(PropertyRNA *)&rna_UVTextures_new_layer
};

PointerPropertyRNA rna_UVTextures_remove_layer = {
	{NULL, NULL,
	-1, "layer", 8650752, 1, 0, "",
	"The layer to remove",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL,&RNA_MeshTexturePolyLayer
};

FunctionRNA rna_UVTextures_remove_func = {
	{NULL, (FunctionRNA *)&rna_UVTextures_new_func,
	NULL,
	{(PropertyRNA *)&rna_UVTextures_remove_layer, (PropertyRNA *)&rna_UVTextures_remove_layer}},
	"remove", 16, "Remove a vertex color layer",
	UVTextures_remove_call,
	NULL
};

StructRNA RNA_UVTextures = {
	{(ContainerRNA *)&RNA_VertexColors, (ContainerRNA *)&RNA_TessfaceUVTextures,
	NULL,
	{(PropertyRNA *)&rna_UVTextures_rna_properties, (PropertyRNA *)&rna_UVTextures_active_index}},
	"UVTextures", NULL, NULL, 4, "UV Maps",
	"Collection of UV maps",
	"*", 17,
	NULL, (PropertyRNA *)&rna_UVTextures_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_UVTextures_new_func, (FunctionRNA *)&rna_UVTextures_remove_func}
};

/* Vertex Colors */
CollectionPropertyRNA rna_VertexColors_rna_properties = {
	{(PropertyRNA *)&rna_VertexColors_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	VertexColors_rna_properties_begin, VertexColors_rna_properties_next, VertexColors_rna_properties_end, VertexColors_rna_properties_get, NULL, NULL, VertexColors_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_VertexColors_rna_type = {
	{(PropertyRNA *)&rna_VertexColors_active, (PropertyRNA *)&rna_VertexColors_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	VertexColors_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

PointerPropertyRNA rna_VertexColors_active = {
	{(PropertyRNA *)&rna_VertexColors_active_index, (PropertyRNA *)&rna_VertexColors_rna_type,
	-1, "active", 8388608, 0, 0, "Active Vertex Color Layer",
	"Active vertex color layer",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	VertexColors_active_get, NULL, NULL, NULL,&RNA_MeshColorLayer
};

IntPropertyRNA rna_VertexColors_active_index = {
	{NULL, (PropertyRNA *)&rna_VertexColors_active,
	-1, "active_index", 3, 0, 0, "Active Vertex Color Index",
	"Active vertex color index",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	VertexColors_active_index_get, VertexColors_active_index_set, NULL, NULL, rna_Mesh_vertex_color_index_range, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

StringPropertyRNA rna_VertexColors_new_name = {
	{(PropertyRNA *)&rna_VertexColors_new_layer, NULL,
	-1, "name", 262145, 0, 0, "",
	"Vertex color name",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, 0, "Col"
};

PointerPropertyRNA rna_VertexColors_new_layer = {
	{NULL, (PropertyRNA *)&rna_VertexColors_new_name,
	-1, "layer", 8388608, 6, 0, "",
	"The newly created layer",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL,&RNA_MeshColorLayer
};

FunctionRNA rna_VertexColors_new_func = {
	{NULL, NULL,
	NULL,
	{(PropertyRNA *)&rna_VertexColors_new_name, (PropertyRNA *)&rna_VertexColors_new_layer}},
	"new", 16, "Add a vertex color layer to Mesh",
	VertexColors_new_call,
	(PropertyRNA *)&rna_VertexColors_new_layer
};

StructRNA RNA_VertexColors = {
	{(ContainerRNA *)&RNA_LoopColors, (ContainerRNA *)&RNA_UVTextures,
	NULL,
	{(PropertyRNA *)&rna_VertexColors_rna_properties, (PropertyRNA *)&rna_VertexColors_active_index}},
	"VertexColors", NULL, NULL, 4, "Vertex Colors",
	"Collection of vertex colors",
	"*", 17,
	NULL, (PropertyRNA *)&rna_VertexColors_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_VertexColors_new_func, (FunctionRNA *)&rna_VertexColors_new_func}
};

/* Loop Colors */
CollectionPropertyRNA rna_LoopColors_rna_properties = {
	{(PropertyRNA *)&rna_LoopColors_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	LoopColors_rna_properties_begin, LoopColors_rna_properties_next, LoopColors_rna_properties_end, LoopColors_rna_properties_get, NULL, NULL, LoopColors_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_LoopColors_rna_type = {
	{(PropertyRNA *)&rna_LoopColors_active, (PropertyRNA *)&rna_LoopColors_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	LoopColors_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

PointerPropertyRNA rna_LoopColors_active = {
	{(PropertyRNA *)&rna_LoopColors_active_index, (PropertyRNA *)&rna_LoopColors_rna_type,
	-1, "active", 41943041, 0, 0, "Active Vertex Color Layer",
	"Active vertex color layer",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	LoopColors_active_get, LoopColors_active_set, NULL, NULL,&RNA_MeshLoopColorLayer
};

IntPropertyRNA rna_LoopColors_active_index = {
	{NULL, (PropertyRNA *)&rna_LoopColors_active,
	-1, "active_index", 3, 0, 0, "Active Vertex Color Index",
	"Active vertex color index",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	LoopColors_active_index_get, LoopColors_active_index_set, NULL, NULL, rna_Mesh_vertex_color_index_range, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

StringPropertyRNA rna_LoopColors_new_name = {
	{(PropertyRNA *)&rna_LoopColors_new_layer, NULL,
	-1, "name", 262145, 0, 0, "",
	"Vertex color name",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, 0, "Col"
};

PointerPropertyRNA rna_LoopColors_new_layer = {
	{NULL, (PropertyRNA *)&rna_LoopColors_new_name,
	-1, "layer", 8388608, 6, 0, "",
	"The newly created layer",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL,&RNA_MeshLoopColorLayer
};

FunctionRNA rna_LoopColors_new_func = {
	{(FunctionRNA *)&rna_LoopColors_remove_func, NULL,
	NULL,
	{(PropertyRNA *)&rna_LoopColors_new_name, (PropertyRNA *)&rna_LoopColors_new_layer}},
	"new", 0, "Add a vertex color layer to Mesh",
	LoopColors_new_call,
	(PropertyRNA *)&rna_LoopColors_new_layer
};

PointerPropertyRNA rna_LoopColors_remove_layer = {
	{NULL, NULL,
	-1, "layer", 262144, 1, 0, "",
	"The layer to remove",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL,&RNA_MeshLoopColorLayer
};

FunctionRNA rna_LoopColors_remove_func = {
	{NULL, (FunctionRNA *)&rna_LoopColors_new_func,
	NULL,
	{(PropertyRNA *)&rna_LoopColors_remove_layer, (PropertyRNA *)&rna_LoopColors_remove_layer}},
	"remove", 16, "Remove a vertex color layer",
	LoopColors_remove_call,
	NULL
};

StructRNA RNA_LoopColors = {
	{(ContainerRNA *)&RNA_VertexFloatProperties, (ContainerRNA *)&RNA_VertexColors,
	NULL,
	{(PropertyRNA *)&rna_LoopColors_rna_properties, (PropertyRNA *)&rna_LoopColors_active_index}},
	"LoopColors", NULL, NULL, 4, "Loop Colors",
	"Collection of vertex colors",
	"*", 17,
	NULL, (PropertyRNA *)&rna_LoopColors_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_LoopColors_new_func, (FunctionRNA *)&rna_LoopColors_remove_func}
};

/* Vertex Float Properties */
CollectionPropertyRNA rna_VertexFloatProperties_rna_properties = {
	{(PropertyRNA *)&rna_VertexFloatProperties_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	VertexFloatProperties_rna_properties_begin, VertexFloatProperties_rna_properties_next, VertexFloatProperties_rna_properties_end, VertexFloatProperties_rna_properties_get, NULL, NULL, VertexFloatProperties_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_VertexFloatProperties_rna_type = {
	{NULL, (PropertyRNA *)&rna_VertexFloatProperties_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	VertexFloatProperties_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_VertexFloatProperties_new_name = {
	{(PropertyRNA *)&rna_VertexFloatProperties_new_layer, NULL,
	-1, "name", 262145, 0, 0, "",
	"Float property name",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, 0, "Float Prop"
};

PointerPropertyRNA rna_VertexFloatProperties_new_layer = {
	{NULL, (PropertyRNA *)&rna_VertexFloatProperties_new_name,
	-1, "layer", 8388608, 6, 0, "",
	"The newly created layer",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL,&RNA_MeshVertexFloatPropertyLayer
};

FunctionRNA rna_VertexFloatProperties_new_func = {
	{NULL, NULL,
	NULL,
	{(PropertyRNA *)&rna_VertexFloatProperties_new_name, (PropertyRNA *)&rna_VertexFloatProperties_new_layer}},
	"new", 0, "Add a float property layer to Mesh",
	VertexFloatProperties_new_call,
	(PropertyRNA *)&rna_VertexFloatProperties_new_layer
};

StructRNA RNA_VertexFloatProperties = {
	{(ContainerRNA *)&RNA_VertexIntProperties, (ContainerRNA *)&RNA_LoopColors,
	NULL,
	{(PropertyRNA *)&rna_VertexFloatProperties_rna_properties, (PropertyRNA *)&rna_VertexFloatProperties_rna_type}},
	"VertexFloatProperties", NULL, NULL, 4, "Vertex Float Properties",
	"Collection of float properties",
	"*", 17,
	NULL, (PropertyRNA *)&rna_VertexFloatProperties_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_VertexFloatProperties_new_func, (FunctionRNA *)&rna_VertexFloatProperties_new_func}
};

/* Vertex Int Properties */
CollectionPropertyRNA rna_VertexIntProperties_rna_properties = {
	{(PropertyRNA *)&rna_VertexIntProperties_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	VertexIntProperties_rna_properties_begin, VertexIntProperties_rna_properties_next, VertexIntProperties_rna_properties_end, VertexIntProperties_rna_properties_get, NULL, NULL, VertexIntProperties_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_VertexIntProperties_rna_type = {
	{NULL, (PropertyRNA *)&rna_VertexIntProperties_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	VertexIntProperties_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_VertexIntProperties_new_name = {
	{(PropertyRNA *)&rna_VertexIntProperties_new_layer, NULL,
	-1, "name", 262145, 0, 0, "",
	"Int property name",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, 0, "Int Prop"
};

PointerPropertyRNA rna_VertexIntProperties_new_layer = {
	{NULL, (PropertyRNA *)&rna_VertexIntProperties_new_name,
	-1, "layer", 8388608, 6, 0, "",
	"The newly created layer",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL,&RNA_MeshVertexIntPropertyLayer
};

FunctionRNA rna_VertexIntProperties_new_func = {
	{NULL, NULL,
	NULL,
	{(PropertyRNA *)&rna_VertexIntProperties_new_name, (PropertyRNA *)&rna_VertexIntProperties_new_layer}},
	"new", 0, "Add a integer property layer to Mesh",
	VertexIntProperties_new_call,
	(PropertyRNA *)&rna_VertexIntProperties_new_layer
};

StructRNA RNA_VertexIntProperties = {
	{(ContainerRNA *)&RNA_VertexStringProperties, (ContainerRNA *)&RNA_VertexFloatProperties,
	NULL,
	{(PropertyRNA *)&rna_VertexIntProperties_rna_properties, (PropertyRNA *)&rna_VertexIntProperties_rna_type}},
	"VertexIntProperties", NULL, NULL, 4, "Vertex Int Properties",
	"Collection of int properties",
	"*", 17,
	NULL, (PropertyRNA *)&rna_VertexIntProperties_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_VertexIntProperties_new_func, (FunctionRNA *)&rna_VertexIntProperties_new_func}
};

/* Vertex String Properties */
CollectionPropertyRNA rna_VertexStringProperties_rna_properties = {
	{(PropertyRNA *)&rna_VertexStringProperties_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	VertexStringProperties_rna_properties_begin, VertexStringProperties_rna_properties_next, VertexStringProperties_rna_properties_end, VertexStringProperties_rna_properties_get, NULL, NULL, VertexStringProperties_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_VertexStringProperties_rna_type = {
	{NULL, (PropertyRNA *)&rna_VertexStringProperties_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	VertexStringProperties_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_VertexStringProperties_new_name = {
	{(PropertyRNA *)&rna_VertexStringProperties_new_layer, NULL,
	-1, "name", 262145, 0, 0, "",
	"String property name",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, 0, "String Prop"
};

PointerPropertyRNA rna_VertexStringProperties_new_layer = {
	{NULL, (PropertyRNA *)&rna_VertexStringProperties_new_name,
	-1, "layer", 8388608, 6, 0, "",
	"The newly created layer",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL,&RNA_MeshVertexStringPropertyLayer
};

FunctionRNA rna_VertexStringProperties_new_func = {
	{NULL, NULL,
	NULL,
	{(PropertyRNA *)&rna_VertexStringProperties_new_name, (PropertyRNA *)&rna_VertexStringProperties_new_layer}},
	"new", 0, "Add a string property layer to Mesh",
	VertexStringProperties_new_call,
	(PropertyRNA *)&rna_VertexStringProperties_new_layer
};

StructRNA RNA_VertexStringProperties = {
	{(ContainerRNA *)&RNA_PolygonFloatProperties, (ContainerRNA *)&RNA_VertexIntProperties,
	NULL,
	{(PropertyRNA *)&rna_VertexStringProperties_rna_properties, (PropertyRNA *)&rna_VertexStringProperties_rna_type}},
	"VertexStringProperties", NULL, NULL, 4, "Vertex String Properties",
	"Collection of string properties",
	"*", 17,
	NULL, (PropertyRNA *)&rna_VertexStringProperties_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_VertexStringProperties_new_func, (FunctionRNA *)&rna_VertexStringProperties_new_func}
};

/* Polygon Float Properties */
CollectionPropertyRNA rna_PolygonFloatProperties_rna_properties = {
	{(PropertyRNA *)&rna_PolygonFloatProperties_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	PolygonFloatProperties_rna_properties_begin, PolygonFloatProperties_rna_properties_next, PolygonFloatProperties_rna_properties_end, PolygonFloatProperties_rna_properties_get, NULL, NULL, PolygonFloatProperties_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_PolygonFloatProperties_rna_type = {
	{NULL, (PropertyRNA *)&rna_PolygonFloatProperties_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	PolygonFloatProperties_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_PolygonFloatProperties_new_name = {
	{(PropertyRNA *)&rna_PolygonFloatProperties_new_layer, NULL,
	-1, "name", 262145, 0, 0, "",
	"Float property name",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, 0, "Float Prop"
};

PointerPropertyRNA rna_PolygonFloatProperties_new_layer = {
	{NULL, (PropertyRNA *)&rna_PolygonFloatProperties_new_name,
	-1, "layer", 8388608, 6, 0, "",
	"The newly created layer",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL,&RNA_MeshPolygonFloatPropertyLayer
};

FunctionRNA rna_PolygonFloatProperties_new_func = {
	{NULL, NULL,
	NULL,
	{(PropertyRNA *)&rna_PolygonFloatProperties_new_name, (PropertyRNA *)&rna_PolygonFloatProperties_new_layer}},
	"new", 0, "Add a float property layer to Mesh",
	PolygonFloatProperties_new_call,
	(PropertyRNA *)&rna_PolygonFloatProperties_new_layer
};

StructRNA RNA_PolygonFloatProperties = {
	{(ContainerRNA *)&RNA_PolygonIntProperties, (ContainerRNA *)&RNA_VertexStringProperties,
	NULL,
	{(PropertyRNA *)&rna_PolygonFloatProperties_rna_properties, (PropertyRNA *)&rna_PolygonFloatProperties_rna_type}},
	"PolygonFloatProperties", NULL, NULL, 4, "Polygon Float Properties",
	"Collection of float properties",
	"*", 17,
	NULL, (PropertyRNA *)&rna_PolygonFloatProperties_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_PolygonFloatProperties_new_func, (FunctionRNA *)&rna_PolygonFloatProperties_new_func}
};

/* Polygon Int Properties */
CollectionPropertyRNA rna_PolygonIntProperties_rna_properties = {
	{(PropertyRNA *)&rna_PolygonIntProperties_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	PolygonIntProperties_rna_properties_begin, PolygonIntProperties_rna_properties_next, PolygonIntProperties_rna_properties_end, PolygonIntProperties_rna_properties_get, NULL, NULL, PolygonIntProperties_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_PolygonIntProperties_rna_type = {
	{NULL, (PropertyRNA *)&rna_PolygonIntProperties_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	PolygonIntProperties_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_PolygonIntProperties_new_name = {
	{(PropertyRNA *)&rna_PolygonIntProperties_new_layer, NULL,
	-1, "name", 262145, 0, 0, "",
	"Int property name",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, 0, "Int Prop"
};

PointerPropertyRNA rna_PolygonIntProperties_new_layer = {
	{NULL, (PropertyRNA *)&rna_PolygonIntProperties_new_name,
	-1, "layer", 8388608, 6, 0, "",
	"The newly created layer",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL,&RNA_MeshPolygonIntPropertyLayer
};

FunctionRNA rna_PolygonIntProperties_new_func = {
	{NULL, NULL,
	NULL,
	{(PropertyRNA *)&rna_PolygonIntProperties_new_name, (PropertyRNA *)&rna_PolygonIntProperties_new_layer}},
	"new", 0, "Add a integer property layer to Mesh",
	PolygonIntProperties_new_call,
	(PropertyRNA *)&rna_PolygonIntProperties_new_layer
};

StructRNA RNA_PolygonIntProperties = {
	{(ContainerRNA *)&RNA_PolygonStringProperties, (ContainerRNA *)&RNA_PolygonFloatProperties,
	NULL,
	{(PropertyRNA *)&rna_PolygonIntProperties_rna_properties, (PropertyRNA *)&rna_PolygonIntProperties_rna_type}},
	"PolygonIntProperties", NULL, NULL, 4, "Polygon Int Properties",
	"Collection of int properties",
	"*", 17,
	NULL, (PropertyRNA *)&rna_PolygonIntProperties_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_PolygonIntProperties_new_func, (FunctionRNA *)&rna_PolygonIntProperties_new_func}
};

/* Polygon String Properties */
CollectionPropertyRNA rna_PolygonStringProperties_rna_properties = {
	{(PropertyRNA *)&rna_PolygonStringProperties_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	PolygonStringProperties_rna_properties_begin, PolygonStringProperties_rna_properties_next, PolygonStringProperties_rna_properties_end, PolygonStringProperties_rna_properties_get, NULL, NULL, PolygonStringProperties_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_PolygonStringProperties_rna_type = {
	{NULL, (PropertyRNA *)&rna_PolygonStringProperties_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	PolygonStringProperties_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_PolygonStringProperties_new_name = {
	{(PropertyRNA *)&rna_PolygonStringProperties_new_layer, NULL,
	-1, "name", 262145, 0, 0, "",
	"String property name",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, 0, "String Prop"
};

PointerPropertyRNA rna_PolygonStringProperties_new_layer = {
	{NULL, (PropertyRNA *)&rna_PolygonStringProperties_new_name,
	-1, "layer", 8388608, 6, 0, "",
	"The newly created layer",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL,&RNA_MeshPolygonStringPropertyLayer
};

FunctionRNA rna_PolygonStringProperties_new_func = {
	{NULL, NULL,
	NULL,
	{(PropertyRNA *)&rna_PolygonStringProperties_new_name, (PropertyRNA *)&rna_PolygonStringProperties_new_layer}},
	"new", 0, "Add a string property layer to Mesh",
	PolygonStringProperties_new_call,
	(PropertyRNA *)&rna_PolygonStringProperties_new_layer
};

StructRNA RNA_PolygonStringProperties = {
	{(ContainerRNA *)&RNA_MeshSkinVertexLayer, (ContainerRNA *)&RNA_PolygonIntProperties,
	NULL,
	{(PropertyRNA *)&rna_PolygonStringProperties_rna_properties, (PropertyRNA *)&rna_PolygonStringProperties_rna_type}},
	"PolygonStringProperties", NULL, NULL, 4, "Polygon String Properties",
	"Collection of string properties",
	"*", 17,
	NULL, (PropertyRNA *)&rna_PolygonStringProperties_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_PolygonStringProperties_new_func, (FunctionRNA *)&rna_PolygonStringProperties_new_func}
};

/* Mesh Skin Vertex Layer */
CollectionPropertyRNA rna_MeshSkinVertexLayer_rna_properties = {
	{(PropertyRNA *)&rna_MeshSkinVertexLayer_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshSkinVertexLayer_rna_properties_begin, MeshSkinVertexLayer_rna_properties_next, MeshSkinVertexLayer_rna_properties_end, MeshSkinVertexLayer_rna_properties_get, NULL, NULL, MeshSkinVertexLayer_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshSkinVertexLayer_rna_type = {
	{(PropertyRNA *)&rna_MeshSkinVertexLayer_name, (PropertyRNA *)&rna_MeshSkinVertexLayer_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshSkinVertexLayer_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_MeshSkinVertexLayer_name = {
	{(PropertyRNA *)&rna_MeshSkinVertexLayer_data, (PropertyRNA *)&rna_MeshSkinVertexLayer_rna_type,
	-1, "name", 262145, 0, 0, "Name",
	"Name of skin layer",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {64, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshSkinVertexLayer_name_get, MeshSkinVertexLayer_name_length, MeshSkinVertexLayer_name_set, NULL, NULL, NULL, 64, ""
};

CollectionPropertyRNA rna_MeshSkinVertexLayer_data = {
	{NULL, (PropertyRNA *)&rna_MeshSkinVertexLayer_name,
	-1, "data", 0, 0, 8, "Data",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshSkinVertexLayer_data_begin, MeshSkinVertexLayer_data_next, MeshSkinVertexLayer_data_end, MeshSkinVertexLayer_data_get, MeshSkinVertexLayer_data_length, MeshSkinVertexLayer_data_lookup_int, NULL, NULL, &RNA_MeshSkinVertex
};

StructRNA RNA_MeshSkinVertexLayer = {
	{(ContainerRNA *)&RNA_MeshSkinVertex, (ContainerRNA *)&RNA_PolygonStringProperties,
	NULL,
	{(PropertyRNA *)&rna_MeshSkinVertexLayer_rna_properties, (PropertyRNA *)&rna_MeshSkinVertexLayer_data}},
	"MeshSkinVertexLayer", NULL, NULL, 4, "Mesh Skin Vertex Layer",
	"Per-vertex skin data for use with the Skin modifier",
	"*", 17,
	(PropertyRNA *)&rna_MeshSkinVertexLayer_name, (PropertyRNA *)&rna_MeshSkinVertexLayer_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshSkinVertexLayer_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Skin Vertex */
CollectionPropertyRNA rna_MeshSkinVertex_rna_properties = {
	{(PropertyRNA *)&rna_MeshSkinVertex_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshSkinVertex_rna_properties_begin, MeshSkinVertex_rna_properties_next, MeshSkinVertex_rna_properties_end, MeshSkinVertex_rna_properties_get, NULL, NULL, MeshSkinVertex_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshSkinVertex_rna_type = {
	{(PropertyRNA *)&rna_MeshSkinVertex_radius, (PropertyRNA *)&rna_MeshSkinVertex_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshSkinVertex_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

static float rna_MeshSkinVertex_radius_default[2] = {
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshSkinVertex_radius = {
	{(PropertyRNA *)&rna_MeshSkinVertex_use_root, (PropertyRNA *)&rna_MeshSkinVertex_rna_type,
	-1, "radius", 3, 0, 4, "Radius",
	"Radius of the skin",
	0, "*",
	PROP_FLOAT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 1, {2, 0, 0}, 2,
	rna_Mesh_update_data, 0, NULL, NULL,
	offsetof(MVertSkin, radius), 4, NULL},
	NULL, NULL, MeshSkinVertex_radius_get, MeshSkinVertex_radius_set, NULL, NULL, NULL, NULL, NULL, NULL, 0.0010000000f, 100.0f, 0.0f, FLT_MAX, 1.0f, 3, 0.0f, rna_MeshSkinVertex_radius_default
};

BoolPropertyRNA rna_MeshSkinVertex_use_root = {
	{(PropertyRNA *)&rna_MeshSkinVertex_use_loose, (PropertyRNA *)&rna_MeshSkinVertex_radius,
	-1, "use_root", 3, 0, 0, "Root",
	"Vertex is a root for rotation calculations and armature generation",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshSkinVertex_use_root_get, MeshSkinVertex_use_root_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshSkinVertex_use_loose = {
	{NULL, (PropertyRNA *)&rna_MeshSkinVertex_use_root,
	-1, "use_loose", 3, 0, 0, "Loose",
	"If vertex has multiple adjacent edges, it is hulled to them directly",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshSkinVertex_use_loose_get, MeshSkinVertex_use_loose_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

StructRNA RNA_MeshSkinVertex = {
	{(ContainerRNA *)&RNA_MeshPaintMaskLayer, (ContainerRNA *)&RNA_MeshSkinVertexLayer,
	NULL,
	{(PropertyRNA *)&rna_MeshSkinVertex_rna_properties, (PropertyRNA *)&rna_MeshSkinVertex_use_loose}},
	"MeshSkinVertex", NULL, NULL, 4, "Skin Vertex",
	"Per-vertex skin data for use with the Skin modifier",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshSkinVertex_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshSkinVertex_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Paint Mask Layer */
CollectionPropertyRNA rna_MeshPaintMaskLayer_rna_properties = {
	{(PropertyRNA *)&rna_MeshPaintMaskLayer_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPaintMaskLayer_rna_properties_begin, MeshPaintMaskLayer_rna_properties_next, MeshPaintMaskLayer_rna_properties_end, MeshPaintMaskLayer_rna_properties_get, NULL, NULL, MeshPaintMaskLayer_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshPaintMaskLayer_rna_type = {
	{(PropertyRNA *)&rna_MeshPaintMaskLayer_data, (PropertyRNA *)&rna_MeshPaintMaskLayer_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPaintMaskLayer_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

CollectionPropertyRNA rna_MeshPaintMaskLayer_data = {
	{NULL, (PropertyRNA *)&rna_MeshPaintMaskLayer_rna_type,
	-1, "data", 0, 0, 8, "Data",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPaintMaskLayer_data_begin, MeshPaintMaskLayer_data_next, MeshPaintMaskLayer_data_end, MeshPaintMaskLayer_data_get, MeshPaintMaskLayer_data_length, MeshPaintMaskLayer_data_lookup_int, NULL, NULL, &RNA_MeshPaintMaskProperty
};

StructRNA RNA_MeshPaintMaskLayer = {
	{(ContainerRNA *)&RNA_MeshPaintMaskProperty, (ContainerRNA *)&RNA_MeshSkinVertex,
	NULL,
	{(PropertyRNA *)&rna_MeshPaintMaskLayer_rna_properties, (PropertyRNA *)&rna_MeshPaintMaskLayer_data}},
	"MeshPaintMaskLayer", NULL, NULL, 4, "Mesh Paint Mask Layer",
	"Per-vertex paint mask data",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshPaintMaskLayer_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshPaintMaskLayer_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Paint Mask Property */
CollectionPropertyRNA rna_MeshPaintMaskProperty_rna_properties = {
	{(PropertyRNA *)&rna_MeshPaintMaskProperty_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPaintMaskProperty_rna_properties_begin, MeshPaintMaskProperty_rna_properties_next, MeshPaintMaskProperty_rna_properties_end, MeshPaintMaskProperty_rna_properties_get, NULL, NULL, MeshPaintMaskProperty_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshPaintMaskProperty_rna_type = {
	{(PropertyRNA *)&rna_MeshPaintMaskProperty_value, (PropertyRNA *)&rna_MeshPaintMaskProperty_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPaintMaskProperty_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

FloatPropertyRNA rna_MeshPaintMaskProperty_value = {
	{NULL, (PropertyRNA *)&rna_MeshPaintMaskProperty_rna_type,
	-1, "value", 3, 0, 4, "Value",
	"",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	offsetof(MFloatProperty, f), 4, NULL},
	MeshPaintMaskProperty_value_get, MeshPaintMaskProperty_value_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, NULL
};

StructRNA RNA_MeshPaintMaskProperty = {
	{(ContainerRNA *)&RNA_MeshVertex, (ContainerRNA *)&RNA_MeshPaintMaskLayer,
	NULL,
	{(PropertyRNA *)&rna_MeshPaintMaskProperty_rna_properties, (PropertyRNA *)&rna_MeshPaintMaskProperty_value}},
	"MeshPaintMaskProperty", NULL, NULL, 4, "Mesh Paint Mask Property",
	"Floating point paint mask value",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshPaintMaskProperty_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshPaintMask_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Vertex */
CollectionPropertyRNA rna_MeshVertex_rna_properties = {
	{(PropertyRNA *)&rna_MeshVertex_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertex_rna_properties_begin, MeshVertex_rna_properties_next, MeshVertex_rna_properties_end, MeshVertex_rna_properties_get, NULL, NULL, MeshVertex_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshVertex_rna_type = {
	{(PropertyRNA *)&rna_MeshVertex_co, (PropertyRNA *)&rna_MeshVertex_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertex_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

static float rna_MeshVertex_co_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshVertex_co = {
	{(PropertyRNA *)&rna_MeshVertex_normal, (PropertyRNA *)&rna_MeshVertex_rna_type,
	-1, "co", 3, 0, 4, "Location",
	"",
	0, "*",
	PROP_FLOAT, PROP_TRANSLATION | PROP_UNIT_LENGTH, NULL, 1, {3, 0, 0}, 3,
	rna_Mesh_update_data, 0, NULL, NULL,
	offsetof(MVert, co), 4, NULL},
	NULL, NULL, MeshVertex_co_get, MeshVertex_co_set, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_MeshVertex_co_default
};

static float rna_MeshVertex_normal_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshVertex_normal = {
	{(PropertyRNA *)&rna_MeshVertex_select, (PropertyRNA *)&rna_MeshVertex_co,
	-1, "normal", 3, 0, 0, "Normal",
	"Vertex Normal",
	0, "*",
	PROP_FLOAT, PROP_DIRECTION | PROP_UNIT_NONE, NULL, 1, {3, 0, 0}, 3,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshVertex_normal_get, MeshVertex_normal_set, NULL, NULL, NULL, NULL, NULL, NULL, -1.0f, 1.0f, -1.0f, 1.0f, 10.0f, 3, 0.0f, rna_MeshVertex_normal_default
};

BoolPropertyRNA rna_MeshVertex_select = {
	{(PropertyRNA *)&rna_MeshVertex_hide, (PropertyRNA *)&rna_MeshVertex_normal,
	-1, "select", 3, 0, 0, "Select",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_select, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertex_select_get, MeshVertex_select_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshVertex_hide = {
	{(PropertyRNA *)&rna_MeshVertex_bevel_weight, (PropertyRNA *)&rna_MeshVertex_select,
	-1, "hide", 3, 0, 0, "Hide",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_select, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertex_hide_get, MeshVertex_hide_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

FloatPropertyRNA rna_MeshVertex_bevel_weight = {
	{(PropertyRNA *)&rna_MeshVertex_groups, (PropertyRNA *)&rna_MeshVertex_hide,
	-1, "bevel_weight", 3, 0, 0, "Bevel Weight",
	"Weight used by the Bevel modifier \'Only Vertices\' option",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertex_bevel_weight_get, MeshVertex_bevel_weight_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, NULL
};

CollectionPropertyRNA rna_MeshVertex_groups = {
	{(PropertyRNA *)&rna_MeshVertex_index, (PropertyRNA *)&rna_MeshVertex_bevel_weight,
	-1, "groups", 0, 0, 8, "Groups",
	"Weights for the vertex groups this vertex is member of",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertex_groups_begin, MeshVertex_groups_next, MeshVertex_groups_end, MeshVertex_groups_get, NULL, NULL, NULL, NULL, &RNA_VertexGroupElement
};

IntPropertyRNA rna_MeshVertex_index = {
	{(PropertyRNA *)&rna_MeshVertex_undeformed_co, (PropertyRNA *)&rna_MeshVertex_groups,
	-1, "index", 2, 0, 0, "Index",
	"Index of this vertex",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertex_index_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

static float rna_MeshVertex_undeformed_co_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshVertex_undeformed_co = {
	{NULL, (PropertyRNA *)&rna_MeshVertex_index,
	-1, "undeformed_co", 2, 0, 0, "Undeformed Location",
	"For meshes with modifiers applied, the coordinate of the vertex with no deforming modifiers applied, as used for generated texture coordinates",
	0, "*",
	PROP_FLOAT, PROP_TRANSLATION | PROP_UNIT_LENGTH, NULL, 1, {3, 0, 0}, 3,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshVertex_undeformed_co_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_MeshVertex_undeformed_co_default
};

StructRNA RNA_MeshVertex = {
	{(ContainerRNA *)&RNA_VertexGroupElement, (ContainerRNA *)&RNA_MeshPaintMaskProperty,
	NULL,
	{(PropertyRNA *)&rna_MeshVertex_rna_properties, (PropertyRNA *)&rna_MeshVertex_undeformed_co}},
	"MeshVertex", NULL, NULL, 4, "Mesh Vertex",
	"Vertex in a Mesh data-block",
	"*", 546,
	NULL, (PropertyRNA *)&rna_MeshVertex_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshVertex_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Vertex Group Element */
CollectionPropertyRNA rna_VertexGroupElement_rna_properties = {
	{(PropertyRNA *)&rna_VertexGroupElement_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	VertexGroupElement_rna_properties_begin, VertexGroupElement_rna_properties_next, VertexGroupElement_rna_properties_end, VertexGroupElement_rna_properties_get, NULL, NULL, VertexGroupElement_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_VertexGroupElement_rna_type = {
	{(PropertyRNA *)&rna_VertexGroupElement_group, (PropertyRNA *)&rna_VertexGroupElement_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	VertexGroupElement_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

IntPropertyRNA rna_VertexGroupElement_group = {
	{(PropertyRNA *)&rna_VertexGroupElement_weight, (PropertyRNA *)&rna_VertexGroupElement_rna_type,
	-1, "group", 2, 0, 4, "Group Index",
	"",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	offsetof(MDeformWeight, def_nr), 0, NULL},
	VertexGroupElement_group_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

FloatPropertyRNA rna_VertexGroupElement_weight = {
	{NULL, (PropertyRNA *)&rna_VertexGroupElement_group,
	-1, "weight", 3, 0, 4, "Weight",
	"Vertex Weight",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	offsetof(MDeformWeight, weight), 4, NULL},
	VertexGroupElement_weight_get, VertexGroupElement_weight_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, 0.0f, NULL
};

StructRNA RNA_VertexGroupElement = {
	{(ContainerRNA *)&RNA_MeshEdge, (ContainerRNA *)&RNA_MeshVertex,
	NULL,
	{(PropertyRNA *)&rna_VertexGroupElement_rna_properties, (PropertyRNA *)&rna_VertexGroupElement_weight}},
	"VertexGroupElement", NULL, NULL, 4, "Vertex Group Element",
	"Weight value of a vertex in a vertex group",
	"*", 201,
	NULL, (PropertyRNA *)&rna_VertexGroupElement_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_VertexGroupElement_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Edge */
CollectionPropertyRNA rna_MeshEdge_rna_properties = {
	{(PropertyRNA *)&rna_MeshEdge_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshEdge_rna_properties_begin, MeshEdge_rna_properties_next, MeshEdge_rna_properties_end, MeshEdge_rna_properties_get, NULL, NULL, MeshEdge_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshEdge_rna_type = {
	{(PropertyRNA *)&rna_MeshEdge_vertices, (PropertyRNA *)&rna_MeshEdge_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshEdge_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

static int rna_MeshEdge_vertices_default[2] = {
	0,
	0
};

IntPropertyRNA rna_MeshEdge_vertices = {
	{(PropertyRNA *)&rna_MeshEdge_crease, (PropertyRNA *)&rna_MeshEdge_rna_type,
	-1, "vertices", 3, 0, 4, "Vertices",
	"Vertex indices",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 1, {2, 0, 0}, 2,
	NULL, 0, NULL, NULL,
	offsetof(MEdge, v1), 0, NULL},
	NULL, NULL, MeshEdge_vertices_get, MeshEdge_vertices_set, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, rna_MeshEdge_vertices_default
};

FloatPropertyRNA rna_MeshEdge_crease = {
	{(PropertyRNA *)&rna_MeshEdge_bevel_weight, (PropertyRNA *)&rna_MeshEdge_vertices,
	-1, "crease", 3, 0, 0, "Crease",
	"Weight used by the Subdivision Surface modifier for creasing",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshEdge_crease_get, MeshEdge_crease_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, 0.0f, NULL
};

FloatPropertyRNA rna_MeshEdge_bevel_weight = {
	{(PropertyRNA *)&rna_MeshEdge_select, (PropertyRNA *)&rna_MeshEdge_crease,
	-1, "bevel_weight", 3, 0, 0, "Bevel Weight",
	"Weight used by the Bevel modifier",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshEdge_bevel_weight_get, MeshEdge_bevel_weight_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, NULL
};

BoolPropertyRNA rna_MeshEdge_select = {
	{(PropertyRNA *)&rna_MeshEdge_hide, (PropertyRNA *)&rna_MeshEdge_bevel_weight,
	-1, "select", 3, 0, 0, "Select",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_select, 0, NULL, NULL,
	0, -1, NULL},
	MeshEdge_select_get, MeshEdge_select_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshEdge_hide = {
	{(PropertyRNA *)&rna_MeshEdge_use_seam, (PropertyRNA *)&rna_MeshEdge_select,
	-1, "hide", 3, 0, 0, "Hide",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_select, 0, NULL, NULL,
	0, -1, NULL},
	MeshEdge_hide_get, MeshEdge_hide_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshEdge_use_seam = {
	{(PropertyRNA *)&rna_MeshEdge_use_edge_sharp, (PropertyRNA *)&rna_MeshEdge_hide,
	-1, "use_seam", 3, 0, 0, "Seam",
	"Seam edge for UV unwrapping",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_select, 0, NULL, NULL,
	0, -1, NULL},
	MeshEdge_use_seam_get, MeshEdge_use_seam_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshEdge_use_edge_sharp = {
	{(PropertyRNA *)&rna_MeshEdge_is_loose, (PropertyRNA *)&rna_MeshEdge_use_seam,
	-1, "use_edge_sharp", 3, 0, 0, "Sharp",
	"Sharp edge for the Edge Split modifier",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshEdge_use_edge_sharp_get, MeshEdge_use_edge_sharp_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshEdge_is_loose = {
	{(PropertyRNA *)&rna_MeshEdge_use_freestyle_mark, (PropertyRNA *)&rna_MeshEdge_use_edge_sharp,
	-1, "is_loose", 3, 0, 0, "Loose",
	"Loose edge",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshEdge_is_loose_get, MeshEdge_is_loose_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshEdge_use_freestyle_mark = {
	{(PropertyRNA *)&rna_MeshEdge_index, (PropertyRNA *)&rna_MeshEdge_is_loose,
	-1, "use_freestyle_mark", 3, 0, 0, "Freestyle Edge Mark",
	"Edge mark for Freestyle line rendering",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshEdge_use_freestyle_mark_get, MeshEdge_use_freestyle_mark_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

IntPropertyRNA rna_MeshEdge_index = {
	{NULL, (PropertyRNA *)&rna_MeshEdge_use_freestyle_mark,
	-1, "index", 2, 0, 0, "Index",
	"Index of this edge",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshEdge_index_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

StructRNA RNA_MeshEdge = {
	{(ContainerRNA *)&RNA_MeshTessFace, (ContainerRNA *)&RNA_VertexGroupElement,
	NULL,
	{(PropertyRNA *)&rna_MeshEdge_rna_properties, (PropertyRNA *)&rna_MeshEdge_index}},
	"MeshEdge", NULL, NULL, 4, "Mesh Edge",
	"Edge in a Mesh data-block",
	"*", 547,
	NULL, (PropertyRNA *)&rna_MeshEdge_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshEdge_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh TessFace */
CollectionPropertyRNA rna_MeshTessFace_rna_properties = {
	{(PropertyRNA *)&rna_MeshTessFace_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTessFace_rna_properties_begin, MeshTessFace_rna_properties_next, MeshTessFace_rna_properties_end, MeshTessFace_rna_properties_get, NULL, NULL, MeshTessFace_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshTessFace_rna_type = {
	{(PropertyRNA *)&rna_MeshTessFace_vertices, (PropertyRNA *)&rna_MeshTessFace_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTessFace_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

static int rna_MeshTessFace_vertices_default[4] = {
	0,
	0,
	0,
	0
};

IntPropertyRNA rna_MeshTessFace_vertices = {
	{(PropertyRNA *)&rna_MeshTessFace_vertices_raw, (PropertyRNA *)&rna_MeshTessFace_rna_type,
	-1, "vertices", 131075, 0, 0, "Vertices",
	"Vertex indices",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, rna_MeshTessFace_verts_get_length, 1, {4, 0, 0}, 4,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshTessFace_vertices_get, MeshTessFace_vertices_set, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, rna_MeshTessFace_vertices_default
};

static int rna_MeshTessFace_vertices_raw_default[4] = {
	0,
	0,
	0,
	0
};

IntPropertyRNA rna_MeshTessFace_vertices_raw = {
	{(PropertyRNA *)&rna_MeshTessFace_material_index, (PropertyRNA *)&rna_MeshTessFace_vertices,
	-1, "vertices_raw", 3, 0, 4, "Vertices",
	"Fixed size vertex indices array",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 1, {4, 0, 0}, 4,
	NULL, 0, NULL, NULL,
	offsetof(MFace, v1), 0, NULL},
	NULL, NULL, MeshTessFace_vertices_raw_get, MeshTessFace_vertices_raw_set, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, rna_MeshTessFace_vertices_raw_default
};

IntPropertyRNA rna_MeshTessFace_material_index = {
	{(PropertyRNA *)&rna_MeshTessFace_select, (PropertyRNA *)&rna_MeshTessFace_vertices_raw,
	-1, "material_index", 3, 0, 4, "Material Index",
	"",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	offsetof(MFace, mat_nr), 1, NULL},
	MeshTessFace_material_index_get, MeshTessFace_material_index_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 32767, 0, 32767, 1, 0, NULL
};

BoolPropertyRNA rna_MeshTessFace_select = {
	{(PropertyRNA *)&rna_MeshTessFace_hide, (PropertyRNA *)&rna_MeshTessFace_material_index,
	-1, "select", 3, 0, 0, "Select",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_select, 0, NULL, NULL,
	0, -1, NULL},
	MeshTessFace_select_get, MeshTessFace_select_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshTessFace_hide = {
	{(PropertyRNA *)&rna_MeshTessFace_use_smooth, (PropertyRNA *)&rna_MeshTessFace_select,
	-1, "hide", 3, 0, 0, "Hide",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_select, 0, NULL, NULL,
	0, -1, NULL},
	MeshTessFace_hide_get, MeshTessFace_hide_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshTessFace_use_smooth = {
	{(PropertyRNA *)&rna_MeshTessFace_normal, (PropertyRNA *)&rna_MeshTessFace_hide,
	-1, "use_smooth", 3, 0, 0, "Smooth",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshTessFace_use_smooth_get, MeshTessFace_use_smooth_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

static float rna_MeshTessFace_normal_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshTessFace_normal = {
	{(PropertyRNA *)&rna_MeshTessFace_split_normals, (PropertyRNA *)&rna_MeshTessFace_use_smooth,
	-1, "normal", 2, 0, 0, "Face Normal",
	"Local space unit length normal vector for this face",
	0, "*",
	PROP_FLOAT, PROP_DIRECTION | PROP_UNIT_NONE, NULL, 1, {3, 0, 0}, 3,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshTessFace_normal_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -1.0f, 1.0f, -1.0f, 1.0f, 10.0f, 3, 0.0f, rna_MeshTessFace_normal_default
};

static float rna_MeshTessFace_split_normals_default[12] = {
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshTessFace_split_normals = {
	{(PropertyRNA *)&rna_MeshTessFace_area, (PropertyRNA *)&rna_MeshTessFace_normal,
	-1, "split_normals", 2, 0, 0, "Split Normals",
	"Local space unit length split normals vectors of the vertices of this face (must be computed beforehand using calc_normals_split or calc_tangents, and then calc_tessface)",
	0, "*",
	PROP_FLOAT, PROP_DIRECTION | PROP_UNIT_NONE, NULL, 2, {4, 3, 0}, 12,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshTessFace_split_normals_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -1.0f, 1.0f, -1.0f, 1.0f, 10.0f, 3, 0.0f, rna_MeshTessFace_split_normals_default
};

FloatPropertyRNA rna_MeshTessFace_area = {
	{(PropertyRNA *)&rna_MeshTessFace_index, (PropertyRNA *)&rna_MeshTessFace_split_normals,
	-1, "area", 2, 0, 0, "Face Area",
	"Read only area of this face",
	0, "*",
	PROP_FLOAT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTessFace_area_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0.0f, 10000.0f, 0.0f, FLT_MAX, 10.0f, 3, 0.0f, NULL
};

IntPropertyRNA rna_MeshTessFace_index = {
	{NULL, (PropertyRNA *)&rna_MeshTessFace_area,
	-1, "index", 2, 0, 0, "Index",
	"Index of this face",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTessFace_index_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

StructRNA RNA_MeshTessFace = {
	{(ContainerRNA *)&RNA_MeshLoop, (ContainerRNA *)&RNA_MeshEdge,
	NULL,
	{(PropertyRNA *)&rna_MeshTessFace_rna_properties, (PropertyRNA *)&rna_MeshTessFace_index}},
	"MeshTessFace", NULL, NULL, 4, "Mesh TessFace",
	"TessFace in a Mesh data-block",
	"*", 548,
	NULL, (PropertyRNA *)&rna_MeshTessFace_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshTessFace_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Loop */
CollectionPropertyRNA rna_MeshLoop_rna_properties = {
	{(PropertyRNA *)&rna_MeshLoop_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoop_rna_properties_begin, MeshLoop_rna_properties_next, MeshLoop_rna_properties_end, MeshLoop_rna_properties_get, NULL, NULL, MeshLoop_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshLoop_rna_type = {
	{(PropertyRNA *)&rna_MeshLoop_vertex_index, (PropertyRNA *)&rna_MeshLoop_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoop_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

IntPropertyRNA rna_MeshLoop_vertex_index = {
	{(PropertyRNA *)&rna_MeshLoop_edge_index, (PropertyRNA *)&rna_MeshLoop_rna_type,
	-1, "vertex_index", 3, 0, 4, "Vertex",
	"Vertex index",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	offsetof(MLoop, v), 0, NULL},
	MeshLoop_vertex_index_get, MeshLoop_vertex_index_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

IntPropertyRNA rna_MeshLoop_edge_index = {
	{(PropertyRNA *)&rna_MeshLoop_index, (PropertyRNA *)&rna_MeshLoop_vertex_index,
	-1, "edge_index", 3, 0, 4, "Edge",
	"Edge index",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	offsetof(MLoop, e), 0, NULL},
	MeshLoop_edge_index_get, MeshLoop_edge_index_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

IntPropertyRNA rna_MeshLoop_index = {
	{(PropertyRNA *)&rna_MeshLoop_normal, (PropertyRNA *)&rna_MeshLoop_edge_index,
	-1, "index", 2, 0, 0, "Index",
	"Index of this loop",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoop_index_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

static float rna_MeshLoop_normal_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshLoop_normal = {
	{(PropertyRNA *)&rna_MeshLoop_tangent, (PropertyRNA *)&rna_MeshLoop_index,
	-1, "normal", 3, 0, 0, "Normal",
	"Local space unit length split normal vector of this vertex for this polygon (must be computed beforehand using calc_normals_split or calc_tangents)",
	0, "*",
	PROP_FLOAT, PROP_DIRECTION | PROP_UNIT_NONE, NULL, 1, {3, 0, 0}, 3,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshLoop_normal_get, MeshLoop_normal_set, NULL, NULL, NULL, NULL, NULL, NULL, -1.0f, 1.0f, -1.0f, 1.0f, 10.0f, 3, 0.0f, rna_MeshLoop_normal_default
};

static float rna_MeshLoop_tangent_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshLoop_tangent = {
	{(PropertyRNA *)&rna_MeshLoop_bitangent_sign, (PropertyRNA *)&rna_MeshLoop_normal,
	-1, "tangent", 2, 0, 0, "Tangent",
	"Local space unit length tangent vector of this vertex for this polygon (must be computed beforehand using calc_tangents)",
	0, "*",
	PROP_FLOAT, PROP_DIRECTION | PROP_UNIT_NONE, NULL, 1, {3, 0, 0}, 3,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshLoop_tangent_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -1.0f, 1.0f, -1.0f, 1.0f, 10.0f, 3, 0.0f, rna_MeshLoop_tangent_default
};

FloatPropertyRNA rna_MeshLoop_bitangent_sign = {
	{(PropertyRNA *)&rna_MeshLoop_bitangent, (PropertyRNA *)&rna_MeshLoop_tangent,
	-1, "bitangent_sign", 2, 0, 0, "Bitangent Sign",
	"Sign of the bitangent vector of this vertex for this polygon (must be computed beforehand using calc_tangents, bitangent = bitangent_sign * cross(normal, tangent))",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoop_bitangent_sign_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -1.0f, 1.0f, -1.0f, 1.0f, 10.0f, 3, 0.0f, NULL
};

static float rna_MeshLoop_bitangent_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshLoop_bitangent = {
	{NULL, (PropertyRNA *)&rna_MeshLoop_bitangent_sign,
	-1, "bitangent", 2, 0, 0, "Bitangent",
	"Bitangent vector of this vertex for this polygon (must be computed beforehand using calc_tangents, *use it only if really needed*, slower access than bitangent_sign)",
	0, "*",
	PROP_FLOAT, PROP_DIRECTION | PROP_UNIT_NONE, NULL, 1, {3, 0, 0}, 3,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshLoop_bitangent_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -1.0f, 1.0f, -1.0f, 1.0f, 10.0f, 3, 0.0f, rna_MeshLoop_bitangent_default
};

StructRNA RNA_MeshLoop = {
	{(ContainerRNA *)&RNA_MeshPolygon, (ContainerRNA *)&RNA_MeshTessFace,
	NULL,
	{(PropertyRNA *)&rna_MeshLoop_rna_properties, (PropertyRNA *)&rna_MeshLoop_bitangent}},
	"MeshLoop", NULL, NULL, 4, "Mesh Loop",
	"Loop in a Mesh data-block",
	"*", 547,
	NULL, (PropertyRNA *)&rna_MeshLoop_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshLoop_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Polygon */
CollectionPropertyRNA rna_MeshPolygon_rna_properties = {
	{(PropertyRNA *)&rna_MeshPolygon_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygon_rna_properties_begin, MeshPolygon_rna_properties_next, MeshPolygon_rna_properties_end, MeshPolygon_rna_properties_get, NULL, NULL, MeshPolygon_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshPolygon_rna_type = {
	{(PropertyRNA *)&rna_MeshPolygon_vertices, (PropertyRNA *)&rna_MeshPolygon_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygon_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

static int rna_MeshPolygon_vertices_default[3] = {
	0,
	0,
	0
};

IntPropertyRNA rna_MeshPolygon_vertices = {
	{(PropertyRNA *)&rna_MeshPolygon_loop_start, (PropertyRNA *)&rna_MeshPolygon_rna_type,
	-1, "vertices", 131075, 0, 0, "Vertices",
	"Vertex indices",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, rna_MeshPoly_vertices_get_length, 1, {3, 0, 0}, 3,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshPolygon_vertices_get, MeshPolygon_vertices_set, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, rna_MeshPolygon_vertices_default
};

IntPropertyRNA rna_MeshPolygon_loop_start = {
	{(PropertyRNA *)&rna_MeshPolygon_loop_total, (PropertyRNA *)&rna_MeshPolygon_vertices,
	-1, "loop_start", 3, 0, 4, "Loop Start",
	"Index of the first loop of this polygon",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	offsetof(MPoly, loopstart), 0, NULL},
	MeshPolygon_loop_start_get, MeshPolygon_loop_start_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

IntPropertyRNA rna_MeshPolygon_loop_total = {
	{(PropertyRNA *)&rna_MeshPolygon_material_index, (PropertyRNA *)&rna_MeshPolygon_loop_start,
	-1, "loop_total", 3, 0, 4, "Loop Total",
	"Number of loops used by this polygon",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	offsetof(MPoly, totloop), 0, NULL},
	MeshPolygon_loop_total_get, MeshPolygon_loop_total_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

IntPropertyRNA rna_MeshPolygon_material_index = {
	{(PropertyRNA *)&rna_MeshPolygon_select, (PropertyRNA *)&rna_MeshPolygon_loop_total,
	-1, "material_index", 3, 0, 4, "Material Index",
	"",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	offsetof(MPoly, mat_nr), 1, NULL},
	MeshPolygon_material_index_get, MeshPolygon_material_index_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 32767, 0, 32767, 1, 0, NULL
};

BoolPropertyRNA rna_MeshPolygon_select = {
	{(PropertyRNA *)&rna_MeshPolygon_hide, (PropertyRNA *)&rna_MeshPolygon_material_index,
	-1, "select", 3, 0, 0, "Select",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_select, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygon_select_get, MeshPolygon_select_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshPolygon_hide = {
	{(PropertyRNA *)&rna_MeshPolygon_use_smooth, (PropertyRNA *)&rna_MeshPolygon_select,
	-1, "hide", 3, 0, 0, "Hide",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_select, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygon_hide_get, MeshPolygon_hide_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshPolygon_use_smooth = {
	{(PropertyRNA *)&rna_MeshPolygon_use_freestyle_mark, (PropertyRNA *)&rna_MeshPolygon_hide,
	-1, "use_smooth", 3, 0, 0, "Smooth",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygon_use_smooth_get, MeshPolygon_use_smooth_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshPolygon_use_freestyle_mark = {
	{(PropertyRNA *)&rna_MeshPolygon_normal, (PropertyRNA *)&rna_MeshPolygon_use_smooth,
	-1, "use_freestyle_mark", 3, 0, 0, "Freestyle Face Mark",
	"Face mark for Freestyle line rendering",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygon_use_freestyle_mark_get, MeshPolygon_use_freestyle_mark_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

static float rna_MeshPolygon_normal_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshPolygon_normal = {
	{(PropertyRNA *)&rna_MeshPolygon_center, (PropertyRNA *)&rna_MeshPolygon_use_freestyle_mark,
	-1, "normal", 2, 0, 0, "Polygon Normal",
	"Local space unit length normal vector for this polygon",
	0, "*",
	PROP_FLOAT, PROP_DIRECTION | PROP_UNIT_NONE, NULL, 1, {3, 0, 0}, 3,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshPolygon_normal_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -1.0f, 1.0f, -1.0f, 1.0f, 10.0f, 3, 0.0f, rna_MeshPolygon_normal_default
};

static float rna_MeshPolygon_center_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshPolygon_center = {
	{(PropertyRNA *)&rna_MeshPolygon_area, (PropertyRNA *)&rna_MeshPolygon_normal,
	-1, "center", 2, 0, 0, "Polygon Center",
	"Center of this polygon",
	0, "*",
	PROP_FLOAT, PROP_XYZ | PROP_UNIT_NONE, NULL, 1, {3, 0, 0}, 3,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshPolygon_center_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_MeshPolygon_center_default
};

FloatPropertyRNA rna_MeshPolygon_area = {
	{(PropertyRNA *)&rna_MeshPolygon_index, (PropertyRNA *)&rna_MeshPolygon_center,
	-1, "area", 2, 0, 0, "Polygon Area",
	"Read only area of this polygon",
	0, "*",
	PROP_FLOAT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygon_area_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0.0f, 10000.0f, 0.0f, FLT_MAX, 10.0f, 3, 0.0f, NULL
};

IntPropertyRNA rna_MeshPolygon_index = {
	{NULL, (PropertyRNA *)&rna_MeshPolygon_area,
	-1, "index", 2, 0, 0, "Index",
	"Index of this polygon",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygon_index_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

FunctionRNA rna_MeshPolygon_flip_func = {
	{NULL, NULL,
	NULL,
	{NULL, NULL}},
	"flip", 2048, "Invert winding of this polygon (flip its normal)",
	MeshPolygon_flip_call,
	NULL
};

StructRNA RNA_MeshPolygon = {
	{(ContainerRNA *)&RNA_MeshUVLoopLayer, (ContainerRNA *)&RNA_MeshLoop,
	NULL,
	{(PropertyRNA *)&rna_MeshPolygon_rna_properties, (PropertyRNA *)&rna_MeshPolygon_index}},
	"MeshPolygon", NULL, NULL, 4, "Mesh Polygon",
	"Polygon in a Mesh data-block",
	"*", 548,
	NULL, (PropertyRNA *)&rna_MeshPolygon_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshPolygon_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_MeshPolygon_flip_func, (FunctionRNA *)&rna_MeshPolygon_flip_func}
};

/* MeshUVLoopLayer */
CollectionPropertyRNA rna_MeshUVLoopLayer_rna_properties = {
	{(PropertyRNA *)&rna_MeshUVLoopLayer_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshUVLoopLayer_rna_properties_begin, MeshUVLoopLayer_rna_properties_next, MeshUVLoopLayer_rna_properties_end, MeshUVLoopLayer_rna_properties_get, NULL, NULL, MeshUVLoopLayer_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshUVLoopLayer_rna_type = {
	{(PropertyRNA *)&rna_MeshUVLoopLayer_data, (PropertyRNA *)&rna_MeshUVLoopLayer_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshUVLoopLayer_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

CollectionPropertyRNA rna_MeshUVLoopLayer_data = {
	{(PropertyRNA *)&rna_MeshUVLoopLayer_name, (PropertyRNA *)&rna_MeshUVLoopLayer_rna_type,
	-1, "data", 0, 0, 8, "data",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshUVLoopLayer_data_begin, MeshUVLoopLayer_data_next, MeshUVLoopLayer_data_end, MeshUVLoopLayer_data_get, MeshUVLoopLayer_data_length, MeshUVLoopLayer_data_lookup_int, NULL, NULL, &RNA_MeshUVLoop
};

StringPropertyRNA rna_MeshUVLoopLayer_name = {
	{NULL, (PropertyRNA *)&rna_MeshUVLoopLayer_data,
	-1, "name", 262145, 0, 0, "Name",
	"Name of UV map",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {64, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshUVLoopLayer_name_get, MeshUVLoopLayer_name_length, MeshUVLoopLayer_name_set, NULL, NULL, NULL, 64, ""
};

StructRNA RNA_MeshUVLoopLayer = {
	{(ContainerRNA *)&RNA_MeshUVLoop, (ContainerRNA *)&RNA_MeshPolygon,
	NULL,
	{(PropertyRNA *)&rna_MeshUVLoopLayer_rna_properties, (PropertyRNA *)&rna_MeshUVLoopLayer_name}},
	"MeshUVLoopLayer", NULL, NULL, 4, "MeshUVLoopLayer",
	"",
	"*", 17,
	(PropertyRNA *)&rna_MeshUVLoopLayer_name, (PropertyRNA *)&rna_MeshUVLoopLayer_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshUVLoopLayer_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* MeshUVLoop */
CollectionPropertyRNA rna_MeshUVLoop_rna_properties = {
	{(PropertyRNA *)&rna_MeshUVLoop_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshUVLoop_rna_properties_begin, MeshUVLoop_rna_properties_next, MeshUVLoop_rna_properties_end, MeshUVLoop_rna_properties_get, NULL, NULL, MeshUVLoop_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshUVLoop_rna_type = {
	{(PropertyRNA *)&rna_MeshUVLoop_uv, (PropertyRNA *)&rna_MeshUVLoop_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshUVLoop_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

static float rna_MeshUVLoop_uv_default[2] = {
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshUVLoop_uv = {
	{(PropertyRNA *)&rna_MeshUVLoop_pin_uv, (PropertyRNA *)&rna_MeshUVLoop_rna_type,
	-1, "uv", 3, 0, 4, "uv",
	"",
	0, "*",
	PROP_FLOAT, PROP_XYZ | PROP_UNIT_NONE, NULL, 1, {2, 0, 0}, 2,
	rna_Mesh_update_data, 0, NULL, NULL,
	offsetof(MLoopUV, uv), 4, NULL},
	NULL, NULL, MeshUVLoop_uv_get, MeshUVLoop_uv_set, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_MeshUVLoop_uv_default
};

BoolPropertyRNA rna_MeshUVLoop_pin_uv = {
	{(PropertyRNA *)&rna_MeshUVLoop_select, (PropertyRNA *)&rna_MeshUVLoop_uv,
	-1, "pin_uv", 3, 0, 0, "UV Pinned",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshUVLoop_pin_uv_get, MeshUVLoop_pin_uv_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshUVLoop_select = {
	{(PropertyRNA *)&rna_MeshUVLoop_select_edge, (PropertyRNA *)&rna_MeshUVLoop_pin_uv,
	-1, "select", 3, 0, 0, "UV Select",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshUVLoop_select_get, MeshUVLoop_select_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshUVLoop_select_edge = {
	{NULL, (PropertyRNA *)&rna_MeshUVLoop_select,
	-1, "select_edge", 3, 0, 0, "UV Edge Select",
	"",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshUVLoop_select_edge_get, MeshUVLoop_select_edge_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

StructRNA RNA_MeshUVLoop = {
	{(ContainerRNA *)&RNA_MeshTextureFaceLayer, (ContainerRNA *)&RNA_MeshUVLoopLayer,
	NULL,
	{(PropertyRNA *)&rna_MeshUVLoop_rna_properties, (PropertyRNA *)&rna_MeshUVLoop_select_edge}},
	"MeshUVLoop", NULL, NULL, 4, "MeshUVLoop",
	"",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshUVLoop_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshUVLoop_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh UV Map */
CollectionPropertyRNA rna_MeshTextureFaceLayer_rna_properties = {
	{(PropertyRNA *)&rna_MeshTextureFaceLayer_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTextureFaceLayer_rna_properties_begin, MeshTextureFaceLayer_rna_properties_next, MeshTextureFaceLayer_rna_properties_end, MeshTextureFaceLayer_rna_properties_get, NULL, NULL, MeshTextureFaceLayer_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshTextureFaceLayer_rna_type = {
	{(PropertyRNA *)&rna_MeshTextureFaceLayer_name, (PropertyRNA *)&rna_MeshTextureFaceLayer_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTextureFaceLayer_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_MeshTextureFaceLayer_name = {
	{(PropertyRNA *)&rna_MeshTextureFaceLayer_active, (PropertyRNA *)&rna_MeshTextureFaceLayer_rna_type,
	-1, "name", 262145, 0, 0, "Name",
	"Name of UV map",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {64, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshTextureFaceLayer_name_get, MeshTextureFaceLayer_name_length, MeshTextureFaceLayer_name_set, NULL, NULL, NULL, 64, ""
};

BoolPropertyRNA rna_MeshTextureFaceLayer_active = {
	{(PropertyRNA *)&rna_MeshTextureFaceLayer_active_render, (PropertyRNA *)&rna_MeshTextureFaceLayer_name,
	-1, "active", 3, 0, 0, "Active",
	"Set the map as active for display and editing",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshTextureFaceLayer_active_get, MeshTextureFaceLayer_active_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshTextureFaceLayer_active_render = {
	{(PropertyRNA *)&rna_MeshTextureFaceLayer_active_clone, (PropertyRNA *)&rna_MeshTextureFaceLayer_active,
	-1, "active_render", 3, 0, 0, "Active Render",
	"Set the map as active for rendering",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshTextureFaceLayer_active_render_get, MeshTextureFaceLayer_active_render_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshTextureFaceLayer_active_clone = {
	{(PropertyRNA *)&rna_MeshTextureFaceLayer_data, (PropertyRNA *)&rna_MeshTextureFaceLayer_active_render,
	-1, "active_clone", 3, 0, 0, "Active Clone",
	"Set the map as active for cloning",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshTextureFaceLayer_active_clone_get, MeshTextureFaceLayer_active_clone_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

CollectionPropertyRNA rna_MeshTextureFaceLayer_data = {
	{NULL, (PropertyRNA *)&rna_MeshTextureFaceLayer_active_clone,
	-1, "data", 0, 0, 8, "Data",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTextureFaceLayer_data_begin, MeshTextureFaceLayer_data_next, MeshTextureFaceLayer_data_end, MeshTextureFaceLayer_data_get, MeshTextureFaceLayer_data_length, MeshTextureFaceLayer_data_lookup_int, NULL, NULL, &RNA_MeshTextureFace
};

StructRNA RNA_MeshTextureFaceLayer = {
	{(ContainerRNA *)&RNA_MeshTextureFace, (ContainerRNA *)&RNA_MeshUVLoop,
	NULL,
	{(PropertyRNA *)&rna_MeshTextureFaceLayer_rna_properties, (PropertyRNA *)&rna_MeshTextureFaceLayer_data}},
	"MeshTextureFaceLayer", NULL, NULL, 4, "Mesh UV Map",
	"UV map with assigned image textures in a Mesh data-block",
	"*", 203,
	(PropertyRNA *)&rna_MeshTextureFaceLayer_name, (PropertyRNA *)&rna_MeshTextureFaceLayer_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshTextureFaceLayer_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh UV Map Face */
CollectionPropertyRNA rna_MeshTextureFace_rna_properties = {
	{(PropertyRNA *)&rna_MeshTextureFace_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTextureFace_rna_properties_begin, MeshTextureFace_rna_properties_next, MeshTextureFace_rna_properties_end, MeshTextureFace_rna_properties_get, NULL, NULL, MeshTextureFace_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshTextureFace_rna_type = {
	{(PropertyRNA *)&rna_MeshTextureFace_image, (PropertyRNA *)&rna_MeshTextureFace_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTextureFace_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

PointerPropertyRNA rna_MeshTextureFace_image = {
	{(PropertyRNA *)&rna_MeshTextureFace_uv1, (PropertyRNA *)&rna_MeshTextureFace_rna_type,
	-1, "image", 8388673, 0, 0, "Image",
	"",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshTextureFace_image_get, MeshTextureFace_image_set, NULL, NULL,&RNA_Image
};

static float rna_MeshTextureFace_uv1_default[2] = {
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshTextureFace_uv1 = {
	{(PropertyRNA *)&rna_MeshTextureFace_uv2, (PropertyRNA *)&rna_MeshTextureFace_image,
	-1, "uv1", 3, 0, 0, "UV 1",
	"",
	0, "*",
	PROP_FLOAT, PROP_XYZ | PROP_UNIT_NONE, NULL, 1, {2, 0, 0}, 2,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshTextureFace_uv1_get, MeshTextureFace_uv1_set, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_MeshTextureFace_uv1_default
};

static float rna_MeshTextureFace_uv2_default[2] = {
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshTextureFace_uv2 = {
	{(PropertyRNA *)&rna_MeshTextureFace_uv3, (PropertyRNA *)&rna_MeshTextureFace_uv1,
	-1, "uv2", 3, 0, 0, "UV 2",
	"",
	0, "*",
	PROP_FLOAT, PROP_XYZ | PROP_UNIT_NONE, NULL, 1, {2, 0, 0}, 2,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshTextureFace_uv2_get, MeshTextureFace_uv2_set, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_MeshTextureFace_uv2_default
};

static float rna_MeshTextureFace_uv3_default[2] = {
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshTextureFace_uv3 = {
	{(PropertyRNA *)&rna_MeshTextureFace_uv4, (PropertyRNA *)&rna_MeshTextureFace_uv2,
	-1, "uv3", 3, 0, 0, "UV 3",
	"",
	0, "*",
	PROP_FLOAT, PROP_XYZ | PROP_UNIT_NONE, NULL, 1, {2, 0, 0}, 2,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshTextureFace_uv3_get, MeshTextureFace_uv3_set, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_MeshTextureFace_uv3_default
};

static float rna_MeshTextureFace_uv4_default[2] = {
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshTextureFace_uv4 = {
	{(PropertyRNA *)&rna_MeshTextureFace_uv, (PropertyRNA *)&rna_MeshTextureFace_uv3,
	-1, "uv4", 3, 0, 0, "UV 4",
	"",
	0, "*",
	PROP_FLOAT, PROP_XYZ | PROP_UNIT_NONE, NULL, 1, {2, 0, 0}, 2,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshTextureFace_uv4_get, MeshTextureFace_uv4_set, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_MeshTextureFace_uv4_default
};

static float rna_MeshTextureFace_uv_default[8] = {
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshTextureFace_uv = {
	{(PropertyRNA *)&rna_MeshTextureFace_uv_raw, (PropertyRNA *)&rna_MeshTextureFace_uv4,
	-1, "uv", 131075, 0, 0, "UV",
	"",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, rna_MeshTextureFace_uv_get_length, 2, {4, 2, 0}, 8,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshTextureFace_uv_get, MeshTextureFace_uv_set, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_MeshTextureFace_uv_default
};

static float rna_MeshTextureFace_uv_raw_default[8] = {
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshTextureFace_uv_raw = {
	{NULL, (PropertyRNA *)&rna_MeshTextureFace_uv,
	-1, "uv_raw", 3, 0, 4, "UV Raw",
	"Fixed size UV coordinates array",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, NULL, 1, {8, 2, 0}, 8,
	NULL, 0, NULL, NULL,
	offsetof(MTFace, uv), 4, NULL},
	NULL, NULL, MeshTextureFace_uv_raw_get, MeshTextureFace_uv_raw_set, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_MeshTextureFace_uv_raw_default
};

StructRNA RNA_MeshTextureFace = {
	{(ContainerRNA *)&RNA_MeshTexturePolyLayer, (ContainerRNA *)&RNA_MeshTextureFaceLayer,
	NULL,
	{(PropertyRNA *)&rna_MeshTextureFace_rna_properties, (PropertyRNA *)&rna_MeshTextureFace_uv_raw}},
	"MeshTextureFace", NULL, NULL, 4, "Mesh UV Map Face",
	"UV map and image texture for a face",
	"*", 132,
	NULL, (PropertyRNA *)&rna_MeshTextureFace_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshTextureFace_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh UV Map */
CollectionPropertyRNA rna_MeshTexturePolyLayer_rna_properties = {
	{(PropertyRNA *)&rna_MeshTexturePolyLayer_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTexturePolyLayer_rna_properties_begin, MeshTexturePolyLayer_rna_properties_next, MeshTexturePolyLayer_rna_properties_end, MeshTexturePolyLayer_rna_properties_get, NULL, NULL, MeshTexturePolyLayer_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshTexturePolyLayer_rna_type = {
	{(PropertyRNA *)&rna_MeshTexturePolyLayer_name, (PropertyRNA *)&rna_MeshTexturePolyLayer_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTexturePolyLayer_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_MeshTexturePolyLayer_name = {
	{(PropertyRNA *)&rna_MeshTexturePolyLayer_active, (PropertyRNA *)&rna_MeshTexturePolyLayer_rna_type,
	-1, "name", 262145, 0, 0, "Name",
	"Name of UV map",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {64, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshTexturePolyLayer_name_get, MeshTexturePolyLayer_name_length, MeshTexturePolyLayer_name_set, NULL, NULL, NULL, 64, ""
};

BoolPropertyRNA rna_MeshTexturePolyLayer_active = {
	{(PropertyRNA *)&rna_MeshTexturePolyLayer_active_render, (PropertyRNA *)&rna_MeshTexturePolyLayer_name,
	-1, "active", 3, 0, 0, "Active",
	"Set the map as active for display and editing",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshTexturePolyLayer_active_get, MeshTexturePolyLayer_active_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshTexturePolyLayer_active_render = {
	{(PropertyRNA *)&rna_MeshTexturePolyLayer_active_clone, (PropertyRNA *)&rna_MeshTexturePolyLayer_active,
	-1, "active_render", 3, 0, 0, "Active Render",
	"Set the map as active for rendering",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshTexturePolyLayer_active_render_get, MeshTexturePolyLayer_active_render_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshTexturePolyLayer_active_clone = {
	{(PropertyRNA *)&rna_MeshTexturePolyLayer_data, (PropertyRNA *)&rna_MeshTexturePolyLayer_active_render,
	-1, "active_clone", 3, 0, 0, "Active Clone",
	"Set the map as active for cloning",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshTexturePolyLayer_active_clone_get, MeshTexturePolyLayer_active_clone_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

CollectionPropertyRNA rna_MeshTexturePolyLayer_data = {
	{NULL, (PropertyRNA *)&rna_MeshTexturePolyLayer_active_clone,
	-1, "data", 0, 0, 8, "Data",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTexturePolyLayer_data_begin, MeshTexturePolyLayer_data_next, MeshTexturePolyLayer_data_end, MeshTexturePolyLayer_data_get, MeshTexturePolyLayer_data_length, MeshTexturePolyLayer_data_lookup_int, NULL, NULL, &RNA_MeshTexturePoly
};

StructRNA RNA_MeshTexturePolyLayer = {
	{(ContainerRNA *)&RNA_MeshTexturePoly, (ContainerRNA *)&RNA_MeshTextureFace,
	NULL,
	{(PropertyRNA *)&rna_MeshTexturePolyLayer_rna_properties, (PropertyRNA *)&rna_MeshTexturePolyLayer_data}},
	"MeshTexturePolyLayer", NULL, NULL, 4, "Mesh UV Map",
	"UV map with assigned image textures in a Mesh data-block",
	"*", 203,
	(PropertyRNA *)&rna_MeshTexturePolyLayer_name, (PropertyRNA *)&rna_MeshTexturePolyLayer_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshTexturePolyLayer_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh UV Map Face */
CollectionPropertyRNA rna_MeshTexturePoly_rna_properties = {
	{(PropertyRNA *)&rna_MeshTexturePoly_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTexturePoly_rna_properties_begin, MeshTexturePoly_rna_properties_next, MeshTexturePoly_rna_properties_end, MeshTexturePoly_rna_properties_get, NULL, NULL, MeshTexturePoly_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshTexturePoly_rna_type = {
	{(PropertyRNA *)&rna_MeshTexturePoly_image, (PropertyRNA *)&rna_MeshTexturePoly_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshTexturePoly_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

PointerPropertyRNA rna_MeshTexturePoly_image = {
	{NULL, (PropertyRNA *)&rna_MeshTexturePoly_rna_type,
	-1, "image", 8388673, 0, 0, "Image",
	"",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshTexturePoly_image_get, MeshTexturePoly_image_set, NULL, NULL,&RNA_Image
};

StructRNA RNA_MeshTexturePoly = {
	{(ContainerRNA *)&RNA_MeshColorLayer, (ContainerRNA *)&RNA_MeshTexturePolyLayer,
	NULL,
	{(PropertyRNA *)&rna_MeshTexturePoly_rna_properties, (PropertyRNA *)&rna_MeshTexturePoly_image}},
	"MeshTexturePoly", NULL, NULL, 4, "Mesh UV Map Face",
	"UV map and image texture for a face",
	"*", 132,
	NULL, (PropertyRNA *)&rna_MeshTexturePoly_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshTexturePoly_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Vertex Color Layer */
CollectionPropertyRNA rna_MeshColorLayer_rna_properties = {
	{(PropertyRNA *)&rna_MeshColorLayer_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshColorLayer_rna_properties_begin, MeshColorLayer_rna_properties_next, MeshColorLayer_rna_properties_end, MeshColorLayer_rna_properties_get, NULL, NULL, MeshColorLayer_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshColorLayer_rna_type = {
	{(PropertyRNA *)&rna_MeshColorLayer_name, (PropertyRNA *)&rna_MeshColorLayer_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshColorLayer_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_MeshColorLayer_name = {
	{(PropertyRNA *)&rna_MeshColorLayer_active, (PropertyRNA *)&rna_MeshColorLayer_rna_type,
	-1, "name", 262145, 0, 0, "Name",
	"Name of Vertex color layer",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {64, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshColorLayer_name_get, MeshColorLayer_name_length, MeshColorLayer_name_set, NULL, NULL, NULL, 64, ""
};

BoolPropertyRNA rna_MeshColorLayer_active = {
	{(PropertyRNA *)&rna_MeshColorLayer_active_render, (PropertyRNA *)&rna_MeshColorLayer_name,
	-1, "active", 3, 0, 0, "Active",
	"Sets the layer as active for display and editing",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshColorLayer_active_get, MeshColorLayer_active_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshColorLayer_active_render = {
	{(PropertyRNA *)&rna_MeshColorLayer_data, (PropertyRNA *)&rna_MeshColorLayer_active,
	-1, "active_render", 3, 0, 0, "Active Render",
	"Sets the layer as active for rendering",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshColorLayer_active_render_get, MeshColorLayer_active_render_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

CollectionPropertyRNA rna_MeshColorLayer_data = {
	{NULL, (PropertyRNA *)&rna_MeshColorLayer_active_render,
	-1, "data", 0, 0, 8, "Data",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshColorLayer_data_begin, MeshColorLayer_data_next, MeshColorLayer_data_end, MeshColorLayer_data_get, MeshColorLayer_data_length, MeshColorLayer_data_lookup_int, NULL, NULL, &RNA_MeshColor
};

StructRNA RNA_MeshColorLayer = {
	{(ContainerRNA *)&RNA_MeshColor, (ContainerRNA *)&RNA_MeshTexturePoly,
	NULL,
	{(PropertyRNA *)&rna_MeshColorLayer_rna_properties, (PropertyRNA *)&rna_MeshColorLayer_data}},
	"MeshColorLayer", NULL, NULL, 4, "Mesh Vertex Color Layer",
	"Layer of vertex colors in a Mesh data-block",
	"*", 202,
	(PropertyRNA *)&rna_MeshColorLayer_name, (PropertyRNA *)&rna_MeshColorLayer_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshColorLayer_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Vertex Color */
CollectionPropertyRNA rna_MeshColor_rna_properties = {
	{(PropertyRNA *)&rna_MeshColor_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshColor_rna_properties_begin, MeshColor_rna_properties_next, MeshColor_rna_properties_end, MeshColor_rna_properties_get, NULL, NULL, MeshColor_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshColor_rna_type = {
	{(PropertyRNA *)&rna_MeshColor_color1, (PropertyRNA *)&rna_MeshColor_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshColor_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

static float rna_MeshColor_color1_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshColor_color1 = {
	{(PropertyRNA *)&rna_MeshColor_color2, (PropertyRNA *)&rna_MeshColor_rna_type,
	-1, "color1", 3, 0, 0, "Color 1",
	"",
	0, "*",
	PROP_FLOAT, PROP_COLOR | PROP_UNIT_NONE, NULL, 1, {3, 0, 0}, 3,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshColor_color1_get, MeshColor_color1_set, NULL, NULL, NULL, NULL, NULL, NULL, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, 0.0f, rna_MeshColor_color1_default
};

static float rna_MeshColor_color2_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshColor_color2 = {
	{(PropertyRNA *)&rna_MeshColor_color3, (PropertyRNA *)&rna_MeshColor_color1,
	-1, "color2", 3, 0, 0, "Color 2",
	"",
	0, "*",
	PROP_FLOAT, PROP_COLOR | PROP_UNIT_NONE, NULL, 1, {3, 0, 0}, 3,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshColor_color2_get, MeshColor_color2_set, NULL, NULL, NULL, NULL, NULL, NULL, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, 0.0f, rna_MeshColor_color2_default
};

static float rna_MeshColor_color3_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshColor_color3 = {
	{(PropertyRNA *)&rna_MeshColor_color4, (PropertyRNA *)&rna_MeshColor_color2,
	-1, "color3", 3, 0, 0, "Color 3",
	"",
	0, "*",
	PROP_FLOAT, PROP_COLOR | PROP_UNIT_NONE, NULL, 1, {3, 0, 0}, 3,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshColor_color3_get, MeshColor_color3_set, NULL, NULL, NULL, NULL, NULL, NULL, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, 0.0f, rna_MeshColor_color3_default
};

static float rna_MeshColor_color4_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshColor_color4 = {
	{NULL, (PropertyRNA *)&rna_MeshColor_color3,
	-1, "color4", 3, 0, 0, "Color 4",
	"",
	0, "*",
	PROP_FLOAT, PROP_COLOR | PROP_UNIT_NONE, NULL, 1, {3, 0, 0}, 3,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshColor_color4_get, MeshColor_color4_set, NULL, NULL, NULL, NULL, NULL, NULL, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, 0.0f, rna_MeshColor_color4_default
};

StructRNA RNA_MeshColor = {
	{(ContainerRNA *)&RNA_MeshLoopColorLayer, (ContainerRNA *)&RNA_MeshColorLayer,
	NULL,
	{(PropertyRNA *)&rna_MeshColor_rna_properties, (PropertyRNA *)&rna_MeshColor_color4}},
	"MeshColor", NULL, NULL, 4, "Mesh Vertex Color",
	"Vertex colors for a face in a Mesh",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshColor_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshColor_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Vertex Color Layer */
CollectionPropertyRNA rna_MeshLoopColorLayer_rna_properties = {
	{(PropertyRNA *)&rna_MeshLoopColorLayer_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoopColorLayer_rna_properties_begin, MeshLoopColorLayer_rna_properties_next, MeshLoopColorLayer_rna_properties_end, MeshLoopColorLayer_rna_properties_get, NULL, NULL, MeshLoopColorLayer_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshLoopColorLayer_rna_type = {
	{(PropertyRNA *)&rna_MeshLoopColorLayer_name, (PropertyRNA *)&rna_MeshLoopColorLayer_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoopColorLayer_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_MeshLoopColorLayer_name = {
	{(PropertyRNA *)&rna_MeshLoopColorLayer_active, (PropertyRNA *)&rna_MeshLoopColorLayer_rna_type,
	-1, "name", 262145, 0, 0, "Name",
	"Name of Vertex color layer",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {64, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoopColorLayer_name_get, MeshLoopColorLayer_name_length, MeshLoopColorLayer_name_set, NULL, NULL, NULL, 64, ""
};

BoolPropertyRNA rna_MeshLoopColorLayer_active = {
	{(PropertyRNA *)&rna_MeshLoopColorLayer_active_render, (PropertyRNA *)&rna_MeshLoopColorLayer_name,
	-1, "active", 3, 0, 0, "Active",
	"Sets the layer as active for display and editing",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoopColorLayer_active_get, MeshLoopColorLayer_active_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_MeshLoopColorLayer_active_render = {
	{(PropertyRNA *)&rna_MeshLoopColorLayer_data, (PropertyRNA *)&rna_MeshLoopColorLayer_active,
	-1, "active_render", 3, 0, 0, "Active Render",
	"Sets the layer as active for rendering",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoopColorLayer_active_render_get, MeshLoopColorLayer_active_render_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

CollectionPropertyRNA rna_MeshLoopColorLayer_data = {
	{NULL, (PropertyRNA *)&rna_MeshLoopColorLayer_active_render,
	-1, "data", 0, 0, 8, "Data",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoopColorLayer_data_begin, MeshLoopColorLayer_data_next, MeshLoopColorLayer_data_end, MeshLoopColorLayer_data_get, MeshLoopColorLayer_data_length, MeshLoopColorLayer_data_lookup_int, NULL, NULL, &RNA_MeshLoopColor
};

StructRNA RNA_MeshLoopColorLayer = {
	{(ContainerRNA *)&RNA_MeshLoopColor, (ContainerRNA *)&RNA_MeshColor,
	NULL,
	{(PropertyRNA *)&rna_MeshLoopColorLayer_rna_properties, (PropertyRNA *)&rna_MeshLoopColorLayer_data}},
	"MeshLoopColorLayer", NULL, NULL, 4, "Mesh Vertex Color Layer",
	"Layer of vertex colors in a Mesh data-block",
	"*", 202,
	(PropertyRNA *)&rna_MeshLoopColorLayer_name, (PropertyRNA *)&rna_MeshLoopColorLayer_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshLoopColorLayer_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Vertex Color */
CollectionPropertyRNA rna_MeshLoopColor_rna_properties = {
	{(PropertyRNA *)&rna_MeshLoopColor_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoopColor_rna_properties_begin, MeshLoopColor_rna_properties_next, MeshLoopColor_rna_properties_end, MeshLoopColor_rna_properties_get, NULL, NULL, MeshLoopColor_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshLoopColor_rna_type = {
	{(PropertyRNA *)&rna_MeshLoopColor_color, (PropertyRNA *)&rna_MeshLoopColor_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshLoopColor_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

static float rna_MeshLoopColor_color_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

FloatPropertyRNA rna_MeshLoopColor_color = {
	{NULL, (PropertyRNA *)&rna_MeshLoopColor_rna_type,
	-1, "color", 3, 0, 0, "Color",
	"",
	0, "*",
	PROP_FLOAT, PROP_COLOR | PROP_UNIT_NONE, NULL, 1, {3, 0, 0}, 3,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, MeshLoopColor_color_get, MeshLoopColor_color_set, NULL, NULL, NULL, NULL, NULL, NULL, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, 0.0f, rna_MeshLoopColor_color_default
};

StructRNA RNA_MeshLoopColor = {
	{(ContainerRNA *)&RNA_MeshVertexFloatPropertyLayer, (ContainerRNA *)&RNA_MeshLoopColorLayer,
	NULL,
	{(PropertyRNA *)&rna_MeshLoopColor_rna_properties, (PropertyRNA *)&rna_MeshLoopColor_color}},
	"MeshLoopColor", NULL, NULL, 4, "Mesh Vertex Color",
	"Vertex loop colors in a Mesh",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshLoopColor_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshColor_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Vertex Float Property Layer */
CollectionPropertyRNA rna_MeshVertexFloatPropertyLayer_rna_properties = {
	{(PropertyRNA *)&rna_MeshVertexFloatPropertyLayer_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexFloatPropertyLayer_rna_properties_begin, MeshVertexFloatPropertyLayer_rna_properties_next, MeshVertexFloatPropertyLayer_rna_properties_end, MeshVertexFloatPropertyLayer_rna_properties_get, NULL, NULL, MeshVertexFloatPropertyLayer_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshVertexFloatPropertyLayer_rna_type = {
	{(PropertyRNA *)&rna_MeshVertexFloatPropertyLayer_name, (PropertyRNA *)&rna_MeshVertexFloatPropertyLayer_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexFloatPropertyLayer_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_MeshVertexFloatPropertyLayer_name = {
	{(PropertyRNA *)&rna_MeshVertexFloatPropertyLayer_data, (PropertyRNA *)&rna_MeshVertexFloatPropertyLayer_rna_type,
	-1, "name", 262145, 0, 0, "Name",
	"",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {64, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexFloatPropertyLayer_name_get, MeshVertexFloatPropertyLayer_name_length, MeshVertexFloatPropertyLayer_name_set, NULL, NULL, NULL, 64, ""
};

CollectionPropertyRNA rna_MeshVertexFloatPropertyLayer_data = {
	{NULL, (PropertyRNA *)&rna_MeshVertexFloatPropertyLayer_name,
	-1, "data", 0, 0, 8, "Data",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexFloatPropertyLayer_data_begin, MeshVertexFloatPropertyLayer_data_next, MeshVertexFloatPropertyLayer_data_end, MeshVertexFloatPropertyLayer_data_get, MeshVertexFloatPropertyLayer_data_length, MeshVertexFloatPropertyLayer_data_lookup_int, NULL, NULL, &RNA_MeshVertexFloatProperty
};

StructRNA RNA_MeshVertexFloatPropertyLayer = {
	{(ContainerRNA *)&RNA_MeshVertexFloatProperty, (ContainerRNA *)&RNA_MeshLoopColor,
	NULL,
	{(PropertyRNA *)&rna_MeshVertexFloatPropertyLayer_rna_properties, (PropertyRNA *)&rna_MeshVertexFloatPropertyLayer_data}},
	"MeshVertexFloatPropertyLayer", NULL, NULL, 4, "Mesh Vertex Float Property Layer",
	"User defined layer of floating point number values",
	"*", 17,
	(PropertyRNA *)&rna_MeshVertexFloatPropertyLayer_name, (PropertyRNA *)&rna_MeshVertexFloatPropertyLayer_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshVertexFloatPropertyLayer_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Vertex Float Property */
CollectionPropertyRNA rna_MeshVertexFloatProperty_rna_properties = {
	{(PropertyRNA *)&rna_MeshVertexFloatProperty_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexFloatProperty_rna_properties_begin, MeshVertexFloatProperty_rna_properties_next, MeshVertexFloatProperty_rna_properties_end, MeshVertexFloatProperty_rna_properties_get, NULL, NULL, MeshVertexFloatProperty_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshVertexFloatProperty_rna_type = {
	{(PropertyRNA *)&rna_MeshVertexFloatProperty_value, (PropertyRNA *)&rna_MeshVertexFloatProperty_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexFloatProperty_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

FloatPropertyRNA rna_MeshVertexFloatProperty_value = {
	{NULL, (PropertyRNA *)&rna_MeshVertexFloatProperty_rna_type,
	-1, "value", 3, 0, 4, "Value",
	"",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	offsetof(MFloatProperty, f), 4, NULL},
	MeshVertexFloatProperty_value_get, MeshVertexFloatProperty_value_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, NULL
};

StructRNA RNA_MeshVertexFloatProperty = {
	{(ContainerRNA *)&RNA_MeshPolygonFloatPropertyLayer, (ContainerRNA *)&RNA_MeshVertexFloatPropertyLayer,
	NULL,
	{(PropertyRNA *)&rna_MeshVertexFloatProperty_rna_properties, (PropertyRNA *)&rna_MeshVertexFloatProperty_value}},
	"MeshVertexFloatProperty", NULL, NULL, 4, "Mesh Vertex Float Property",
	"User defined floating point number value in a float properties layer",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshVertexFloatProperty_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshVertexFloatProperty_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Polygon Float Property Layer */
CollectionPropertyRNA rna_MeshPolygonFloatPropertyLayer_rna_properties = {
	{(PropertyRNA *)&rna_MeshPolygonFloatPropertyLayer_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonFloatPropertyLayer_rna_properties_begin, MeshPolygonFloatPropertyLayer_rna_properties_next, MeshPolygonFloatPropertyLayer_rna_properties_end, MeshPolygonFloatPropertyLayer_rna_properties_get, NULL, NULL, MeshPolygonFloatPropertyLayer_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshPolygonFloatPropertyLayer_rna_type = {
	{(PropertyRNA *)&rna_MeshPolygonFloatPropertyLayer_name, (PropertyRNA *)&rna_MeshPolygonFloatPropertyLayer_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonFloatPropertyLayer_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_MeshPolygonFloatPropertyLayer_name = {
	{(PropertyRNA *)&rna_MeshPolygonFloatPropertyLayer_data, (PropertyRNA *)&rna_MeshPolygonFloatPropertyLayer_rna_type,
	-1, "name", 262145, 0, 0, "Name",
	"",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {64, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonFloatPropertyLayer_name_get, MeshPolygonFloatPropertyLayer_name_length, MeshPolygonFloatPropertyLayer_name_set, NULL, NULL, NULL, 64, ""
};

CollectionPropertyRNA rna_MeshPolygonFloatPropertyLayer_data = {
	{NULL, (PropertyRNA *)&rna_MeshPolygonFloatPropertyLayer_name,
	-1, "data", 0, 0, 8, "Data",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonFloatPropertyLayer_data_begin, MeshPolygonFloatPropertyLayer_data_next, MeshPolygonFloatPropertyLayer_data_end, MeshPolygonFloatPropertyLayer_data_get, MeshPolygonFloatPropertyLayer_data_length, MeshPolygonFloatPropertyLayer_data_lookup_int, NULL, NULL, &RNA_MeshPolygonFloatProperty
};

StructRNA RNA_MeshPolygonFloatPropertyLayer = {
	{(ContainerRNA *)&RNA_MeshPolygonFloatProperty, (ContainerRNA *)&RNA_MeshVertexFloatProperty,
	NULL,
	{(PropertyRNA *)&rna_MeshPolygonFloatPropertyLayer_rna_properties, (PropertyRNA *)&rna_MeshPolygonFloatPropertyLayer_data}},
	"MeshPolygonFloatPropertyLayer", NULL, NULL, 4, "Mesh Polygon Float Property Layer",
	"User defined layer of floating point number values",
	"*", 17,
	(PropertyRNA *)&rna_MeshPolygonFloatPropertyLayer_name, (PropertyRNA *)&rna_MeshPolygonFloatPropertyLayer_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshPolygonFloatPropertyLayer_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Polygon Float Property */
CollectionPropertyRNA rna_MeshPolygonFloatProperty_rna_properties = {
	{(PropertyRNA *)&rna_MeshPolygonFloatProperty_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonFloatProperty_rna_properties_begin, MeshPolygonFloatProperty_rna_properties_next, MeshPolygonFloatProperty_rna_properties_end, MeshPolygonFloatProperty_rna_properties_get, NULL, NULL, MeshPolygonFloatProperty_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshPolygonFloatProperty_rna_type = {
	{(PropertyRNA *)&rna_MeshPolygonFloatProperty_value, (PropertyRNA *)&rna_MeshPolygonFloatProperty_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonFloatProperty_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

FloatPropertyRNA rna_MeshPolygonFloatProperty_value = {
	{NULL, (PropertyRNA *)&rna_MeshPolygonFloatProperty_rna_type,
	-1, "value", 3, 0, 4, "Value",
	"",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	offsetof(MFloatProperty, f), 4, NULL},
	MeshPolygonFloatProperty_value_get, MeshPolygonFloatProperty_value_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, NULL
};

StructRNA RNA_MeshPolygonFloatProperty = {
	{(ContainerRNA *)&RNA_MeshVertexIntPropertyLayer, (ContainerRNA *)&RNA_MeshPolygonFloatPropertyLayer,
	NULL,
	{(PropertyRNA *)&rna_MeshPolygonFloatProperty_rna_properties, (PropertyRNA *)&rna_MeshPolygonFloatProperty_value}},
	"MeshPolygonFloatProperty", NULL, NULL, 4, "Mesh Polygon Float Property",
	"User defined floating point number value in a float properties layer",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshPolygonFloatProperty_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshPolygonFloatProperty_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Vertex Int Property Layer */
CollectionPropertyRNA rna_MeshVertexIntPropertyLayer_rna_properties = {
	{(PropertyRNA *)&rna_MeshVertexIntPropertyLayer_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexIntPropertyLayer_rna_properties_begin, MeshVertexIntPropertyLayer_rna_properties_next, MeshVertexIntPropertyLayer_rna_properties_end, MeshVertexIntPropertyLayer_rna_properties_get, NULL, NULL, MeshVertexIntPropertyLayer_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshVertexIntPropertyLayer_rna_type = {
	{(PropertyRNA *)&rna_MeshVertexIntPropertyLayer_name, (PropertyRNA *)&rna_MeshVertexIntPropertyLayer_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexIntPropertyLayer_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_MeshVertexIntPropertyLayer_name = {
	{(PropertyRNA *)&rna_MeshVertexIntPropertyLayer_data, (PropertyRNA *)&rna_MeshVertexIntPropertyLayer_rna_type,
	-1, "name", 262145, 0, 0, "Name",
	"",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {64, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexIntPropertyLayer_name_get, MeshVertexIntPropertyLayer_name_length, MeshVertexIntPropertyLayer_name_set, NULL, NULL, NULL, 64, ""
};

CollectionPropertyRNA rna_MeshVertexIntPropertyLayer_data = {
	{NULL, (PropertyRNA *)&rna_MeshVertexIntPropertyLayer_name,
	-1, "data", 0, 0, 8, "Data",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexIntPropertyLayer_data_begin, MeshVertexIntPropertyLayer_data_next, MeshVertexIntPropertyLayer_data_end, MeshVertexIntPropertyLayer_data_get, MeshVertexIntPropertyLayer_data_length, MeshVertexIntPropertyLayer_data_lookup_int, NULL, NULL, &RNA_MeshVertexIntProperty
};

StructRNA RNA_MeshVertexIntPropertyLayer = {
	{(ContainerRNA *)&RNA_MeshVertexIntProperty, (ContainerRNA *)&RNA_MeshPolygonFloatProperty,
	NULL,
	{(PropertyRNA *)&rna_MeshVertexIntPropertyLayer_rna_properties, (PropertyRNA *)&rna_MeshVertexIntPropertyLayer_data}},
	"MeshVertexIntPropertyLayer", NULL, NULL, 4, "Mesh Vertex Int Property Layer",
	"User defined layer of integer number values",
	"*", 17,
	(PropertyRNA *)&rna_MeshVertexIntPropertyLayer_name, (PropertyRNA *)&rna_MeshVertexIntPropertyLayer_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshVertexIntPropertyLayer_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Vertex Int Property */
CollectionPropertyRNA rna_MeshVertexIntProperty_rna_properties = {
	{(PropertyRNA *)&rna_MeshVertexIntProperty_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexIntProperty_rna_properties_begin, MeshVertexIntProperty_rna_properties_next, MeshVertexIntProperty_rna_properties_end, MeshVertexIntProperty_rna_properties_get, NULL, NULL, MeshVertexIntProperty_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshVertexIntProperty_rna_type = {
	{(PropertyRNA *)&rna_MeshVertexIntProperty_value, (PropertyRNA *)&rna_MeshVertexIntProperty_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexIntProperty_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

IntPropertyRNA rna_MeshVertexIntProperty_value = {
	{NULL, (PropertyRNA *)&rna_MeshVertexIntProperty_rna_type,
	-1, "value", 3, 0, 4, "Value",
	"",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	offsetof(MIntProperty, i), 0, NULL},
	MeshVertexIntProperty_value_get, MeshVertexIntProperty_value_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	-10000, 10000, INT_MIN, INT_MAX, 1, 0, NULL
};

StructRNA RNA_MeshVertexIntProperty = {
	{(ContainerRNA *)&RNA_MeshPolygonIntPropertyLayer, (ContainerRNA *)&RNA_MeshVertexIntPropertyLayer,
	NULL,
	{(PropertyRNA *)&rna_MeshVertexIntProperty_rna_properties, (PropertyRNA *)&rna_MeshVertexIntProperty_value}},
	"MeshVertexIntProperty", NULL, NULL, 4, "Mesh Vertex Int Property",
	"User defined integer number value in an integer properties layer",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshVertexIntProperty_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshVertexIntProperty_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Polygon Int Property Layer */
CollectionPropertyRNA rna_MeshPolygonIntPropertyLayer_rna_properties = {
	{(PropertyRNA *)&rna_MeshPolygonIntPropertyLayer_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonIntPropertyLayer_rna_properties_begin, MeshPolygonIntPropertyLayer_rna_properties_next, MeshPolygonIntPropertyLayer_rna_properties_end, MeshPolygonIntPropertyLayer_rna_properties_get, NULL, NULL, MeshPolygonIntPropertyLayer_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshPolygonIntPropertyLayer_rna_type = {
	{(PropertyRNA *)&rna_MeshPolygonIntPropertyLayer_name, (PropertyRNA *)&rna_MeshPolygonIntPropertyLayer_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonIntPropertyLayer_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_MeshPolygonIntPropertyLayer_name = {
	{(PropertyRNA *)&rna_MeshPolygonIntPropertyLayer_data, (PropertyRNA *)&rna_MeshPolygonIntPropertyLayer_rna_type,
	-1, "name", 262145, 0, 0, "Name",
	"",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {64, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonIntPropertyLayer_name_get, MeshPolygonIntPropertyLayer_name_length, MeshPolygonIntPropertyLayer_name_set, NULL, NULL, NULL, 64, ""
};

CollectionPropertyRNA rna_MeshPolygonIntPropertyLayer_data = {
	{NULL, (PropertyRNA *)&rna_MeshPolygonIntPropertyLayer_name,
	-1, "data", 0, 0, 8, "Data",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonIntPropertyLayer_data_begin, MeshPolygonIntPropertyLayer_data_next, MeshPolygonIntPropertyLayer_data_end, MeshPolygonIntPropertyLayer_data_get, MeshPolygonIntPropertyLayer_data_length, MeshPolygonIntPropertyLayer_data_lookup_int, NULL, NULL, &RNA_MeshPolygonIntProperty
};

StructRNA RNA_MeshPolygonIntPropertyLayer = {
	{(ContainerRNA *)&RNA_MeshPolygonIntProperty, (ContainerRNA *)&RNA_MeshVertexIntProperty,
	NULL,
	{(PropertyRNA *)&rna_MeshPolygonIntPropertyLayer_rna_properties, (PropertyRNA *)&rna_MeshPolygonIntPropertyLayer_data}},
	"MeshPolygonIntPropertyLayer", NULL, NULL, 4, "Mesh Polygon Int Property Layer",
	"User defined layer of integer number values",
	"*", 17,
	(PropertyRNA *)&rna_MeshPolygonIntPropertyLayer_name, (PropertyRNA *)&rna_MeshPolygonIntPropertyLayer_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshPolygonIntPropertyLayer_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Polygon Int Property */
CollectionPropertyRNA rna_MeshPolygonIntProperty_rna_properties = {
	{(PropertyRNA *)&rna_MeshPolygonIntProperty_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonIntProperty_rna_properties_begin, MeshPolygonIntProperty_rna_properties_next, MeshPolygonIntProperty_rna_properties_end, MeshPolygonIntProperty_rna_properties_get, NULL, NULL, MeshPolygonIntProperty_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshPolygonIntProperty_rna_type = {
	{(PropertyRNA *)&rna_MeshPolygonIntProperty_value, (PropertyRNA *)&rna_MeshPolygonIntProperty_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonIntProperty_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

IntPropertyRNA rna_MeshPolygonIntProperty_value = {
	{NULL, (PropertyRNA *)&rna_MeshPolygonIntProperty_rna_type,
	-1, "value", 3, 0, 4, "Value",
	"",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	offsetof(MIntProperty, i), 0, NULL},
	MeshPolygonIntProperty_value_get, MeshPolygonIntProperty_value_set, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	-10000, 10000, INT_MIN, INT_MAX, 1, 0, NULL
};

StructRNA RNA_MeshPolygonIntProperty = {
	{(ContainerRNA *)&RNA_MeshVertexStringPropertyLayer, (ContainerRNA *)&RNA_MeshPolygonIntPropertyLayer,
	NULL,
	{(PropertyRNA *)&rna_MeshPolygonIntProperty_rna_properties, (PropertyRNA *)&rna_MeshPolygonIntProperty_value}},
	"MeshPolygonIntProperty", NULL, NULL, 4, "Mesh Polygon Int Property",
	"User defined integer number value in an integer properties layer",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshPolygonIntProperty_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshPolygonIntProperty_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Vertex String Property Layer */
CollectionPropertyRNA rna_MeshVertexStringPropertyLayer_rna_properties = {
	{(PropertyRNA *)&rna_MeshVertexStringPropertyLayer_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexStringPropertyLayer_rna_properties_begin, MeshVertexStringPropertyLayer_rna_properties_next, MeshVertexStringPropertyLayer_rna_properties_end, MeshVertexStringPropertyLayer_rna_properties_get, NULL, NULL, MeshVertexStringPropertyLayer_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshVertexStringPropertyLayer_rna_type = {
	{(PropertyRNA *)&rna_MeshVertexStringPropertyLayer_name, (PropertyRNA *)&rna_MeshVertexStringPropertyLayer_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexStringPropertyLayer_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_MeshVertexStringPropertyLayer_name = {
	{(PropertyRNA *)&rna_MeshVertexStringPropertyLayer_data, (PropertyRNA *)&rna_MeshVertexStringPropertyLayer_rna_type,
	-1, "name", 262145, 0, 0, "Name",
	"",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {64, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexStringPropertyLayer_name_get, MeshVertexStringPropertyLayer_name_length, MeshVertexStringPropertyLayer_name_set, NULL, NULL, NULL, 64, ""
};

CollectionPropertyRNA rna_MeshVertexStringPropertyLayer_data = {
	{NULL, (PropertyRNA *)&rna_MeshVertexStringPropertyLayer_name,
	-1, "data", 0, 0, 8, "Data",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexStringPropertyLayer_data_begin, MeshVertexStringPropertyLayer_data_next, MeshVertexStringPropertyLayer_data_end, MeshVertexStringPropertyLayer_data_get, MeshVertexStringPropertyLayer_data_length, MeshVertexStringPropertyLayer_data_lookup_int, NULL, NULL, &RNA_MeshVertexStringProperty
};

StructRNA RNA_MeshVertexStringPropertyLayer = {
	{(ContainerRNA *)&RNA_MeshVertexStringProperty, (ContainerRNA *)&RNA_MeshPolygonIntProperty,
	NULL,
	{(PropertyRNA *)&rna_MeshVertexStringPropertyLayer_rna_properties, (PropertyRNA *)&rna_MeshVertexStringPropertyLayer_data}},
	"MeshVertexStringPropertyLayer", NULL, NULL, 4, "Mesh Vertex String Property Layer",
	"User defined layer of string text values",
	"*", 17,
	(PropertyRNA *)&rna_MeshVertexStringPropertyLayer_name, (PropertyRNA *)&rna_MeshVertexStringPropertyLayer_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshVertexStringPropertyLayer_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Vertex String Property */
CollectionPropertyRNA rna_MeshVertexStringProperty_rna_properties = {
	{(PropertyRNA *)&rna_MeshVertexStringProperty_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexStringProperty_rna_properties_begin, MeshVertexStringProperty_rna_properties_next, MeshVertexStringProperty_rna_properties_end, MeshVertexStringProperty_rna_properties_get, NULL, NULL, MeshVertexStringProperty_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshVertexStringProperty_rna_type = {
	{(PropertyRNA *)&rna_MeshVertexStringProperty_value, (PropertyRNA *)&rna_MeshVertexStringProperty_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexStringProperty_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_MeshVertexStringProperty_value = {
	{NULL, (PropertyRNA *)&rna_MeshVertexStringProperty_rna_type,
	-1, "value", 262145, 0, 0, "Value",
	"",
	0, "*",
	PROP_STRING, PROP_BYTESTRING | PROP_UNIT_NONE, NULL, 0, {255, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshVertexStringProperty_value_get, MeshVertexStringProperty_value_length, MeshVertexStringProperty_value_set, NULL, NULL, NULL, 255, ""
};

StructRNA RNA_MeshVertexStringProperty = {
	{(ContainerRNA *)&RNA_MeshPolygonStringPropertyLayer, (ContainerRNA *)&RNA_MeshVertexStringPropertyLayer,
	NULL,
	{(PropertyRNA *)&rna_MeshVertexStringProperty_rna_properties, (PropertyRNA *)&rna_MeshVertexStringProperty_value}},
	"MeshVertexStringProperty", NULL, NULL, 4, "Mesh Vertex String Property",
	"User defined string text value in a string properties layer",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshVertexStringProperty_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshVertexStringProperty_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Polygon String Property Layer */
CollectionPropertyRNA rna_MeshPolygonStringPropertyLayer_rna_properties = {
	{(PropertyRNA *)&rna_MeshPolygonStringPropertyLayer_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonStringPropertyLayer_rna_properties_begin, MeshPolygonStringPropertyLayer_rna_properties_next, MeshPolygonStringPropertyLayer_rna_properties_end, MeshPolygonStringPropertyLayer_rna_properties_get, NULL, NULL, MeshPolygonStringPropertyLayer_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshPolygonStringPropertyLayer_rna_type = {
	{(PropertyRNA *)&rna_MeshPolygonStringPropertyLayer_name, (PropertyRNA *)&rna_MeshPolygonStringPropertyLayer_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonStringPropertyLayer_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_MeshPolygonStringPropertyLayer_name = {
	{(PropertyRNA *)&rna_MeshPolygonStringPropertyLayer_data, (PropertyRNA *)&rna_MeshPolygonStringPropertyLayer_rna_type,
	-1, "name", 262145, 0, 0, "Name",
	"",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {64, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonStringPropertyLayer_name_get, MeshPolygonStringPropertyLayer_name_length, MeshPolygonStringPropertyLayer_name_set, NULL, NULL, NULL, 64, ""
};

CollectionPropertyRNA rna_MeshPolygonStringPropertyLayer_data = {
	{NULL, (PropertyRNA *)&rna_MeshPolygonStringPropertyLayer_name,
	-1, "data", 0, 0, 8, "Data",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonStringPropertyLayer_data_begin, MeshPolygonStringPropertyLayer_data_next, MeshPolygonStringPropertyLayer_data_end, MeshPolygonStringPropertyLayer_data_get, MeshPolygonStringPropertyLayer_data_length, MeshPolygonStringPropertyLayer_data_lookup_int, NULL, NULL, &RNA_MeshPolygonStringProperty
};

StructRNA RNA_MeshPolygonStringPropertyLayer = {
	{(ContainerRNA *)&RNA_MeshPolygonStringProperty, (ContainerRNA *)&RNA_MeshVertexStringProperty,
	NULL,
	{(PropertyRNA *)&rna_MeshPolygonStringPropertyLayer_rna_properties, (PropertyRNA *)&rna_MeshPolygonStringPropertyLayer_data}},
	"MeshPolygonStringPropertyLayer", NULL, NULL, 4, "Mesh Polygon String Property Layer",
	"User defined layer of string text values",
	"*", 17,
	(PropertyRNA *)&rna_MeshPolygonStringPropertyLayer_name, (PropertyRNA *)&rna_MeshPolygonStringPropertyLayer_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshPolygonStringPropertyLayer_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Mesh Polygon String Property */
CollectionPropertyRNA rna_MeshPolygonStringProperty_rna_properties = {
	{(PropertyRNA *)&rna_MeshPolygonStringProperty_rna_type, NULL,
	-1, "rna_properties", 0, 0, 1, "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonStringProperty_rna_properties_begin, MeshPolygonStringProperty_rna_properties_next, MeshPolygonStringProperty_rna_properties_end, MeshPolygonStringProperty_rna_properties_get, NULL, NULL, MeshPolygonStringProperty_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_MeshPolygonStringProperty_rna_type = {
	{(PropertyRNA *)&rna_MeshPolygonStringProperty_value, (PropertyRNA *)&rna_MeshPolygonStringProperty_rna_properties,
	-1, "rna_type", 8912896, 0, 0, "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonStringProperty_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_MeshPolygonStringProperty_value = {
	{NULL, (PropertyRNA *)&rna_MeshPolygonStringProperty_rna_type,
	-1, "value", 262145, 0, 0, "Value",
	"",
	0, "*",
	PROP_STRING, PROP_BYTESTRING | PROP_UNIT_NONE, NULL, 0, {255, 0, 0}, 0,
	rna_Mesh_update_data, 0, NULL, NULL,
	0, -1, NULL},
	MeshPolygonStringProperty_value_get, MeshPolygonStringProperty_value_length, MeshPolygonStringProperty_value_set, NULL, NULL, NULL, 255, ""
};

StructRNA RNA_MeshPolygonStringProperty = {
	{(ContainerRNA *)&RNA_MetaElement, (ContainerRNA *)&RNA_MeshPolygonStringPropertyLayer,
	NULL,
	{(PropertyRNA *)&rna_MeshPolygonStringProperty_rna_properties, (PropertyRNA *)&rna_MeshPolygonStringProperty_value}},
	"MeshPolygonStringProperty", NULL, NULL, 4, "Mesh Polygon String Property",
	"User defined string text value in a string properties layer",
	"*", 17,
	NULL, (PropertyRNA *)&rna_MeshPolygonStringProperty_rna_properties,
	NULL,
	NULL,
	NULL,
	rna_MeshPolygonStringProperty_path,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

