
/* 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_ID.c"

/* Autogenerated Functions */


CollectionPropertyRNA rna_UnknownType_rna_properties;
PointerPropertyRNA rna_UnknownType_rna_type;


CollectionPropertyRNA rna_AnyType_rna_properties;
PointerPropertyRNA rna_AnyType_rna_type;


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

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;



CollectionPropertyRNA rna_ImagePreview_rna_properties;
PointerPropertyRNA rna_ImagePreview_rna_type;
BoolPropertyRNA rna_ImagePreview_is_image_custom;
IntPropertyRNA rna_ImagePreview_image_size;
IntPropertyRNA rna_ImagePreview_image_pixels;
FloatPropertyRNA rna_ImagePreview_image_pixels_float;
BoolPropertyRNA rna_ImagePreview_is_icon_custom;
IntPropertyRNA rna_ImagePreview_icon_size;
IntPropertyRNA rna_ImagePreview_icon_pixels;
FloatPropertyRNA rna_ImagePreview_icon_pixels_float;
IntPropertyRNA rna_ImagePreview_icon_id;

extern FunctionRNA rna_ImagePreview_reload_func;


CollectionPropertyRNA rna_PropertyGroupItem_rna_properties;
PointerPropertyRNA rna_PropertyGroupItem_rna_type;
StringPropertyRNA rna_PropertyGroupItem_string;
IntPropertyRNA rna_PropertyGroupItem_int;
IntPropertyRNA rna_PropertyGroupItem_int_array;
FloatPropertyRNA rna_PropertyGroupItem_float;
FloatPropertyRNA rna_PropertyGroupItem_float_array;
FloatPropertyRNA rna_PropertyGroupItem_double;
FloatPropertyRNA rna_PropertyGroupItem_double_array;
PointerPropertyRNA rna_PropertyGroupItem_group;
CollectionPropertyRNA rna_PropertyGroupItem_collection;
CollectionPropertyRNA rna_PropertyGroupItem_idp_array;


CollectionPropertyRNA rna_PropertyGroup_rna_properties;
PointerPropertyRNA rna_PropertyGroup_rna_type;
StringPropertyRNA rna_PropertyGroup_name;


CollectionPropertyRNA rna_IDMaterials_rna_properties;
PointerPropertyRNA rna_IDMaterials_rna_type;

extern FunctionRNA rna_IDMaterials_append_func;
extern PointerPropertyRNA rna_IDMaterials_append_material;

extern FunctionRNA rna_IDMaterials_pop_func;
extern IntPropertyRNA rna_IDMaterials_pop_index;
extern BoolPropertyRNA rna_IDMaterials_pop_update_data;
extern PointerPropertyRNA rna_IDMaterials_pop_material;

extern FunctionRNA rna_IDMaterials_clear_func;
extern BoolPropertyRNA rna_IDMaterials_clear_update_data;



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;

StringPropertyRNA rna_Library_filepath;
PointerPropertyRNA rna_Library_parent;
PointerPropertyRNA rna_Library_packed_file;

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_Library_reload_func;

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

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

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

	rna_builtin_properties_begin(iter, ptr);

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

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

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

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

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

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

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

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

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

	rna_builtin_properties_begin(iter, ptr);

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

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

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

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

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

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

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

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

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

	rna_builtin_properties_begin(iter, ptr);

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

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

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

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

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

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

void ID_name_get(PointerRNA *ptr, char *value)
{
	rna_ID_name_get(ptr, value);
}

int ID_name_length(PointerRNA *ptr)
{
	return rna_ID_name_length(ptr);
}

void ID_name_set(PointerRNA *ptr, const char *value)
{
	rna_ID_name_set(ptr, value);
}

int ID_users_get(PointerRNA *ptr)
{
	ID *data = (ID *)(ptr->data);
	return (int)(data->us);
}

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

void ID_use_fake_user_set(PointerRNA *ptr, int value)
{
	rna_ID_fake_user_set(ptr, value);
}

int ID_tag_get(PointerRNA *ptr)
{
	ID *data = (ID *)(ptr->data);
	return (((data->tag) & 1024) != 0);
}

void ID_tag_set(PointerRNA *ptr, int value)
{
	ID *data = (ID *)(ptr->data);
	if (value) data->tag |= 1024;
	else data->tag &= ~1024;
}

int ID_is_updated_get(PointerRNA *ptr)
{
	ID *data = (ID *)(ptr->data);
	return (((data->tag) & 4096) != 0);
}

int ID_is_updated_data_get(PointerRNA *ptr)
{
	ID *data = (ID *)(ptr->data);
	return (((data->tag) & 8192) != 0);
}

int ID_is_library_indirect_get(PointerRNA *ptr)
{
	ID *data = (ID *)(ptr->data);
	return (((data->tag) & 2) != 0);
}

PointerRNA ID_library_get(PointerRNA *ptr)
{
	ID *data = (ID *)(ptr->data);
	return rna_pointer_inherit_refine(ptr, &RNA_Library, data->lib);
}

PointerRNA ID_preview_get(PointerRNA *ptr)
{
	return rna_IDPreview_get(ptr);
}

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

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

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

	rna_builtin_properties_begin(iter, ptr);

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

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

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

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

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

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

int ImagePreview_is_image_custom_get(PointerRNA *ptr)
{
	PreviewImage *data = (PreviewImage *)(ptr->data);
	return (((data->flag[ICON_SIZE_PREVIEW]) & 2) != 0);
}

void ImagePreview_is_image_custom_set(PointerRNA *ptr, int value)
{
	rna_ImagePreview_is_image_custom_set(ptr, value);
}

void ImagePreview_image_size_get(PointerRNA *ptr, int values[2])
{
	rna_ImagePreview_image_size_get(ptr, values);
}

void ImagePreview_image_size_set(PointerRNA *ptr, const int values[2])
{
	rna_ImagePreview_image_size_set(ptr, values);
}

void ImagePreview_image_pixels_get(PointerRNA *ptr, int values[])
{
	rna_ImagePreview_image_pixels_get(ptr, values);
}

void ImagePreview_image_pixels_set(PointerRNA *ptr, const int values[])
{
	rna_ImagePreview_image_pixels_set(ptr, values);
}

void ImagePreview_image_pixels_float_get(PointerRNA *ptr, float values[])
{
	rna_ImagePreview_image_pixels_float_get(ptr, values);
}

void ImagePreview_image_pixels_float_set(PointerRNA *ptr, const float values[])
{
	rna_ImagePreview_image_pixels_float_set(ptr, values);
}

int ImagePreview_is_icon_custom_get(PointerRNA *ptr)
{
	PreviewImage *data = (PreviewImage *)(ptr->data);
	return (((data->flag[ICON_SIZE_ICON]) & 2) != 0);
}

void ImagePreview_is_icon_custom_set(PointerRNA *ptr, int value)
{
	rna_ImagePreview_is_icon_custom_set(ptr, value);
}

void ImagePreview_icon_size_get(PointerRNA *ptr, int values[2])
{
	rna_ImagePreview_icon_size_get(ptr, values);
}

void ImagePreview_icon_size_set(PointerRNA *ptr, const int values[2])
{
	rna_ImagePreview_icon_size_set(ptr, values);
}

void ImagePreview_icon_pixels_get(PointerRNA *ptr, int values[])
{
	rna_ImagePreview_icon_pixels_get(ptr, values);
}

void ImagePreview_icon_pixels_set(PointerRNA *ptr, const int values[])
{
	rna_ImagePreview_icon_pixels_set(ptr, values);
}

void ImagePreview_icon_pixels_float_get(PointerRNA *ptr, float values[])
{
	rna_ImagePreview_icon_pixels_float_get(ptr, values);
}

void ImagePreview_icon_pixels_float_set(PointerRNA *ptr, const float values[])
{
	rna_ImagePreview_icon_pixels_float_set(ptr, values);
}

int ImagePreview_icon_id_get(PointerRNA *ptr)
{
	return rna_ImagePreview_icon_id_get(ptr);
}

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

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

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

	rna_builtin_properties_begin(iter, ptr);

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

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

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

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

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

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

int PropertyGroupItem_idp_array_length(PointerRNA *ptr)
{
	return rna_IDPArray_length(ptr);
}

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

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

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

	rna_IDPArray_begin(iter, ptr);

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

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

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

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

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

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

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

	rna_builtin_properties_begin(iter, ptr);

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

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

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

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

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

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

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

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

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

	rna_builtin_properties_begin(iter, ptr);

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

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

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

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

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

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

void Library_filepath_get(PointerRNA *ptr, char *value)
{
	Library *data = (Library *)(ptr->data);
	BLI_strncpy(value, data->name, 1024);
}

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

void Library_filepath_set(PointerRNA *ptr, const char *value)
{
	rna_Library_filepath_set(ptr, value);
}

PointerRNA Library_parent_get(PointerRNA *ptr)
{
	Library *data = (Library *)(ptr->data);
	return rna_pointer_inherit_refine(ptr, &RNA_Library, data->parent);
}

PointerRNA Library_packed_file_get(PointerRNA *ptr)
{
	Library *data = (Library *)(ptr->data);
	return rna_pointer_inherit_refine(ptr, &RNA_PackedFile, data->packedfile);
}



struct ID *ID_copy(struct ID *_self, Main *bmain)
{
	return rna_ID_copy(_self, bmain);
}

void ID_copy_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_self;
	struct ID *id;
	char *_data, *_retdata;
	
	_self = (struct ID *)_ptr->data;
	_data = (char *)_parms->data;
	_retdata = _data;
	
	id = rna_ID_copy(_self, CTX_data_main(C));
	*((struct ID **)_retdata) = id;
}

void ID_user_clear(struct ID *_self)
{
	rna_ID_user_clear(_self);
}

void ID_user_clear_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_self;
	_self = (struct ID *)_ptr->data;
	
	rna_ID_user_clear(_self);
}

void ID_user_remap(struct ID *_self, Main *bmain, struct ID *new_id)
{
	rna_ID_user_remap(_self, bmain, new_id);
}

void ID_user_remap_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_self;
	struct ID *new_id;
	char *_data;
	
	_self = (struct ID *)_ptr->data;
	_data = (char *)_parms->data;
	new_id = *((struct ID **)_data);
	
	rna_ID_user_remap(_self, CTX_data_main(C), new_id);
}

struct ID *ID_make_local(struct ID *_self, Main *bmain, int clear_proxy)
{
	return rna_ID_make_local(_self, bmain, clear_proxy);
}

void ID_make_local_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_self;
	int clear_proxy;
	struct ID *id;
	char *_data, *_retdata;
	
	_self = (struct ID *)_ptr->data;
	_data = (char *)_parms->data;
	clear_proxy = *((int *)_data);
	_data += 4;
	_retdata = _data;
	
	id = rna_ID_make_local(_self, CTX_data_main(C), clear_proxy);
	*((struct ID **)_retdata) = id;
}

int ID_user_of_id(struct ID *_self, struct ID *id)
{
	return BKE_library_ID_use_ID(_self, id);
}

void ID_user_of_id_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_self;
	struct ID *id;
	int count;
	char *_data, *_retdata;
	
	_self = (struct ID *)_ptr->data;
	_data = (char *)_parms->data;
	id = *((struct ID **)_data);
	_data += 8;
	_retdata = _data;
	
	count = BKE_library_ID_use_ID(_self, id);
	*((int *)_retdata) = count;
}

struct AnimData *ID_animation_data_create(struct ID *_self, Main *bmain)
{
	return rna_ID_animation_data_create(_self, bmain);
}

void ID_animation_data_create_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_self;
	struct AnimData *anim_data;
	char *_data, *_retdata;
	
	_self = (struct ID *)_ptr->data;
	_data = (char *)_parms->data;
	_retdata = _data;
	
	anim_data = rna_ID_animation_data_create(_self, CTX_data_main(C));
	*((struct AnimData **)_retdata) = anim_data;
}

void ID_animation_data_clear(struct ID *_self, Main *bmain)
{
	rna_ID_animation_data_free(_self, bmain);
}

void ID_animation_data_clear_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_self;
	_self = (struct ID *)_ptr->data;
	
	rna_ID_animation_data_free(_self, CTX_data_main(C));
}

void ID_update_tag(struct ID *_self, ReportList *reports, int refresh)
{
	rna_ID_update_tag(_self, reports, refresh);
}

void ID_update_tag_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_self;
	int refresh;
	char *_data;
	
	_self = (struct ID *)_ptr->data;
	_data = (char *)_parms->data;
	refresh = *((int *)_data);
	
	rna_ID_update_tag(_self, reports, refresh);
}

/* Repeated prototypes to detect errors */

struct ID *rna_ID_copy(struct ID *_self, Main *bmain);
void rna_ID_user_clear(struct ID *_self);
void rna_ID_user_remap(struct ID *_self, Main *bmain, struct ID *new_id);
struct ID *rna_ID_make_local(struct ID *_self, Main *bmain, int clear_proxy);
int BKE_library_ID_use_ID(struct ID *_self, struct ID *id);
struct AnimData *rna_ID_animation_data_create(struct ID *_self, Main *bmain);
void rna_ID_animation_data_free(struct ID *_self, Main *bmain);
void rna_ID_update_tag(struct ID *_self, ReportList *reports, int refresh);

int ImagePreview_image_pixels_get_length(PointerRNA *ptr, int *arraylen)
{
	return rna_ImagePreview_image_pixels_get_length(ptr, arraylen);
}

int ImagePreview_image_pixels_float_get_length(PointerRNA *ptr, int *arraylen)
{
	return rna_ImagePreview_image_pixels_float_get_length(ptr, arraylen);
}

int ImagePreview_icon_pixels_get_length(PointerRNA *ptr, int *arraylen)
{
	return rna_ImagePreview_icon_pixels_get_length(ptr, arraylen);
}

int ImagePreview_icon_pixels_float_get_length(PointerRNA *ptr, int *arraylen)
{
	return rna_ImagePreview_icon_pixels_float_get_length(ptr, arraylen);
}

void ImagePreview_reload(struct PreviewImage *_self)
{
	rna_ImagePreview_icon_reload(_self);
}

void ImagePreview_reload_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct PreviewImage *_self;
	_self = (struct PreviewImage *)_ptr->data;
	
	rna_ImagePreview_icon_reload(_self);
}

/* Repeated prototypes to detect errors */

void rna_ImagePreview_icon_reload(struct PreviewImage *_self);



void IDMaterials_append(struct ID *_self, Main *bmain, struct Material *material)
{
	rna_IDMaterials_append_id(_self, bmain, material);
}

void IDMaterials_append_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_self;
	struct Material *material;
	char *_data;
	
	_self = (struct ID *)_ptr->data;
	_data = (char *)_parms->data;
	material = *((struct Material **)_data);
	
	rna_IDMaterials_append_id(_self, CTX_data_main(C), material);
}

struct Material *IDMaterials_pop(struct ID *_self, Main *bmain, ReportList *reports, int index, int update_data)
{
	return rna_IDMaterials_pop_id(_self, bmain, reports, index, update_data);
}

void IDMaterials_pop_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_self;
	int index;
	int update_data;
	struct Material *material;
	char *_data, *_retdata;
	
	_self = (struct ID *)_ptr->data;
	_data = (char *)_parms->data;
	index = *((int *)_data);
	_data += 4;
	update_data = *((int *)_data);
	_data += 4;
	_retdata = _data;
	
	material = rna_IDMaterials_pop_id(_self, CTX_data_main(C), reports, index, update_data);
	*((struct Material **)_retdata) = material;
}

void IDMaterials_clear(struct ID *_self, int update_data)
{
	rna_IDMaterials_clear_id(_self, update_data);
}

void IDMaterials_clear_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_self;
	int update_data;
	char *_data;
	
	_self = (struct ID *)_ptr->data;
	_data = (char *)_parms->data;
	update_data = *((int *)_data);
	
	rna_IDMaterials_clear_id(_self, update_data);
}

/* Repeated prototypes to detect errors */

void rna_IDMaterials_append_id(struct ID *_self, Main *bmain, struct Material *material);
struct Material *rna_IDMaterials_pop_id(struct ID *_self, Main *bmain, ReportList *reports, int index, int update_data);
void rna_IDMaterials_clear_id(struct ID *_self, int update_data);

void Library_reload(struct Library *_self, bContext *C, ReportList *reports)
{
	WM_lib_reload(_self, C, reports);
}

void Library_reload_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct Library *_self;
	_self = (struct Library *)_ptr->data;
	
	WM_lib_reload(_self, C, reports);
}

/* Repeated prototypes to detect errors */

void WM_lib_reload(struct Library *_self, bContext *C, ReportList *reports);

/* Unknown Type */
CollectionPropertyRNA rna_UnknownType_rna_properties = {
	{(PropertyRNA *)&rna_UnknownType_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},
	UnknownType_rna_properties_begin, UnknownType_rna_properties_next, UnknownType_rna_properties_end, UnknownType_rna_properties_get, NULL, NULL, UnknownType_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_UnknownType_rna_type = {
	{NULL, (PropertyRNA *)&rna_UnknownType_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},
	UnknownType_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StructRNA RNA_UnknownType = {
	{(ContainerRNA *)&RNA_AnyType, (ContainerRNA *)&RNA_BlenderRNA,
	NULL,
	{(PropertyRNA *)&rna_UnknownType_rna_properties, (PropertyRNA *)&rna_UnknownType_rna_type}},
	"UnknownType", NULL, NULL, 4, "Unknown Type",
	"Stub RNA type used for pointers to unknown or internal data",
	"*", 17,
	NULL, (PropertyRNA *)&rna_UnknownType_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* Any Type */
CollectionPropertyRNA rna_AnyType_rna_properties = {
	{(PropertyRNA *)&rna_AnyType_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},
	AnyType_rna_properties_begin, AnyType_rna_properties_next, AnyType_rna_properties_end, AnyType_rna_properties_get, NULL, NULL, AnyType_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_AnyType_rna_type = {
	{NULL, (PropertyRNA *)&rna_AnyType_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},
	AnyType_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StructRNA RNA_AnyType = {
	{(ContainerRNA *)&RNA_ID, (ContainerRNA *)&RNA_UnknownType,
	NULL,
	{(PropertyRNA *)&rna_AnyType_rna_properties, (PropertyRNA *)&rna_AnyType_rna_type}},
	"AnyType", NULL, NULL, 4, "Any Type",
	"RNA type used for pointers to any possible data",
	"*", 17,
	NULL, (PropertyRNA *)&rna_AnyType_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* ID */
CollectionPropertyRNA rna_ID_rna_properties = {
	{(PropertyRNA *)&rna_ID_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},
	ID_rna_properties_begin, ID_rna_properties_next, ID_rna_properties_end, ID_rna_properties_get, NULL, NULL, ID_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_ID_rna_type = {
	{(PropertyRNA *)&rna_ID_name, (PropertyRNA *)&rna_ID_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},
	ID_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_ID_name = {
	{(PropertyRNA *)&rna_ID_users, (PropertyRNA *)&rna_ID_rna_type,
	-1, "name", 262145, 0, 0, "Name",
	"Unique data-block ID name",
	0, "*",
	PROP_STRING, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {66, 0, 0}, 0,
	NULL, 301989893, rna_ID_name_editable, NULL,
	0, -1, NULL},
	ID_name_get, ID_name_length, ID_name_set, NULL, NULL, NULL, 64, ""
};

IntPropertyRNA rna_ID_users = {
	{(PropertyRNA *)&rna_ID_use_fake_user, (PropertyRNA *)&rna_ID_name,
	-1, "users", 2, 0, 4, "Users",
	"Number of times this data-block is referenced",
	0, "*",
	PROP_INT, PROP_UNSIGNED | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	offsetof(ID, us), 0, NULL},
	ID_users_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 10000, 0, INT_MAX, 1, 0, NULL
};

BoolPropertyRNA rna_ID_use_fake_user = {
	{(PropertyRNA *)&rna_ID_tag, (PropertyRNA *)&rna_ID_users,
	-1, "use_fake_user", 3, 0, 0, "Fake User",
	"Save this data-block even if it has no users",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	ID_use_fake_user_get, ID_use_fake_user_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_ID_tag = {
	{(PropertyRNA *)&rna_ID_is_updated, (PropertyRNA *)&rna_ID_use_fake_user,
	-1, "tag", 65539, 0, 0, "Tag",
	"Tools can use this to tag data for their own purposes (initial state is undefined)",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	ID_tag_get, ID_tag_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_ID_is_updated = {
	{(PropertyRNA *)&rna_ID_is_updated_data, (PropertyRNA *)&rna_ID_tag,
	-1, "is_updated", 2, 0, 0, "Is Updated",
	"Data-block is tagged for recalculation",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	ID_is_updated_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_ID_is_updated_data = {
	{(PropertyRNA *)&rna_ID_is_library_indirect, (PropertyRNA *)&rna_ID_is_updated,
	-1, "is_updated_data", 2, 0, 0, "Is Updated Data",
	"Data-block data is tagged for recalculation",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	ID_is_updated_data_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

BoolPropertyRNA rna_ID_is_library_indirect = {
	{(PropertyRNA *)&rna_ID_library, (PropertyRNA *)&rna_ID_is_updated_data,
	-1, "is_library_indirect", 2, 0, 0, "Is Indirect",
	"Is this ID block linked indirectly",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	ID_is_library_indirect_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

PointerPropertyRNA rna_ID_library = {
	{(PropertyRNA *)&rna_ID_preview, (PropertyRNA *)&rna_ID_is_library_indirect,
	-1, "library", 8388672, 0, 0, "Library",
	"Library file the data-block is linked from",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	ID_library_get, NULL, NULL, NULL,&RNA_Library
};

PointerPropertyRNA rna_ID_preview = {
	{NULL, (PropertyRNA *)&rna_ID_library,
	-1, "preview", 8388608, 0, 0, "Preview",
	"Preview image and icon of this data-block (None if not supported for this type of data)",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	ID_preview_get, NULL, NULL, NULL,&RNA_ImagePreview
};

PointerPropertyRNA rna_ID_copy_id = {
	{NULL, NULL,
	-1, "id", 8388608, 2, 0, "",
	"New copy of the ID",
	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_ID
};

FunctionRNA rna_ID_copy_func = {
	{(FunctionRNA *)&rna_ID_user_clear_func, NULL,
	NULL,
	{(PropertyRNA *)&rna_ID_copy_id, (PropertyRNA *)&rna_ID_copy_id}},
	"copy", 4, "Create a copy of this data-block (not supported for all data-blocks)",
	ID_copy_call,
	(PropertyRNA *)&rna_ID_copy_id
};

FunctionRNA rna_ID_user_clear_func = {
	{(FunctionRNA *)&rna_ID_user_remap_func, (FunctionRNA *)&rna_ID_copy_func,
	NULL,
	{NULL, NULL}},
	"user_clear", 0, "Clear the user count of a data-block so its not saved, on reload the data will be removed",
	ID_user_clear_call,
	NULL
};

PointerPropertyRNA rna_ID_user_remap_new_id = {
	{NULL, NULL,
	-1, "new_id", 8650752, 1, 0, "",
	"New ID to use",
	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_ID
};

FunctionRNA rna_ID_user_remap_func = {
	{(FunctionRNA *)&rna_ID_make_local_func, (FunctionRNA *)&rna_ID_user_clear_func,
	NULL,
	{(PropertyRNA *)&rna_ID_user_remap_new_id, (PropertyRNA *)&rna_ID_user_remap_new_id}},
	"user_remap", 4, "Replace all usage in the .blend file of this ID by new given one",
	ID_user_remap_call,
	NULL
};

BoolPropertyRNA rna_ID_make_local_clear_proxy = {
	{(PropertyRNA *)&rna_ID_make_local_id, NULL,
	-1, "clear_proxy", 3, 0, 0, "",
	"Whether to clear proxies (the default behavior, note that if object has to be duplicated to be made local, proxies are always cleared)",
	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
};

PointerPropertyRNA rna_ID_make_local_id = {
	{NULL, (PropertyRNA *)&rna_ID_make_local_clear_proxy,
	-1, "id", 8388608, 2, 0, "",
	"This ID, or the new ID if it was copied",
	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_ID
};

FunctionRNA rna_ID_make_local_func = {
	{(FunctionRNA *)&rna_ID_user_of_id_func, (FunctionRNA *)&rna_ID_user_remap_func,
	NULL,
	{(PropertyRNA *)&rna_ID_make_local_clear_proxy, (PropertyRNA *)&rna_ID_make_local_id}},
	"make_local", 4, "Make this datablock local, return local one (may be a copy of the original, in case it is also indirectly used)",
	ID_make_local_call,
	(PropertyRNA *)&rna_ID_make_local_id
};

PointerPropertyRNA rna_ID_user_of_id_id = {
	{(PropertyRNA *)&rna_ID_user_of_id_count, NULL,
	-1, "id", 8650752, 1, 0, "",
	"ID to count usages",
	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_ID
};

IntPropertyRNA rna_ID_user_of_id_count = {
	{NULL, (PropertyRNA *)&rna_ID_user_of_id_id,
	-1, "count", 3, 2, 0, "",
	"Number of usages/references of given id by current data-block",
	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_ID_user_of_id_func = {
	{(FunctionRNA *)&rna_ID_animation_data_create_func, (FunctionRNA *)&rna_ID_make_local_func,
	NULL,
	{(PropertyRNA *)&rna_ID_user_of_id_id, (PropertyRNA *)&rna_ID_user_of_id_count}},
	"user_of_id", 0, "Count the number of times that ID uses/references given one",
	ID_user_of_id_call,
	(PropertyRNA *)&rna_ID_user_of_id_count
};

PointerPropertyRNA rna_ID_animation_data_create_anim_data = {
	{NULL, NULL,
	-1, "anim_data", 8388608, 2, 0, "",
	"New animation data or NULL",
	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_AnimData
};

FunctionRNA rna_ID_animation_data_create_func = {
	{(FunctionRNA *)&rna_ID_animation_data_clear_func, (FunctionRNA *)&rna_ID_user_of_id_func,
	NULL,
	{(PropertyRNA *)&rna_ID_animation_data_create_anim_data, (PropertyRNA *)&rna_ID_animation_data_create_anim_data}},
	"animation_data_create", 4, "Create animation data to this ID, note that not all ID types support this",
	ID_animation_data_create_call,
	(PropertyRNA *)&rna_ID_animation_data_create_anim_data
};

FunctionRNA rna_ID_animation_data_clear_func = {
	{(FunctionRNA *)&rna_ID_update_tag_func, (FunctionRNA *)&rna_ID_animation_data_create_func,
	NULL,
	{NULL, NULL}},
	"animation_data_clear", 4, "Clear animation on this this ID",
	ID_animation_data_clear_call,
	NULL
};

static EnumPropertyItem rna_ID_update_tag_refresh_items[4] = {
	{1, "OBJECT", 0, "Object", ""},
	{2, "DATA", 0, "Data", ""},
	{4, "TIME", 0, "Time", ""},
	{0, NULL, 0, NULL, NULL}
};

EnumPropertyRNA rna_ID_update_tag_refresh = {
	{NULL, NULL,
	-1, "refresh", 2097155, 0, 0, "",
	"Type of updates to perform",
	0, "*",
	PROP_ENUM, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, NULL, NULL, NULL, NULL, rna_ID_update_tag_refresh_items, 3, 0
};

FunctionRNA rna_ID_update_tag_func = {
	{NULL, (FunctionRNA *)&rna_ID_animation_data_clear_func,
	NULL,
	{(PropertyRNA *)&rna_ID_update_tag_refresh, (PropertyRNA *)&rna_ID_update_tag_refresh}},
	"update_tag", 16, "Tag the ID to update its display data, e.g. when calling :class:`bpy.types.Scene.update`",
	ID_update_tag_call,
	NULL
};

StructRNA RNA_ID = {
	{(ContainerRNA *)&RNA_ImagePreview, (ContainerRNA *)&RNA_AnyType,
	NULL,
	{(PropertyRNA *)&rna_ID_rna_properties, (PropertyRNA *)&rna_ID_preview}},
	"ID", NULL, NULL, 7, "ID",
	"Base type for data-blocks, defining a unique name, linking from other libraries and garbage collection",
	"*", 17,
	(PropertyRNA *)&rna_ID_name, (PropertyRNA *)&rna_ID_rna_properties,
	NULL,
	NULL,
	rna_ID_refine,
	NULL,
	NULL,
	NULL,
	NULL,
	rna_ID_idprops,
	{(FunctionRNA *)&rna_ID_copy_func, (FunctionRNA *)&rna_ID_update_tag_func}
};

/* Image Preview */
CollectionPropertyRNA rna_ImagePreview_rna_properties = {
	{(PropertyRNA *)&rna_ImagePreview_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},
	ImagePreview_rna_properties_begin, ImagePreview_rna_properties_next, ImagePreview_rna_properties_end, ImagePreview_rna_properties_get, NULL, NULL, ImagePreview_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_ImagePreview_rna_type = {
	{(PropertyRNA *)&rna_ImagePreview_is_image_custom, (PropertyRNA *)&rna_ImagePreview_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},
	ImagePreview_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

BoolPropertyRNA rna_ImagePreview_is_image_custom = {
	{(PropertyRNA *)&rna_ImagePreview_image_size, (PropertyRNA *)&rna_ImagePreview_rna_type,
	-1, "is_image_custom", 3, 0, 0, "Custom Image",
	"True if this preview image has been modified by py script,and is no more auto-generated by Blender",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	ImagePreview_is_image_custom_get, ImagePreview_is_image_custom_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

static int rna_ImagePreview_image_size_default[2] = {
	0,
	0
};

IntPropertyRNA rna_ImagePreview_image_size = {
	{(PropertyRNA *)&rna_ImagePreview_image_pixels, (PropertyRNA *)&rna_ImagePreview_is_image_custom,
	-1, "image_size", 3, 0, 0, "Image Size",
	"Width and height in pixels",
	0, "*",
	PROP_INT, PROP_PIXEL | PROP_UNIT_NONE, NULL, 1, {2, 0, 0}, 2,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, ImagePreview_image_size_get, ImagePreview_image_size_set, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 0, INT_MIN, INT_MAX, 1, 0, rna_ImagePreview_image_size_default
};

IntPropertyRNA rna_ImagePreview_image_pixels = {
	{(PropertyRNA *)&rna_ImagePreview_image_pixels_float, (PropertyRNA *)&rna_ImagePreview_image_size,
	-1, "image_pixels", 131075, 0, 0, "Image Pixels",
	"Image pixels, as bytes (always RGBA 32bits)",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, rna_ImagePreview_image_pixels_get_length, 1, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, ImagePreview_image_pixels_get, ImagePreview_image_pixels_set, NULL, NULL, NULL, NULL, NULL, NULL,
	-10000, 10000, INT_MIN, INT_MAX, 1, 0, NULL
};

FloatPropertyRNA rna_ImagePreview_image_pixels_float = {
	{(PropertyRNA *)&rna_ImagePreview_is_icon_custom, (PropertyRNA *)&rna_ImagePreview_image_pixels,
	-1, "image_pixels_float", 131075, 0, 0, "Float Image Pixels",
	"Image pixels components, as floats (RGBA concatenated values)",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, rna_ImagePreview_image_pixels_float_get_length, 1, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, ImagePreview_image_pixels_float_get, ImagePreview_image_pixels_float_set, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, NULL
};

BoolPropertyRNA rna_ImagePreview_is_icon_custom = {
	{(PropertyRNA *)&rna_ImagePreview_icon_size, (PropertyRNA *)&rna_ImagePreview_image_pixels_float,
	-1, "is_icon_custom", 3, 0, 0, "Custom Icon",
	"True if this preview icon has been modified by py script,and is no more auto-generated by Blender",
	0, "*",
	PROP_BOOLEAN, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	ImagePreview_is_icon_custom_get, ImagePreview_is_icon_custom_set, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL
};

static int rna_ImagePreview_icon_size_default[2] = {
	0,
	0
};

IntPropertyRNA rna_ImagePreview_icon_size = {
	{(PropertyRNA *)&rna_ImagePreview_icon_pixels, (PropertyRNA *)&rna_ImagePreview_is_icon_custom,
	-1, "icon_size", 3, 0, 0, "Icon Size",
	"Width and height in pixels",
	0, "*",
	PROP_INT, PROP_PIXEL | PROP_UNIT_NONE, NULL, 1, {2, 0, 0}, 2,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, ImagePreview_icon_size_get, ImagePreview_icon_size_set, NULL, NULL, NULL, NULL, NULL, NULL,
	0, 0, INT_MIN, INT_MAX, 1, 0, rna_ImagePreview_icon_size_default
};

IntPropertyRNA rna_ImagePreview_icon_pixels = {
	{(PropertyRNA *)&rna_ImagePreview_icon_pixels_float, (PropertyRNA *)&rna_ImagePreview_icon_size,
	-1, "icon_pixels", 131075, 0, 0, "Icon Pixels",
	"Icon pixels, as bytes (always RGBA 32bits)",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, rna_ImagePreview_icon_pixels_get_length, 1, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, ImagePreview_icon_pixels_get, ImagePreview_icon_pixels_set, NULL, NULL, NULL, NULL, NULL, NULL,
	-10000, 10000, INT_MIN, INT_MAX, 1, 0, NULL
};

FloatPropertyRNA rna_ImagePreview_icon_pixels_float = {
	{(PropertyRNA *)&rna_ImagePreview_icon_id, (PropertyRNA *)&rna_ImagePreview_icon_pixels,
	-1, "icon_pixels_float", 131075, 0, 0, "Float Icon Pixels",
	"Icon pixels components, as floats (RGBA concatenated values)",
	0, "*",
	PROP_FLOAT, PROP_NONE | PROP_UNIT_NONE, rna_ImagePreview_icon_pixels_float_get_length, 1, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	NULL, NULL, ImagePreview_icon_pixels_float_get, ImagePreview_icon_pixels_float_set, NULL, NULL, NULL, NULL, NULL, NULL, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, NULL
};

IntPropertyRNA rna_ImagePreview_icon_id = {
	{NULL, (PropertyRNA *)&rna_ImagePreview_icon_pixels_float,
	-1, "icon_id", 2, 0, 0, "Icon ID",
	"Unique integer identifying this preview as an icon (zero means invalid)",
	0, "*",
	PROP_INT, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	ImagePreview_icon_id_get, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	INT_MIN, INT_MAX, INT_MIN, INT_MAX, 1, 0, NULL
};

FunctionRNA rna_ImagePreview_reload_func = {
	{NULL, NULL,
	NULL,
	{NULL, NULL}},
	"reload", 0, "Reload the preview from its source path",
	ImagePreview_reload_call,
	NULL
};

StructRNA RNA_ImagePreview = {
	{(ContainerRNA *)&RNA_PropertyGroupItem, (ContainerRNA *)&RNA_ID,
	NULL,
	{(PropertyRNA *)&rna_ImagePreview_rna_properties, (PropertyRNA *)&rna_ImagePreview_icon_id}},
	"ImagePreview", NULL, NULL, 4, "Image Preview",
	"Preview image and icon",
	"*", 17,
	NULL, (PropertyRNA *)&rna_ImagePreview_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_ImagePreview_reload_func, (FunctionRNA *)&rna_ImagePreview_reload_func}
};

/* ID Property */
CollectionPropertyRNA rna_PropertyGroupItem_rna_properties = {
	{(PropertyRNA *)&rna_PropertyGroupItem_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},
	PropertyGroupItem_rna_properties_begin, PropertyGroupItem_rna_properties_next, PropertyGroupItem_rna_properties_end, PropertyGroupItem_rna_properties_get, NULL, NULL, PropertyGroupItem_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_PropertyGroupItem_rna_type = {
	{(PropertyRNA *)&rna_PropertyGroupItem_string, (PropertyRNA *)&rna_PropertyGroupItem_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},
	PropertyGroupItem_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_PropertyGroupItem_string = {
	{(PropertyRNA *)&rna_PropertyGroupItem_int, (PropertyRNA *)&rna_PropertyGroupItem_rna_type,
	-1, "string", 263425, 0, 0, "string",
	"",
	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, ""
};

IntPropertyRNA rna_PropertyGroupItem_int = {
	{(PropertyRNA *)&rna_PropertyGroupItem_int_array, (PropertyRNA *)&rna_PropertyGroupItem_string,
	-1, "int", 1283, 0, 0, "int",
	"",
	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,
	-10000, 10000, INT_MIN, INT_MAX, 1, 0, NULL
};

static int rna_PropertyGroupItem_int_array_default[1] = {
	0
};

IntPropertyRNA rna_PropertyGroupItem_int_array = {
	{(PropertyRNA *)&rna_PropertyGroupItem_float, (PropertyRNA *)&rna_PropertyGroupItem_int,
	-1, "int_array", 1283, 0, 0, "int_array",
	"",
	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,
	-10000, 10000, INT_MIN, INT_MAX, 1, 0, rna_PropertyGroupItem_int_array_default
};

FloatPropertyRNA rna_PropertyGroupItem_float = {
	{(PropertyRNA *)&rna_PropertyGroupItem_float_array, (PropertyRNA *)&rna_PropertyGroupItem_int_array,
	-1, "float", 1283, 0, 0, "float",
	"",
	0, "*",
	PROP_FLOAT, 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, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, NULL
};

static float rna_PropertyGroupItem_float_array_default[1] = {
	0.0f
};

FloatPropertyRNA rna_PropertyGroupItem_float_array = {
	{(PropertyRNA *)&rna_PropertyGroupItem_double, (PropertyRNA *)&rna_PropertyGroupItem_float,
	-1, "float_array", 1283, 0, 0, "float_array",
	"",
	0, "*",
	PROP_FLOAT, 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, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_PropertyGroupItem_float_array_default
};

FloatPropertyRNA rna_PropertyGroupItem_double = {
	{(PropertyRNA *)&rna_PropertyGroupItem_double_array, (PropertyRNA *)&rna_PropertyGroupItem_float_array,
	-1, "double", 1283, 0, 0, "double",
	"",
	0, "*",
	PROP_FLOAT, 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, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, NULL
};

static float rna_PropertyGroupItem_double_array_default[1] = {
	0.0f
};

FloatPropertyRNA rna_PropertyGroupItem_double_array = {
	{(PropertyRNA *)&rna_PropertyGroupItem_group, (PropertyRNA *)&rna_PropertyGroupItem_double,
	-1, "double_array", 1283, 0, 0, "double_array",
	"",
	0, "*",
	PROP_FLOAT, 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, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, 0.0f, rna_PropertyGroupItem_double_array_default
};

PointerPropertyRNA rna_PropertyGroupItem_group = {
	{(PropertyRNA *)&rna_PropertyGroupItem_collection, (PropertyRNA *)&rna_PropertyGroupItem_double_array,
	-1, "group", 8389888, 0, 0, "group",
	"",
	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_PropertyGroup
};

CollectionPropertyRNA rna_PropertyGroupItem_collection = {
	{(PropertyRNA *)&rna_PropertyGroupItem_idp_array, (PropertyRNA *)&rna_PropertyGroupItem_group,
	-1, "collection", 1280, 0, 0, "collection",
	"",
	0, "*",
	PROP_COLLECTION, 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, &RNA_PropertyGroup
};

CollectionPropertyRNA rna_PropertyGroupItem_idp_array = {
	{NULL, (PropertyRNA *)&rna_PropertyGroupItem_collection,
	-1, "idp_array", 1280, 0, 8, "idp_array",
	"",
	0, "*",
	PROP_COLLECTION, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	PropertyGroupItem_idp_array_begin, PropertyGroupItem_idp_array_next, PropertyGroupItem_idp_array_end, PropertyGroupItem_idp_array_get, PropertyGroupItem_idp_array_length, NULL, NULL, NULL, &RNA_PropertyGroup
};

StructRNA RNA_PropertyGroupItem = {
	{(ContainerRNA *)&RNA_PropertyGroup, (ContainerRNA *)&RNA_ImagePreview,
	NULL,
	{(PropertyRNA *)&rna_PropertyGroupItem_rna_properties, (PropertyRNA *)&rna_PropertyGroupItem_idp_array}},
	"PropertyGroupItem", NULL, NULL, 4, "ID Property",
	"Property that stores arbitrary, user defined properties",
	"*", 17,
	NULL, (PropertyRNA *)&rna_PropertyGroupItem_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{NULL, NULL}
};

/* ID Property Group */
CollectionPropertyRNA rna_PropertyGroup_rna_properties = {
	{(PropertyRNA *)&rna_PropertyGroup_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},
	PropertyGroup_rna_properties_begin, PropertyGroup_rna_properties_next, PropertyGroup_rna_properties_end, PropertyGroup_rna_properties_get, NULL, NULL, PropertyGroup_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_PropertyGroup_rna_type = {
	{(PropertyRNA *)&rna_PropertyGroup_name, (PropertyRNA *)&rna_PropertyGroup_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},
	PropertyGroup_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

StringPropertyRNA rna_PropertyGroup_name = {
	{NULL, (PropertyRNA *)&rna_PropertyGroup_rna_type,
	-1, "name", 263425, 0, 0, "Name",
	"Unique name used in the code and scripting",
	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, ""
};

StructRNA RNA_PropertyGroup = {
	{(ContainerRNA *)&RNA_IDMaterials, (ContainerRNA *)&RNA_PropertyGroupItem,
	NULL,
	{(PropertyRNA *)&rna_PropertyGroup_rna_properties, (PropertyRNA *)&rna_PropertyGroup_name}},
	"PropertyGroup", NULL, NULL, 4, "ID Property Group",
	"Group of ID properties",
	"*", 17,
	(PropertyRNA *)&rna_PropertyGroup_name, (PropertyRNA *)&rna_PropertyGroup_rna_properties,
	NULL,
	NULL,
	rna_PropertyGroup_refine,
	NULL,
	rna_PropertyGroup_register,
	rna_PropertyGroup_unregister,
	NULL,
	rna_PropertyGroup_idprops,
	{NULL, NULL}
};

/* ID Materials */
CollectionPropertyRNA rna_IDMaterials_rna_properties = {
	{(PropertyRNA *)&rna_IDMaterials_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},
	IDMaterials_rna_properties_begin, IDMaterials_rna_properties_next, IDMaterials_rna_properties_end, IDMaterials_rna_properties_get, NULL, NULL, IDMaterials_rna_properties_lookup_string, NULL, &RNA_Property
};

PointerPropertyRNA rna_IDMaterials_rna_type = {
	{NULL, (PropertyRNA *)&rna_IDMaterials_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},
	IDMaterials_rna_type_get, NULL, NULL, NULL,&RNA_Struct
};

PointerPropertyRNA rna_IDMaterials_append_material = {
	{NULL, NULL,
	-1, "material", 8388608, 1, 0, "",
	"Material to add",
	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_Material
};

FunctionRNA rna_IDMaterials_append_func = {
	{(FunctionRNA *)&rna_IDMaterials_pop_func, NULL,
	NULL,
	{(PropertyRNA *)&rna_IDMaterials_append_material, (PropertyRNA *)&rna_IDMaterials_append_material}},
	"append", 4, "Add a new material to the data-block",
	IDMaterials_append_call,
	NULL
};

IntPropertyRNA rna_IDMaterials_pop_index = {
	{(PropertyRNA *)&rna_IDMaterials_pop_update_data, NULL,
	-1, "index", 3, 0, 0, "",
	"Index of material to remove",
	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, 32766, -32766, 32766, 1, -1, NULL
};

BoolPropertyRNA rna_IDMaterials_pop_update_data = {
	{(PropertyRNA *)&rna_IDMaterials_pop_material, (PropertyRNA *)&rna_IDMaterials_pop_index,
	-1, "update_data", 3, 0, 0, "",
	"Update data by re-adjusting the material slots assigned",
	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
};

PointerPropertyRNA rna_IDMaterials_pop_material = {
	{NULL, (PropertyRNA *)&rna_IDMaterials_pop_update_data,
	-1, "material", 8388608, 2, 0, "",
	"Material 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_Material
};

FunctionRNA rna_IDMaterials_pop_func = {
	{(FunctionRNA *)&rna_IDMaterials_clear_func, (FunctionRNA *)&rna_IDMaterials_append_func,
	NULL,
	{(PropertyRNA *)&rna_IDMaterials_pop_index, (PropertyRNA *)&rna_IDMaterials_pop_material}},
	"pop", 20, "Remove a material from the data-block",
	IDMaterials_pop_call,
	(PropertyRNA *)&rna_IDMaterials_pop_material
};

BoolPropertyRNA rna_IDMaterials_clear_update_data = {
	{NULL, NULL,
	-1, "update_data", 3, 0, 0, "",
	"Update data by re-adjusting the material slots assigned",
	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_IDMaterials_clear_func = {
	{NULL, (FunctionRNA *)&rna_IDMaterials_pop_func,
	NULL,
	{(PropertyRNA *)&rna_IDMaterials_clear_update_data, (PropertyRNA *)&rna_IDMaterials_clear_update_data}},
	"clear", 0, "Remove all materials from the data-block",
	IDMaterials_clear_call,
	NULL
};

StructRNA RNA_IDMaterials = {
	{(ContainerRNA *)&RNA_Library, (ContainerRNA *)&RNA_PropertyGroup,
	NULL,
	{(PropertyRNA *)&rna_IDMaterials_rna_properties, (PropertyRNA *)&rna_IDMaterials_rna_type}},
	"IDMaterials", NULL, NULL, 4, "ID Materials",
	"Collection of materials",
	"*", 17,
	NULL, (PropertyRNA *)&rna_IDMaterials_rna_properties,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	{(FunctionRNA *)&rna_IDMaterials_append_func, (FunctionRNA *)&rna_IDMaterials_clear_func}
};

/* Library */
StringPropertyRNA rna_Library_filepath = {
	{(PropertyRNA *)&rna_Library_parent, NULL,
	-1, "filepath", 262145, 0, 0, "File Path",
	"Path to the library .blend file",
	0, "*",
	PROP_STRING, PROP_FILEPATH | PROP_UNIT_NONE, NULL, 0, {1024, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Library_filepath_get, Library_filepath_length, Library_filepath_set, NULL, NULL, NULL, 1024, ""
};

PointerPropertyRNA rna_Library_parent = {
	{(PropertyRNA *)&rna_Library_packed_file, (PropertyRNA *)&rna_Library_filepath,
	-1, "parent", 8388672, 0, 0, "Parent",
	"",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Library_parent_get, NULL, NULL, NULL,&RNA_Library
};

PointerPropertyRNA rna_Library_packed_file = {
	{NULL, (PropertyRNA *)&rna_Library_parent,
	-1, "packed_file", 8388608, 0, 0, "Packed File",
	"",
	0, "*",
	PROP_POINTER, PROP_NONE | PROP_UNIT_NONE, NULL, 0, {0, 0, 0}, 0,
	NULL, 0, NULL, NULL,
	0, -1, NULL},
	Library_packed_file_get, NULL, NULL, NULL,&RNA_PackedFile
};

FunctionRNA rna_Library_reload_func = {
	{NULL, NULL,
	NULL,
	{NULL, NULL}},
	"reload", 24, "Reload this library and all its linked data-blocks",
	Library_reload_call,
	NULL
};

StructRNA RNA_Library = {
	{(ContainerRNA *)&RNA_Texture, (ContainerRNA *)&RNA_IDMaterials,
	NULL,
	{(PropertyRNA *)&rna_Library_filepath, (PropertyRNA *)&rna_Library_packed_file}},
	"Library", NULL, NULL, 7, "Library",
	"External .blend file from which data is linked",
	"*", 170,
	(PropertyRNA *)&rna_ID_name, (PropertyRNA *)&rna_ID_rna_properties,
	&RNA_ID,
	NULL,
	rna_ID_refine,
	NULL,
	NULL,
	NULL,
	NULL,
	rna_ID_idprops,
	{(FunctionRNA *)&rna_Library_reload_func, (FunctionRNA *)&rna_Library_reload_func}
};

#include "rna_define.c"

BlenderRNA BLENDER_RNA = {{&RNA_Struct, &RNA_MaskLayers}};

