formatting edits. (no functional changes)
This commit is contained in:
@@ -226,7 +226,7 @@ static void id_release_weakref_list(struct ID *id, GHash *weakinfo_hash)
|
|||||||
fprintf(stdout, "id_release_weakref: '%s', %d items\n", id->name, BLI_ghash_size(weakinfo_hash));
|
fprintf(stdout, "id_release_weakref: '%s', %d items\n", id->name, BLI_ghash_size(weakinfo_hash));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while (!BLI_ghashIterator_isDone(&weakinfo_hash_iter) ) {
|
while (!BLI_ghashIterator_isDone(&weakinfo_hash_iter)) {
|
||||||
PyObject *weakref= (PyObject *)BLI_ghashIterator_getKey(&weakinfo_hash_iter);
|
PyObject *weakref= (PyObject *)BLI_ghashIterator_getKey(&weakinfo_hash_iter);
|
||||||
PyObject *item= PyWeakref_GET_OBJECT(weakref);
|
PyObject *item= PyWeakref_GET_OBJECT(weakref);
|
||||||
if(item != Py_None) {
|
if(item != Py_None) {
|
||||||
@@ -670,7 +670,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* same as RNA_enum_value_from_id but raises an exception */
|
/* same as RNA_enum_value_from_id but raises an exception */
|
||||||
int pyrna_enum_value_from_id(EnumPropertyItem *item, const char *identifier, int *value, const char *error_prefix)
|
int pyrna_enum_value_from_id(EnumPropertyItem *item, const char *identifier, int *value, const char *error_prefix)
|
||||||
{
|
{
|
||||||
if(RNA_enum_value_from_id(item, identifier, value) == 0) {
|
if(RNA_enum_value_from_id(item, identifier, value) == 0) {
|
||||||
@@ -690,7 +690,7 @@ static int pyrna_struct_compare(BPy_StructRNA *a, BPy_StructRNA *b)
|
|||||||
|
|
||||||
static int pyrna_prop_compare(BPy_PropertyRNA *a, BPy_PropertyRNA *b)
|
static int pyrna_prop_compare(BPy_PropertyRNA *a, BPy_PropertyRNA *b)
|
||||||
{
|
{
|
||||||
return (a->prop==b->prop && a->ptr.data==b->ptr.data ) ? 0 : -1;
|
return (a->prop==b->prop && a->ptr.data==b->ptr.data) ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *pyrna_struct_richcmp(PyObject *a, PyObject *b, int op)
|
static PyObject *pyrna_struct_richcmp(PyObject *a, PyObject *b, int op)
|
||||||
@@ -764,12 +764,12 @@ static PyObject *pyrna_struct_str(BPy_StructRNA *self)
|
|||||||
/* print name if available */
|
/* print name if available */
|
||||||
name= RNA_struct_name_get_alloc(&self->ptr, NULL, FALSE);
|
name= RNA_struct_name_get_alloc(&self->ptr, NULL, FALSE);
|
||||||
if(name) {
|
if(name) {
|
||||||
ret= PyUnicode_FromFormat( "<bpy_struct, %.200s(\"%.200s\")>", RNA_struct_identifier(self->ptr.type), name);
|
ret= PyUnicode_FromFormat("<bpy_struct, %.200s(\"%.200s\")>", RNA_struct_identifier(self->ptr.type), name);
|
||||||
MEM_freeN((void *)name);
|
MEM_freeN((void *)name);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
return PyUnicode_FromFormat( "<bpy_struct, %.200s at %p>", RNA_struct_identifier(self->ptr.type), self->ptr.data);
|
return PyUnicode_FromFormat("<bpy_struct, %.200s at %p>", RNA_struct_identifier(self->ptr.type), self->ptr.data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *pyrna_struct_repr(BPy_StructRNA *self)
|
static PyObject *pyrna_struct_repr(BPy_StructRNA *self)
|
||||||
@@ -779,18 +779,18 @@ static PyObject *pyrna_struct_repr(BPy_StructRNA *self)
|
|||||||
return pyrna_struct_str(self); /* fallback */
|
return pyrna_struct_str(self); /* fallback */
|
||||||
|
|
||||||
if(RNA_struct_is_ID(self->ptr.type)) {
|
if(RNA_struct_is_ID(self->ptr.type)) {
|
||||||
return PyUnicode_FromFormat( "bpy.data.%s[\"%s\"]", BKE_idcode_to_name_plural(GS(id->name)), id->name+2);
|
return PyUnicode_FromFormat("bpy.data.%s[\"%s\"]", BKE_idcode_to_name_plural(GS(id->name)), id->name+2);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
PyObject *ret;
|
PyObject *ret;
|
||||||
const char *path;
|
const char *path;
|
||||||
path= RNA_path_from_ID_to_struct(&self->ptr);
|
path= RNA_path_from_ID_to_struct(&self->ptr);
|
||||||
if(path) {
|
if(path) {
|
||||||
ret= PyUnicode_FromFormat( "bpy.data.%s[\"%s\"].%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, path);
|
ret= PyUnicode_FromFormat("bpy.data.%s[\"%s\"].%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, path);
|
||||||
MEM_freeN((void *)path);
|
MEM_freeN((void *)path);
|
||||||
}
|
}
|
||||||
else { /* cant find, print something sane */
|
else { /* cant find, print something sane */
|
||||||
ret= PyUnicode_FromFormat( "bpy.data.%s[\"%s\"]...%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, RNA_struct_identifier(self->ptr.type));
|
ret= PyUnicode_FromFormat("bpy.data.%s[\"%s\"]...%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, RNA_struct_identifier(self->ptr.type));
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -819,7 +819,7 @@ static PyObject *pyrna_prop_str(BPy_PropertyRNA *self)
|
|||||||
int len = -1;
|
int len = -1;
|
||||||
char *c= type_fmt;
|
char *c= type_fmt;
|
||||||
|
|
||||||
while ( (*c++= tolower(*type_id++)) ) {} ;
|
while ((*c++= tolower(*type_id++))) {} ;
|
||||||
|
|
||||||
if(type==PROP_COLLECTION) {
|
if(type==PROP_COLLECTION) {
|
||||||
len= pyrna_prop_collection_length(self);
|
len= pyrna_prop_collection_length(self);
|
||||||
@@ -837,7 +837,7 @@ static PyObject *pyrna_prop_str(BPy_PropertyRNA *self)
|
|||||||
name= RNA_struct_name_get_alloc(&ptr, NULL, FALSE);
|
name= RNA_struct_name_get_alloc(&ptr, NULL, FALSE);
|
||||||
|
|
||||||
if(name) {
|
if(name) {
|
||||||
ret= PyUnicode_FromFormat( "<bpy_%.200s, %.200s.%.200s(\"%.200s\")>", type_fmt, RNA_struct_identifier(self->ptr.type), RNA_property_identifier(self->prop), name);
|
ret= PyUnicode_FromFormat("<bpy_%.200s, %.200s.%.200s(\"%.200s\")>", type_fmt, RNA_struct_identifier(self->ptr.type), RNA_property_identifier(self->prop), name);
|
||||||
MEM_freeN((void *)name);
|
MEM_freeN((void *)name);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -845,11 +845,11 @@ static PyObject *pyrna_prop_str(BPy_PropertyRNA *self)
|
|||||||
if(RNA_property_type(self->prop) == PROP_COLLECTION) {
|
if(RNA_property_type(self->prop) == PROP_COLLECTION) {
|
||||||
PointerRNA r_ptr;
|
PointerRNA r_ptr;
|
||||||
if(RNA_property_collection_type_get(&self->ptr, self->prop, &r_ptr)) {
|
if(RNA_property_collection_type_get(&self->ptr, self->prop, &r_ptr)) {
|
||||||
return PyUnicode_FromFormat( "<bpy_%.200s, %.200s>", type_fmt, RNA_struct_identifier(r_ptr.type));
|
return PyUnicode_FromFormat("<bpy_%.200s, %.200s>", type_fmt, RNA_struct_identifier(r_ptr.type));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return PyUnicode_FromFormat( "<bpy_%.200s, %.200s.%.200s>", type_fmt, RNA_struct_identifier(self->ptr.type), RNA_property_identifier(self->prop));
|
return PyUnicode_FromFormat("<bpy_%.200s, %.200s.%.200s>", type_fmt, RNA_struct_identifier(self->ptr.type), RNA_property_identifier(self->prop));
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *pyrna_prop_repr(BPy_PropertyRNA *self)
|
static PyObject *pyrna_prop_repr(BPy_PropertyRNA *self)
|
||||||
@@ -865,11 +865,11 @@ static PyObject *pyrna_prop_repr(BPy_PropertyRNA *self)
|
|||||||
|
|
||||||
path= RNA_path_from_ID_to_property(&self->ptr, self->prop);
|
path= RNA_path_from_ID_to_property(&self->ptr, self->prop);
|
||||||
if(path) {
|
if(path) {
|
||||||
ret= PyUnicode_FromFormat( "bpy.data.%s[\"%s\"].%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, path);
|
ret= PyUnicode_FromFormat("bpy.data.%s[\"%s\"].%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, path);
|
||||||
MEM_freeN((void *)path);
|
MEM_freeN((void *)path);
|
||||||
}
|
}
|
||||||
else { /* cant find, print something sane */
|
else { /* cant find, print something sane */
|
||||||
ret= PyUnicode_FromFormat( "bpy.data.%s[\"%s\"]...%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, RNA_property_identifier(self->prop));
|
ret= PyUnicode_FromFormat("bpy.data.%s[\"%s\"]...%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, RNA_property_identifier(self->prop));
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -910,8 +910,8 @@ static void pyrna_struct_dealloc(BPy_StructRNA *self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_WEAKREFS
|
#ifdef USE_WEAKREFS
|
||||||
if (self->in_weakreflist != NULL) {
|
if (self->in_weakreflist != NULL) {
|
||||||
PyObject_ClearWeakRefs((PyObject *)self);
|
PyObject_ClearWeakRefs((PyObject *)self);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -923,8 +923,8 @@ static void pyrna_struct_dealloc(BPy_StructRNA *self)
|
|||||||
static void pyrna_prop_dealloc(BPy_PropertyRNA *self)
|
static void pyrna_prop_dealloc(BPy_PropertyRNA *self)
|
||||||
{
|
{
|
||||||
#ifdef USE_WEAKREFS
|
#ifdef USE_WEAKREFS
|
||||||
if (self->in_weakreflist != NULL) {
|
if (self->in_weakreflist != NULL) {
|
||||||
PyObject_ClearWeakRefs((PyObject *)self);
|
PyObject_ClearWeakRefs((PyObject *)self);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* Note, for subclassed PyObjects we cant just call PyObject_DEL() directly or it will crash */
|
/* Note, for subclassed PyObjects we cant just call PyObject_DEL() directly or it will crash */
|
||||||
@@ -934,8 +934,8 @@ static void pyrna_prop_dealloc(BPy_PropertyRNA *self)
|
|||||||
static void pyrna_prop_array_dealloc(BPy_PropertyRNA *self)
|
static void pyrna_prop_array_dealloc(BPy_PropertyRNA *self)
|
||||||
{
|
{
|
||||||
#ifdef USE_WEAKREFS
|
#ifdef USE_WEAKREFS
|
||||||
if (self->in_weakreflist != NULL) {
|
if (self->in_weakreflist != NULL) {
|
||||||
PyObject_ClearWeakRefs((PyObject *)self);
|
PyObject_ClearWeakRefs((PyObject *)self);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* Note, for subclassed PyObjects we cant just call PyObject_DEL() directly or it will crash */
|
/* Note, for subclassed PyObjects we cant just call PyObject_DEL() directly or it will crash */
|
||||||
@@ -975,8 +975,8 @@ static int pyrna_string_to_enum(PyObject *item, PointerRNA *ptr, PropertyRNA *pr
|
|||||||
} else {
|
} else {
|
||||||
/* hack so that dynamic enums used for operator properties will be able to be built (i.e. context will be supplied to itemf)
|
/* hack so that dynamic enums used for operator properties will be able to be built (i.e. context will be supplied to itemf)
|
||||||
* and thus running defining operator buttons for such operators in UI will work */
|
* and thus running defining operator buttons for such operators in UI will work */
|
||||||
RNA_def_property_clear_flag(prop, PROP_ENUM_NO_CONTEXT);
|
RNA_def_property_clear_flag(prop, PROP_ENUM_NO_CONTEXT);
|
||||||
|
|
||||||
if (!RNA_property_enum_value(BPy_GetContext(), ptr, prop, param, val)) {
|
if (!RNA_property_enum_value(BPy_GetContext(), ptr, prop, param, val)) {
|
||||||
const char *enum_str= pyrna_enum_as_string(ptr, prop);
|
const char *enum_str= pyrna_enum_as_string(ptr, prop);
|
||||||
PyErr_Format(PyExc_TypeError, "%.200s enum \"%.200s\" not found in (%.200s)", error_prefix, param, enum_str);
|
PyErr_Format(PyExc_TypeError, "%.200s enum \"%.200s\" not found in (%.200s)", error_prefix, param, enum_str);
|
||||||
@@ -1104,7 +1104,7 @@ static PyObject *pyrna_enum_to_py(PointerRNA *ptr, PropertyRNA *prop, int val)
|
|||||||
/* prefer not fail silently incase of api errors, maybe disable it later */
|
/* prefer not fail silently incase of api errors, maybe disable it later */
|
||||||
printf("RNA Warning: Current value \"%d\" matches no enum in '%s', '%s', '%s'\n", val, RNA_struct_identifier(ptr->type), ptr_name, RNA_property_identifier(prop));
|
printf("RNA Warning: Current value \"%d\" matches no enum in '%s', '%s', '%s'\n", val, RNA_struct_identifier(ptr->type), ptr_name, RNA_property_identifier(prop));
|
||||||
|
|
||||||
#if 0 // gives python decoding errors while generating docs :(
|
#if 0 // gives python decoding errors while generating docs :(
|
||||||
char error_str[256];
|
char error_str[256];
|
||||||
snprintf(error_str, sizeof(error_str), "RNA Warning: Current value \"%d\" matches no enum in '%s', '%s', '%s'", val, RNA_struct_identifier(ptr->type), ptr_name, RNA_property_identifier(prop));
|
snprintf(error_str, sizeof(error_str), "RNA Warning: Current value \"%d\" matches no enum in '%s', '%s', '%s'", val, RNA_struct_identifier(ptr->type), ptr_name, RNA_property_identifier(prop));
|
||||||
PyErr_Warn(PyExc_RuntimeWarning, error_str);
|
PyErr_Warn(PyExc_RuntimeWarning, error_str);
|
||||||
@@ -1139,13 +1139,13 @@ PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
|
|||||||
/* see if we can coorce into a python type - PropertyType */
|
/* see if we can coorce into a python type - PropertyType */
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case PROP_BOOLEAN:
|
case PROP_BOOLEAN:
|
||||||
ret = PyBool_FromLong( RNA_property_boolean_get(ptr, prop) );
|
ret = PyBool_FromLong(RNA_property_boolean_get(ptr, prop));
|
||||||
break;
|
break;
|
||||||
case PROP_INT:
|
case PROP_INT:
|
||||||
ret = PyLong_FromSsize_t( (Py_ssize_t)RNA_property_int_get(ptr, prop) );
|
ret = PyLong_FromSsize_t((Py_ssize_t)RNA_property_int_get(ptr, prop));
|
||||||
break;
|
break;
|
||||||
case PROP_FLOAT:
|
case PROP_FLOAT:
|
||||||
ret = PyFloat_FromDouble( RNA_property_float_get(ptr, prop) );
|
ret = PyFloat_FromDouble(RNA_property_float_get(ptr, prop));
|
||||||
break;
|
break;
|
||||||
case PROP_STRING:
|
case PROP_STRING:
|
||||||
{
|
{
|
||||||
@@ -1308,9 +1308,9 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
|
|||||||
* however so many poll functions return None or a valid Object.
|
* however so many poll functions return None or a valid Object.
|
||||||
* its a hassle to convert these into a bool before returning, */
|
* its a hassle to convert these into a bool before returning, */
|
||||||
if(RNA_property_flag(prop) & PROP_OUTPUT)
|
if(RNA_property_flag(prop) & PROP_OUTPUT)
|
||||||
param = PyObject_IsTrue( value );
|
param = PyObject_IsTrue(value);
|
||||||
else
|
else
|
||||||
param = PyLong_AsLong( value );
|
param = PyLong_AsLong(value);
|
||||||
|
|
||||||
if(param < 0) {
|
if(param < 0) {
|
||||||
PyErr_Format(PyExc_TypeError, "%.200s %.200s.%.200s expected True/False or 0/1, not %.200s", error_prefix, RNA_struct_identifier(ptr->type), RNA_property_identifier(prop), Py_TYPE(value)->tp_name);
|
PyErr_Format(PyExc_TypeError, "%.200s %.200s.%.200s expected True/False or 0/1, not %.200s", error_prefix, RNA_struct_identifier(ptr->type), RNA_property_identifier(prop), Py_TYPE(value)->tp_name);
|
||||||
@@ -1616,9 +1616,9 @@ static int pyrna_py_to_prop_array_index(BPy_PropertyArrayRNA *self, int index, P
|
|||||||
switch (RNA_property_type(prop)) {
|
switch (RNA_property_type(prop)) {
|
||||||
case PROP_BOOLEAN:
|
case PROP_BOOLEAN:
|
||||||
{
|
{
|
||||||
int param = PyLong_AsLong( value );
|
int param = PyLong_AsLong(value);
|
||||||
|
|
||||||
if( param < 0 || param > 1) {
|
if(param < 0 || param > 1) {
|
||||||
PyErr_SetString(PyExc_TypeError, "expected True/False or 0/1");
|
PyErr_SetString(PyExc_TypeError, "expected True/False or 0/1");
|
||||||
ret = -1;
|
ret = -1;
|
||||||
} else {
|
} else {
|
||||||
@@ -2127,7 +2127,7 @@ static int pyrna_prop_array_ass_subscript(BPy_PropertyArrayRNA *self, PyObject *
|
|||||||
PYRNA_PROP_CHECK_INT((BPy_PropertyRNA *)self)
|
PYRNA_PROP_CHECK_INT((BPy_PropertyRNA *)self)
|
||||||
|
|
||||||
if (!RNA_property_editable_flag(&self->ptr, self->prop)) {
|
if (!RNA_property_editable_flag(&self->ptr, self->prop)) {
|
||||||
PyErr_Format(PyExc_AttributeError, "bpy_prop_collection: attribute \"%.200s\" from \"%.200s\" is read-only", RNA_property_identifier(self->prop), RNA_struct_identifier(self->ptr.type) );
|
PyErr_Format(PyExc_AttributeError, "bpy_prop_collection: attribute \"%.200s\" from \"%.200s\" is read-only", RNA_property_identifier(self->prop), RNA_struct_identifier(self->ptr.type));
|
||||||
ret= -1;
|
ret= -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2174,15 +2174,15 @@ static int pyrna_prop_array_ass_subscript(BPy_PropertyArrayRNA *self, PyObject *
|
|||||||
|
|
||||||
/* for slice only */
|
/* for slice only */
|
||||||
static PyMappingMethods pyrna_prop_array_as_mapping = {
|
static PyMappingMethods pyrna_prop_array_as_mapping = {
|
||||||
( lenfunc ) pyrna_prop_array_length, /* mp_length */
|
(lenfunc) pyrna_prop_array_length, /* mp_length */
|
||||||
( binaryfunc ) pyrna_prop_array_subscript, /* mp_subscript */
|
(binaryfunc) pyrna_prop_array_subscript, /* mp_subscript */
|
||||||
( objobjargproc ) pyrna_prop_array_ass_subscript, /* mp_ass_subscript */
|
(objobjargproc) pyrna_prop_array_ass_subscript, /* mp_ass_subscript */
|
||||||
};
|
};
|
||||||
|
|
||||||
static PyMappingMethods pyrna_prop_collection_as_mapping = {
|
static PyMappingMethods pyrna_prop_collection_as_mapping = {
|
||||||
( lenfunc ) pyrna_prop_collection_length, /* mp_length */
|
(lenfunc) pyrna_prop_collection_length, /* mp_length */
|
||||||
( binaryfunc ) pyrna_prop_collection_subscript, /* mp_subscript */
|
(binaryfunc) pyrna_prop_collection_subscript, /* mp_subscript */
|
||||||
( objobjargproc ) NULL, /* mp_ass_subscript */
|
(objobjargproc) NULL, /* mp_ass_subscript */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* only for fast bool's, large structs, assign nb_bool on init */
|
/* only for fast bool's, large structs, assign nb_bool on init */
|
||||||
@@ -2356,9 +2356,9 @@ static int pyrna_struct_ass_subscript(BPy_StructRNA *self, PyObject *key, PyObje
|
|||||||
}
|
}
|
||||||
|
|
||||||
static PyMappingMethods pyrna_struct_as_mapping = {
|
static PyMappingMethods pyrna_struct_as_mapping = {
|
||||||
( lenfunc ) NULL, /* mp_length */
|
(lenfunc) NULL, /* mp_length */
|
||||||
( binaryfunc ) pyrna_struct_subscript, /* mp_subscript */
|
(binaryfunc) pyrna_struct_subscript, /* mp_subscript */
|
||||||
( objobjargproc ) pyrna_struct_ass_subscript, /* mp_ass_subscript */
|
(objobjargproc) pyrna_struct_ass_subscript, /* mp_ass_subscript */
|
||||||
};
|
};
|
||||||
|
|
||||||
static char pyrna_struct_keys_doc[] =
|
static char pyrna_struct_keys_doc[] =
|
||||||
@@ -2795,7 +2795,7 @@ static PyObject *pyrna_struct_getattro(BPy_StructRNA *self, PyObject *pyname)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((prop = RNA_struct_find_property(&self->ptr, name))) {
|
else if ((prop = RNA_struct_find_property(&self->ptr, name))) {
|
||||||
ret = pyrna_prop_to_py(&self->ptr, prop);
|
ret = pyrna_prop_to_py(&self->ptr, prop);
|
||||||
}
|
}
|
||||||
/* RNA function only if callback is declared (no optional functions) */
|
/* RNA function only if callback is declared (no optional functions) */
|
||||||
else if ((func = RNA_struct_find_function(&self->ptr, name)) && RNA_function_defined(func)) {
|
else if ((func = RNA_struct_find_function(&self->ptr, name)) && RNA_function_defined(func)) {
|
||||||
@@ -2992,7 +2992,7 @@ static int pyrna_struct_setattro(BPy_StructRNA *self, PyObject *pyname, PyObject
|
|||||||
}
|
}
|
||||||
else if (name[0] != '_' && (prop= RNA_struct_find_property(&self->ptr, name))) {
|
else if (name[0] != '_' && (prop= RNA_struct_find_property(&self->ptr, name))) {
|
||||||
if (!RNA_property_editable_flag(&self->ptr, prop)) {
|
if (!RNA_property_editable_flag(&self->ptr, prop)) {
|
||||||
PyErr_Format(PyExc_AttributeError, "bpy_struct: attribute \"%.200s\" from \"%.200s\" is read-only", RNA_property_identifier(prop), RNA_struct_identifier(self->ptr.type) );
|
PyErr_Format(PyExc_AttributeError, "bpy_struct: attribute \"%.200s\" from \"%.200s\" is read-only", RNA_property_identifier(prop), RNA_struct_identifier(self->ptr.type));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3053,12 +3053,12 @@ static PyObject *pyrna_prop_dir(BPy_PropertyRNA *self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static PyObject *pyrna_prop_array_getattro( BPy_PropertyRNA *self, PyObject *pyname )
|
static PyObject *pyrna_prop_array_getattro(BPy_PropertyRNA *self, PyObject *pyname)
|
||||||
{
|
{
|
||||||
return PyObject_GenericGetAttr((PyObject *)self, pyname);
|
return PyObject_GenericGetAttr((PyObject *)self, pyname);
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *pyrna_prop_collection_getattro( BPy_PropertyRNA *self, PyObject *pyname )
|
static PyObject *pyrna_prop_collection_getattro(BPy_PropertyRNA *self, PyObject *pyname)
|
||||||
{
|
{
|
||||||
const char *name = _PyUnicode_AsString(pyname);
|
const char *name = _PyUnicode_AsString(pyname);
|
||||||
|
|
||||||
@@ -3093,7 +3093,7 @@ static PyObject *pyrna_prop_collection_getattro( BPy_PropertyRNA *self, PyObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--------------- setattr-------------------------------------------
|
//--------------- setattr-------------------------------------------
|
||||||
static int pyrna_prop_collection_setattro( BPy_PropertyRNA *self, PyObject *pyname, PyObject *value )
|
static int pyrna_prop_collection_setattro(BPy_PropertyRNA *self, PyObject *pyname, PyObject *value)
|
||||||
{
|
{
|
||||||
const char *name = _PyUnicode_AsString(pyname);
|
const char *name = _PyUnicode_AsString(pyname);
|
||||||
PropertyRNA *prop;
|
PropertyRNA *prop;
|
||||||
@@ -3191,13 +3191,13 @@ static PyObject *pyrna_struct_get_id_data(BPy_DummyPointerRNA *self)
|
|||||||
|
|
||||||
static PyGetSetDef pyrna_prop_getseters[] = {
|
static PyGetSetDef pyrna_prop_getseters[] = {
|
||||||
{(char *)"id_data", (getter)pyrna_struct_get_id_data, (setter)NULL, (char *)"The :class:`ID` object this datablock is from or None, (not available for all data types)", NULL},
|
{(char *)"id_data", (getter)pyrna_struct_get_id_data, (setter)NULL, (char *)"The :class:`ID` object this datablock is from or None, (not available for all data types)", NULL},
|
||||||
{NULL,NULL,NULL,NULL,NULL} /* Sentinel */
|
{NULL,NULL,NULL,NULL,NULL} /* Sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static PyGetSetDef pyrna_struct_getseters[] = {
|
static PyGetSetDef pyrna_struct_getseters[] = {
|
||||||
{(char *)"id_data", (getter)pyrna_struct_get_id_data, (setter)NULL, (char *)"The :class:`ID` object this datablock is from or None, (not available for all data types)", NULL},
|
{(char *)"id_data", (getter)pyrna_struct_get_id_data, (setter)NULL, (char *)"The :class:`ID` object this datablock is from or None, (not available for all data types)", NULL},
|
||||||
{NULL,NULL,NULL,NULL,NULL} /* Sentinel */
|
{NULL,NULL,NULL,NULL,NULL} /* Sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
static PyObject *pyrna_prop_collection_keys(BPy_PropertyRNA *self)
|
static PyObject *pyrna_prop_collection_keys(BPy_PropertyRNA *self)
|
||||||
@@ -3211,7 +3211,7 @@ static PyObject *pyrna_prop_collection_keys(BPy_PropertyRNA *self)
|
|||||||
|
|
||||||
if(nameptr) {
|
if(nameptr) {
|
||||||
/* add to python list */
|
/* add to python list */
|
||||||
item = PyUnicode_FromString( nameptr );
|
item = PyUnicode_FromString(nameptr);
|
||||||
PyList_Append(ret, item);
|
PyList_Append(ret, item);
|
||||||
Py_DECREF(item);
|
Py_DECREF(item);
|
||||||
/* done */
|
/* done */
|
||||||
@@ -3238,7 +3238,7 @@ static PyObject *pyrna_prop_collection_items(BPy_PropertyRNA *self)
|
|||||||
item= PyTuple_New(2);
|
item= PyTuple_New(2);
|
||||||
nameptr= RNA_struct_name_get_alloc(&itemptr, name, sizeof(name));
|
nameptr= RNA_struct_name_get_alloc(&itemptr, name, sizeof(name));
|
||||||
if(nameptr) {
|
if(nameptr) {
|
||||||
PyTuple_SET_ITEM(item, 0, PyUnicode_FromString( nameptr ));
|
PyTuple_SET_ITEM(item, 0, PyUnicode_FromString(nameptr));
|
||||||
if(name != nameptr)
|
if(name != nameptr)
|
||||||
MEM_freeN(nameptr);
|
MEM_freeN(nameptr);
|
||||||
}
|
}
|
||||||
@@ -3340,7 +3340,7 @@ static PyObject *pyrna_prop_collection_get(BPy_PropertyRNA *self, PyObject *args
|
|||||||
|
|
||||||
static void foreach_attr_type( BPy_PropertyRNA *self, const char *attr,
|
static void foreach_attr_type( BPy_PropertyRNA *self, const char *attr,
|
||||||
/* values to assign */
|
/* values to assign */
|
||||||
RawPropertyType *raw_type, int *attr_tot, int *attr_signed )
|
RawPropertyType *raw_type, int *attr_tot, int *attr_signed)
|
||||||
{
|
{
|
||||||
PropertyRNA *prop;
|
PropertyRNA *prop;
|
||||||
*raw_type= PROP_RAW_UNSET;
|
*raw_type= PROP_RAW_UNSET;
|
||||||
@@ -3450,7 +3450,7 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set)
|
|||||||
int tot, size, attr_tot, attr_signed;
|
int tot, size, attr_tot, attr_signed;
|
||||||
RawPropertyType raw_type;
|
RawPropertyType raw_type;
|
||||||
|
|
||||||
if(foreach_parse_args(self, args, &attr, &seq, &tot, &size, &raw_type, &attr_tot, &attr_signed) < 0)
|
if(foreach_parse_args(self, args, &attr, &seq, &tot, &size, &raw_type, &attr_tot, &attr_signed) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if(tot==0)
|
if(tot==0)
|
||||||
@@ -3538,19 +3538,19 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set)
|
|||||||
|
|
||||||
switch(raw_type) {
|
switch(raw_type) {
|
||||||
case PROP_RAW_CHAR:
|
case PROP_RAW_CHAR:
|
||||||
item= PyLong_FromSsize_t( (Py_ssize_t) ((char *)array)[i] );
|
item= PyLong_FromSsize_t((Py_ssize_t) ((char *)array)[i]);
|
||||||
break;
|
break;
|
||||||
case PROP_RAW_SHORT:
|
case PROP_RAW_SHORT:
|
||||||
item= PyLong_FromSsize_t( (Py_ssize_t) ((short *)array)[i] );
|
item= PyLong_FromSsize_t((Py_ssize_t) ((short *)array)[i]);
|
||||||
break;
|
break;
|
||||||
case PROP_RAW_INT:
|
case PROP_RAW_INT:
|
||||||
item= PyLong_FromSsize_t( (Py_ssize_t) ((int *)array)[i] );
|
item= PyLong_FromSsize_t((Py_ssize_t) ((int *)array)[i]);
|
||||||
break;
|
break;
|
||||||
case PROP_RAW_FLOAT:
|
case PROP_RAW_FLOAT:
|
||||||
item= PyFloat_FromDouble( (double) ((float *)array)[i] );
|
item= PyFloat_FromDouble((double) ((float *)array)[i]);
|
||||||
break;
|
break;
|
||||||
case PROP_RAW_DOUBLE:
|
case PROP_RAW_DOUBLE:
|
||||||
item= PyFloat_FromDouble( (double) ((double *)array)[i] );
|
item= PyFloat_FromDouble((double) ((double *)array)[i]);
|
||||||
break;
|
break;
|
||||||
case PROP_RAW_UNSET:
|
case PROP_RAW_UNSET:
|
||||||
/* should never happen */
|
/* should never happen */
|
||||||
@@ -3707,7 +3707,7 @@ static struct PyMethodDef pyrna_prop_collection_methods[] = {
|
|||||||
{"foreach_set", (PyCFunction)pyrna_prop_collection_foreach_set, METH_VARARGS, pyrna_prop_collection_foreach_set_doc},
|
{"foreach_set", (PyCFunction)pyrna_prop_collection_foreach_set, METH_VARARGS, pyrna_prop_collection_foreach_set_doc},
|
||||||
|
|
||||||
{"keys", (PyCFunction)pyrna_prop_collection_keys, METH_NOARGS, NULL},
|
{"keys", (PyCFunction)pyrna_prop_collection_keys, METH_NOARGS, NULL},
|
||||||
{"items", (PyCFunction)pyrna_prop_collection_items, METH_NOARGS,NULL},
|
{"items", (PyCFunction)pyrna_prop_collection_items, METH_NOARGS, NULL},
|
||||||
{"values", (PyCFunction)pyrna_prop_collection_values, METH_NOARGS, NULL},
|
{"values", (PyCFunction)pyrna_prop_collection_values, METH_NOARGS, NULL},
|
||||||
|
|
||||||
{"get", (PyCFunction)pyrna_prop_collection_get, METH_VARARGS, NULL},
|
{"get", (PyCFunction)pyrna_prop_collection_get, METH_VARARGS, NULL},
|
||||||
@@ -3723,7 +3723,7 @@ static struct PyMethodDef pyrna_prop_collection_idprop_methods[] = {
|
|||||||
|
|
||||||
/* only needed for subtyping, so a new class gets a valid BPy_StructRNA
|
/* only needed for subtyping, so a new class gets a valid BPy_StructRNA
|
||||||
* todo - also accept useful args */
|
* todo - also accept useful args */
|
||||||
static PyObject * pyrna_struct_new(PyTypeObject *type, PyObject *args, PyObject *UNUSED(kwds))
|
static PyObject *pyrna_struct_new(PyTypeObject *type, PyObject *args, PyObject *UNUSED(kwds))
|
||||||
{
|
{
|
||||||
if(PyTuple_GET_SIZE(args) == 1) {
|
if(PyTuple_GET_SIZE(args) == 1) {
|
||||||
BPy_StructRNA *base= (BPy_StructRNA *)PyTuple_GET_ITEM(args, 0);
|
BPy_StructRNA *base= (BPy_StructRNA *)PyTuple_GET_ITEM(args, 0);
|
||||||
@@ -3738,11 +3738,11 @@ static PyObject * pyrna_struct_new(PyTypeObject *type, PyObject *args, PyObject
|
|||||||
>>> class MyObSubclass(bpy.types.Object):
|
>>> class MyObSubclass(bpy.types.Object):
|
||||||
... def test_func(self):
|
... def test_func(self):
|
||||||
... print(100)
|
... print(100)
|
||||||
...
|
...
|
||||||
>>> myob = MyObSubclass(bpy.context.object)
|
>>> myob = MyObSubclass(bpy.context.object)
|
||||||
>>> myob.test_func()
|
>>> myob.test_func()
|
||||||
100
|
100
|
||||||
*
|
*
|
||||||
* Keep this since it could be useful.
|
* Keep this since it could be useful.
|
||||||
*/
|
*/
|
||||||
BPy_StructRNA *ret;
|
BPy_StructRNA *ret;
|
||||||
@@ -3765,7 +3765,7 @@ static PyObject * pyrna_struct_new(PyTypeObject *type, PyObject *args, PyObject
|
|||||||
|
|
||||||
/* only needed for subtyping, so a new class gets a valid BPy_StructRNA
|
/* only needed for subtyping, so a new class gets a valid BPy_StructRNA
|
||||||
* todo - also accept useful args */
|
* todo - also accept useful args */
|
||||||
static PyObject * pyrna_prop_new(PyTypeObject *type, PyObject *args, PyObject *UNUSED(kwds)) {
|
static PyObject *pyrna_prop_new(PyTypeObject *type, PyObject *args, PyObject *UNUSED(kwds)) {
|
||||||
|
|
||||||
BPy_PropertyRNA *base;
|
BPy_PropertyRNA *base;
|
||||||
|
|
||||||
@@ -3812,12 +3812,12 @@ static PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *dat
|
|||||||
case PROP_BOOLEAN:
|
case PROP_BOOLEAN:
|
||||||
ret = PyTuple_New(len);
|
ret = PyTuple_New(len);
|
||||||
for(a=0; a<len; a++)
|
for(a=0; a<len; a++)
|
||||||
PyTuple_SET_ITEM(ret, a, PyBool_FromLong( ((int*)data)[a] ));
|
PyTuple_SET_ITEM(ret, a, PyBool_FromLong(((int*)data)[a]));
|
||||||
break;
|
break;
|
||||||
case PROP_INT:
|
case PROP_INT:
|
||||||
ret = PyTuple_New(len);
|
ret = PyTuple_New(len);
|
||||||
for(a=0; a<len; a++)
|
for(a=0; a<len; a++)
|
||||||
PyTuple_SET_ITEM(ret, a, PyLong_FromSsize_t( (Py_ssize_t)((int*)data)[a] ));
|
PyTuple_SET_ITEM(ret, a, PyLong_FromSsize_t((Py_ssize_t)((int*)data)[a]));
|
||||||
break;
|
break;
|
||||||
case PROP_FLOAT:
|
case PROP_FLOAT:
|
||||||
switch(RNA_property_subtype(prop)) {
|
switch(RNA_property_subtype(prop)) {
|
||||||
@@ -3839,7 +3839,7 @@ static PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *dat
|
|||||||
default:
|
default:
|
||||||
ret = PyTuple_New(len);
|
ret = PyTuple_New(len);
|
||||||
for(a=0; a<len; a++)
|
for(a=0; a<len; a++)
|
||||||
PyTuple_SET_ITEM(ret, a, PyFloat_FromDouble( ((float*)data)[a] ));
|
PyTuple_SET_ITEM(ret, a, PyFloat_FromDouble(((float*)data)[a]));
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -3853,13 +3853,13 @@ static PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *dat
|
|||||||
/* see if we can coorce into a python type - PropertyType */
|
/* see if we can coorce into a python type - PropertyType */
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case PROP_BOOLEAN:
|
case PROP_BOOLEAN:
|
||||||
ret = PyBool_FromLong( *(int*)data );
|
ret = PyBool_FromLong(*(int*)data);
|
||||||
break;
|
break;
|
||||||
case PROP_INT:
|
case PROP_INT:
|
||||||
ret = PyLong_FromSsize_t( (Py_ssize_t)*(int*)data );
|
ret = PyLong_FromSsize_t((Py_ssize_t)*(int*)data);
|
||||||
break;
|
break;
|
||||||
case PROP_FLOAT:
|
case PROP_FLOAT:
|
||||||
ret = PyFloat_FromDouble( *(float*)data );
|
ret = PyFloat_FromDouble(*(float*)data);
|
||||||
break;
|
break;
|
||||||
case PROP_STRING:
|
case PROP_STRING:
|
||||||
{
|
{
|
||||||
@@ -3949,11 +3949,11 @@ static PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *dat
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw)
|
static PyObject *pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw)
|
||||||
{
|
{
|
||||||
/* Note, both BPy_StructRNA and BPy_PropertyRNA can be used here */
|
/* Note, both BPy_StructRNA and BPy_PropertyRNA can be used here */
|
||||||
PointerRNA *self_ptr= &(((BPy_DummyPointerRNA *)PyTuple_GET_ITEM(self, 0))->ptr);
|
PointerRNA *self_ptr= &(((BPy_DummyPointerRNA *)PyTuple_GET_ITEM(self, 0))->ptr);
|
||||||
FunctionRNA *self_func= PyCapsule_GetPointer(PyTuple_GET_ITEM(self, 1), NULL);
|
FunctionRNA *self_func= PyCapsule_GetPointer(PyTuple_GET_ITEM(self, 1), NULL);
|
||||||
|
|
||||||
PointerRNA funcptr;
|
PointerRNA funcptr;
|
||||||
ParameterList parms;
|
ParameterList parms;
|
||||||
@@ -4034,7 +4034,7 @@ static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw)
|
|||||||
kw_arg= FALSE;
|
kw_arg= FALSE;
|
||||||
}
|
}
|
||||||
else if (kw != NULL) {
|
else if (kw != NULL) {
|
||||||
item= PyDict_GetItemString(kw, parm_id); /* borrow ref */
|
item= PyDict_GetItemString(kw, parm_id); /* borrow ref */
|
||||||
if(item)
|
if(item)
|
||||||
kw_tot++; /* make sure invalid keywords are not given */
|
kw_tot++; /* make sure invalid keywords are not given */
|
||||||
|
|
||||||
@@ -4288,7 +4288,7 @@ PyTypeObject pyrna_struct_Type = {
|
|||||||
NULL, /* getattrfunc tp_getattr; */
|
NULL, /* getattrfunc tp_getattr; */
|
||||||
NULL, /* setattrfunc tp_setattr; */
|
NULL, /* setattrfunc tp_setattr; */
|
||||||
NULL, /* tp_compare */ /* DEPRECATED in python 3.0! */
|
NULL, /* tp_compare */ /* DEPRECATED in python 3.0! */
|
||||||
( reprfunc ) pyrna_struct_repr, /* tp_repr */
|
(reprfunc) pyrna_struct_repr, /* tp_repr */
|
||||||
|
|
||||||
/* Method suites for standard classes */
|
/* Method suites for standard classes */
|
||||||
|
|
||||||
@@ -4298,11 +4298,11 @@ PyTypeObject pyrna_struct_Type = {
|
|||||||
|
|
||||||
/* More standard operations (here for binary compatibility) */
|
/* More standard operations (here for binary compatibility) */
|
||||||
|
|
||||||
( hashfunc )pyrna_struct_hash, /* hashfunc tp_hash; */
|
(hashfunc) pyrna_struct_hash, /* hashfunc tp_hash; */
|
||||||
NULL, /* ternaryfunc tp_call; */
|
NULL, /* ternaryfunc tp_call; */
|
||||||
(reprfunc) pyrna_struct_str, /* reprfunc tp_str; */
|
(reprfunc) pyrna_struct_str, /* reprfunc tp_str; */
|
||||||
( getattrofunc ) pyrna_struct_getattro, /* getattrofunc tp_getattro; */
|
(getattrofunc) pyrna_struct_getattro, /* getattrofunc tp_getattro; */
|
||||||
( setattrofunc ) pyrna_struct_setattro, /* setattrofunc tp_setattro; */
|
(setattrofunc) pyrna_struct_setattro, /* setattrofunc tp_setattro; */
|
||||||
|
|
||||||
/* Functions to access object as input/output buffer */
|
/* Functions to access object as input/output buffer */
|
||||||
NULL, /* PyBufferProcs *tp_as_buffer; */
|
NULL, /* PyBufferProcs *tp_as_buffer; */
|
||||||
@@ -4380,7 +4380,7 @@ PyTypeObject pyrna_prop_Type = {
|
|||||||
|
|
||||||
/* More standard operations (here for binary compatibility) */
|
/* More standard operations (here for binary compatibility) */
|
||||||
|
|
||||||
( hashfunc ) pyrna_prop_hash, /* hashfunc tp_hash; */
|
(hashfunc) pyrna_prop_hash, /* hashfunc tp_hash; */
|
||||||
NULL, /* ternaryfunc tp_call; */
|
NULL, /* ternaryfunc tp_call; */
|
||||||
(reprfunc) pyrna_prop_str, /* reprfunc tp_str; */
|
(reprfunc) pyrna_prop_str, /* reprfunc tp_str; */
|
||||||
|
|
||||||
@@ -4469,7 +4469,7 @@ PyTypeObject pyrna_prop_array_Type = {
|
|||||||
NULL, /* reprfunc tp_str; */
|
NULL, /* reprfunc tp_str; */
|
||||||
|
|
||||||
/* will only use these if this is a subtype of a py class */
|
/* will only use these if this is a subtype of a py class */
|
||||||
( getattrofunc ) pyrna_prop_array_getattro, /* getattrofunc tp_getattro; */
|
(getattrofunc) pyrna_prop_array_getattro, /* getattrofunc tp_getattro; */
|
||||||
NULL, /* setattrofunc tp_setattro; */
|
NULL, /* setattrofunc tp_setattro; */
|
||||||
|
|
||||||
/* Functions to access object as input/output buffer */
|
/* Functions to access object as input/output buffer */
|
||||||
@@ -4552,8 +4552,8 @@ PyTypeObject pyrna_prop_collection_Type = {
|
|||||||
NULL, /* reprfunc tp_str; */
|
NULL, /* reprfunc tp_str; */
|
||||||
|
|
||||||
/* will only use these if this is a subtype of a py class */
|
/* will only use these if this is a subtype of a py class */
|
||||||
( getattrofunc ) pyrna_prop_collection_getattro, /* getattrofunc tp_getattro; */
|
(getattrofunc) pyrna_prop_collection_getattro, /* getattrofunc tp_getattro; */
|
||||||
( setattrofunc ) pyrna_prop_collection_setattro, /* setattrofunc tp_setattro; */
|
(setattrofunc) pyrna_prop_collection_setattro, /* setattrofunc tp_setattro; */
|
||||||
|
|
||||||
/* Functions to access object as input/output buffer */
|
/* Functions to access object as input/output buffer */
|
||||||
NULL, /* PyBufferProcs *tp_as_buffer; */
|
NULL, /* PyBufferProcs *tp_as_buffer; */
|
||||||
@@ -4699,14 +4699,14 @@ static void pyrna_subtype_set_rna(PyObject *newclass, StructRNA *srna)
|
|||||||
{
|
{
|
||||||
PointerRNA ptr;
|
PointerRNA ptr;
|
||||||
PyObject *item;
|
PyObject *item;
|
||||||
|
|
||||||
Py_INCREF(newclass);
|
Py_INCREF(newclass);
|
||||||
|
|
||||||
if (RNA_struct_py_type_get(srna))
|
if (RNA_struct_py_type_get(srna))
|
||||||
PyC_ObSpit("RNA WAS SET - ", RNA_struct_py_type_get(srna));
|
PyC_ObSpit("RNA WAS SET - ", RNA_struct_py_type_get(srna));
|
||||||
|
|
||||||
Py_XDECREF(((PyObject *)RNA_struct_py_type_get(srna)));
|
Py_XDECREF(((PyObject *)RNA_struct_py_type_get(srna)));
|
||||||
|
|
||||||
RNA_struct_py_type_set(srna, (void *)newclass); /* Store for later use */
|
RNA_struct_py_type_set(srna, (void *)newclass); /* Store for later use */
|
||||||
|
|
||||||
/* Not 100% needed but useful,
|
/* Not 100% needed but useful,
|
||||||
@@ -4719,7 +4719,7 @@ static void pyrna_subtype_set_rna(PyObject *newclass, StructRNA *srna)
|
|||||||
/* note, must set the class not the __dict__ else the internal slots are not updated correctly */
|
/* note, must set the class not the __dict__ else the internal slots are not updated correctly */
|
||||||
PyObject_SetAttrString(newclass, "bl_rna", item);
|
PyObject_SetAttrString(newclass, "bl_rna", item);
|
||||||
Py_DECREF(item);
|
Py_DECREF(item);
|
||||||
|
|
||||||
/* done with rna instance */
|
/* done with rna instance */
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4864,7 +4864,7 @@ static PyObject* pyrna_srna_Subtype(StructRNA *srna)
|
|||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return newclass;
|
return newclass;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4886,7 +4886,7 @@ static PyObject* pyrna_struct_Subtype(PointerRNA *ptr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*-----------------------CreatePyObject---------------------------------*/
|
/*-----------------------CreatePyObject---------------------------------*/
|
||||||
PyObject *pyrna_struct_CreatePyObject( PointerRNA *ptr )
|
PyObject *pyrna_struct_CreatePyObject(PointerRNA *ptr)
|
||||||
{
|
{
|
||||||
BPy_StructRNA *pyrna= NULL;
|
BPy_StructRNA *pyrna= NULL;
|
||||||
|
|
||||||
@@ -4896,28 +4896,28 @@ PyObject *pyrna_struct_CreatePyObject( PointerRNA *ptr )
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
PyTypeObject *tp = (PyTypeObject *)pyrna_struct_Subtype(ptr);
|
PyTypeObject *tp = (PyTypeObject *)pyrna_struct_Subtype(ptr);
|
||||||
|
|
||||||
if (tp) {
|
if (tp) {
|
||||||
pyrna = (BPy_StructRNA *) tp->tp_alloc(tp, 0);
|
pyrna = (BPy_StructRNA *) tp->tp_alloc(tp, 0);
|
||||||
Py_DECREF(tp); /* srna owns, cant hold a ref */
|
Py_DECREF(tp); /* srna owns, cant hold a ref */
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fprintf(stderr, "Could not make type\n");
|
fprintf(stderr, "Could not make type\n");
|
||||||
pyrna = (BPy_StructRNA *) PyObject_NEW(BPy_StructRNA, &pyrna_struct_Type );
|
pyrna = (BPy_StructRNA *) PyObject_NEW(BPy_StructRNA, &pyrna_struct_Type);
|
||||||
#ifdef USE_WEAKREFS
|
#ifdef USE_WEAKREFS
|
||||||
pyrna->in_weakreflist= NULL;
|
pyrna->in_weakreflist= NULL;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !pyrna ) {
|
if(pyrna == NULL) {
|
||||||
PyErr_SetString(PyExc_MemoryError, "couldn't create bpy_struct object");
|
PyErr_SetString(PyExc_MemoryError, "couldn't create bpy_struct object");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
pyrna->ptr= *ptr;
|
pyrna->ptr= *ptr;
|
||||||
pyrna->freeptr= FALSE;
|
pyrna->freeptr= FALSE;
|
||||||
|
|
||||||
// PyC_ObSpit("NewStructRNA: ", (PyObject *)pyrna);
|
// PyC_ObSpit("NewStructRNA: ", (PyObject *)pyrna);
|
||||||
|
|
||||||
#ifdef USE_PYRNA_INVALIDATE_WEAKREF
|
#ifdef USE_PYRNA_INVALIDATE_WEAKREF
|
||||||
@@ -4925,10 +4925,10 @@ PyObject *pyrna_struct_CreatePyObject( PointerRNA *ptr )
|
|||||||
id_weakref_pool_add(ptr->id.data, (BPy_DummyPointerRNA *)pyrna);
|
id_weakref_pool_add(ptr->id.data, (BPy_DummyPointerRNA *)pyrna);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return ( PyObject * ) pyrna;
|
return (PyObject *)pyrna;
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *pyrna_prop_CreatePyObject( PointerRNA *ptr, PropertyRNA *prop )
|
PyObject *pyrna_prop_CreatePyObject(PointerRNA *ptr, PropertyRNA *prop)
|
||||||
{
|
{
|
||||||
BPy_PropertyRNA *pyrna;
|
BPy_PropertyRNA *pyrna;
|
||||||
|
|
||||||
@@ -4943,7 +4943,7 @@ PyObject *pyrna_prop_CreatePyObject( PointerRNA *ptr, PropertyRNA *prop )
|
|||||||
type= &pyrna_prop_collection_Type;
|
type= &pyrna_prop_collection_Type;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
type= &pyrna_prop_collection_idprop_Type;
|
type= &pyrna_prop_collection_idprop_Type;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4961,11 +4961,11 @@ PyObject *pyrna_prop_CreatePyObject( PointerRNA *ptr, PropertyRNA *prop )
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !pyrna ) {
|
if(pyrna == NULL) {
|
||||||
PyErr_SetString(PyExc_MemoryError, "couldn't create BPy_rna object");
|
PyErr_SetString(PyExc_MemoryError, "couldn't create BPy_rna object");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
pyrna->ptr = *ptr;
|
pyrna->ptr = *ptr;
|
||||||
pyrna->prop = prop;
|
pyrna->prop = prop;
|
||||||
|
|
||||||
@@ -4975,7 +4975,7 @@ PyObject *pyrna_prop_CreatePyObject( PointerRNA *ptr, PropertyRNA *prop )
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return ( PyObject * ) pyrna;
|
return (PyObject *)pyrna;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BPY_rna_init(void)
|
void BPY_rna_init(void)
|
||||||
@@ -4984,25 +4984,25 @@ void BPY_rna_init(void)
|
|||||||
mathutils_rna_array_cb_index= Mathutils_RegisterCallback(&mathutils_rna_array_cb);
|
mathutils_rna_array_cb_index= Mathutils_RegisterCallback(&mathutils_rna_array_cb);
|
||||||
mathutils_rna_matrix_cb_index= Mathutils_RegisterCallback(&mathutils_rna_matrix_cb);
|
mathutils_rna_matrix_cb_index= Mathutils_RegisterCallback(&mathutils_rna_matrix_cb);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* metaclass */
|
/* metaclass */
|
||||||
pyrna_struct_meta_idprop_Type.tp_base= &PyType_Type;
|
pyrna_struct_meta_idprop_Type.tp_base= &PyType_Type;
|
||||||
if( PyType_Ready( &pyrna_struct_meta_idprop_Type ) < 0 )
|
if(PyType_Ready(&pyrna_struct_meta_idprop_Type) < 0)
|
||||||
return;
|
|
||||||
|
|
||||||
if( PyType_Ready( &pyrna_struct_Type ) < 0 )
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( PyType_Ready( &pyrna_prop_Type ) < 0 )
|
if(PyType_Ready(&pyrna_struct_Type) < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( PyType_Ready( &pyrna_prop_array_Type ) < 0 )
|
if(PyType_Ready(&pyrna_prop_Type) < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( PyType_Ready( &pyrna_prop_collection_Type ) < 0 )
|
if(PyType_Ready(&pyrna_prop_array_Type) < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( PyType_Ready( &pyrna_prop_collection_idprop_Type ) < 0 )
|
if(PyType_Ready(&pyrna_prop_collection_Type) < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(PyType_Ready(&pyrna_prop_collection_idprop_Type) < 0)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5016,7 +5016,7 @@ PyObject *BPY_rna_module(void)
|
|||||||
/* for now, return the base RNA type rather then a real module */
|
/* for now, return the base RNA type rather then a real module */
|
||||||
RNA_main_pointer_create(G.main, &ptr);
|
RNA_main_pointer_create(G.main, &ptr);
|
||||||
pyrna= (BPy_StructRNA *)pyrna_struct_CreatePyObject(&ptr);
|
pyrna= (BPy_StructRNA *)pyrna_struct_CreatePyObject(&ptr);
|
||||||
|
|
||||||
rna_module_ptr= &pyrna->ptr;
|
rna_module_ptr= &pyrna->ptr;
|
||||||
return (PyObject *)pyrna;
|
return (PyObject *)pyrna;
|
||||||
}
|
}
|
||||||
@@ -5029,13 +5029,13 @@ void BPY_update_rna_module(void)
|
|||||||
#if 0
|
#if 0
|
||||||
/* This is a way we can access docstrings for RNA types
|
/* This is a way we can access docstrings for RNA types
|
||||||
* without having the datatypes in blender */
|
* without having the datatypes in blender */
|
||||||
PyObject *BPY_rna_doc( void )
|
PyObject *BPY_rna_doc(void)
|
||||||
{
|
{
|
||||||
PointerRNA ptr;
|
PointerRNA ptr;
|
||||||
|
|
||||||
/* for now, return the base RNA type rather then a real module */
|
/* for now, return the base RNA type rather then a real module */
|
||||||
RNA_blender_rna_pointer_create(&ptr);
|
RNA_blender_rna_pointer_create(&ptr);
|
||||||
|
|
||||||
return pyrna_struct_CreatePyObject(&ptr);
|
return pyrna_struct_CreatePyObject(&ptr);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -5044,7 +5044,7 @@ PyObject *BPY_rna_doc( void )
|
|||||||
/* pyrna_basetype_* - BPy_BaseTypeRNA is just a BPy_PropertyRNA struct with a differnt type
|
/* pyrna_basetype_* - BPy_BaseTypeRNA is just a BPy_PropertyRNA struct with a differnt type
|
||||||
* the self->ptr and self->prop are always set to the "structs" collection */
|
* the self->ptr and self->prop are always set to the "structs" collection */
|
||||||
//---------------getattr--------------------------------------------
|
//---------------getattr--------------------------------------------
|
||||||
static PyObject *pyrna_basetype_getattro( BPy_BaseTypeRNA *self, PyObject *pyname )
|
static PyObject *pyrna_basetype_getattro(BPy_BaseTypeRNA *self, PyObject *pyname)
|
||||||
{
|
{
|
||||||
PointerRNA newptr;
|
PointerRNA newptr;
|
||||||
PyObject *ret;
|
PyObject *ret;
|
||||||
@@ -5107,18 +5107,18 @@ PyObject *BPY_rna_types(void)
|
|||||||
{
|
{
|
||||||
BPy_BaseTypeRNA *self;
|
BPy_BaseTypeRNA *self;
|
||||||
|
|
||||||
if ((pyrna_basetype_Type.tp_flags & Py_TPFLAGS_READY)==0) {
|
if ((pyrna_basetype_Type.tp_flags & Py_TPFLAGS_READY)==0) {
|
||||||
pyrna_basetype_Type.tp_name = "RNA_Types";
|
pyrna_basetype_Type.tp_name = "RNA_Types";
|
||||||
pyrna_basetype_Type.tp_basicsize = sizeof(BPy_BaseTypeRNA);
|
pyrna_basetype_Type.tp_basicsize = sizeof(BPy_BaseTypeRNA);
|
||||||
pyrna_basetype_Type.tp_getattro = ( getattrofunc )pyrna_basetype_getattro;
|
pyrna_basetype_Type.tp_getattro = (getattrofunc) pyrna_basetype_getattro;
|
||||||
pyrna_basetype_Type.tp_flags = Py_TPFLAGS_DEFAULT;
|
pyrna_basetype_Type.tp_flags = Py_TPFLAGS_DEFAULT;
|
||||||
pyrna_basetype_Type.tp_methods = pyrna_basetype_methods;
|
pyrna_basetype_Type.tp_methods = pyrna_basetype_methods;
|
||||||
|
|
||||||
if( PyType_Ready( &pyrna_basetype_Type ) < 0 )
|
if(PyType_Ready(&pyrna_basetype_Type) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
self= (BPy_BaseTypeRNA *)PyObject_NEW( BPy_BaseTypeRNA, &pyrna_basetype_Type );
|
self= (BPy_BaseTypeRNA *)PyObject_NEW(BPy_BaseTypeRNA, &pyrna_basetype_Type);
|
||||||
|
|
||||||
/* avoid doing this lookup for every getattr */
|
/* avoid doing this lookup for every getattr */
|
||||||
RNA_blender_rna_pointer_create(&self->ptr);
|
RNA_blender_rna_pointer_create(&self->ptr);
|
||||||
@@ -5133,7 +5133,7 @@ StructRNA *pyrna_struct_as_srna(PyObject *self, int parent, const char *error_pr
|
|||||||
{
|
{
|
||||||
BPy_StructRNA *py_srna = NULL;
|
BPy_StructRNA *py_srna = NULL;
|
||||||
StructRNA *srna;
|
StructRNA *srna;
|
||||||
|
|
||||||
/* ack, PyObject_GetAttrString wont look up this types tp_dict first :/ */
|
/* ack, PyObject_GetAttrString wont look up this types tp_dict first :/ */
|
||||||
if(PyType_Check(self)) {
|
if(PyType_Check(self)) {
|
||||||
py_srna = (BPy_StructRNA *)PyDict_GetItemString(((PyTypeObject *)self)->tp_dict, "bl_rna");
|
py_srna = (BPy_StructRNA *)PyDict_GetItemString(((PyTypeObject *)self)->tp_dict, "bl_rna");
|
||||||
@@ -5225,7 +5225,7 @@ static int deferred_register_prop(StructRNA *srna, PyObject *key, PyObject *item
|
|||||||
|
|
||||||
/* not 100% nice :/, modifies the dict passed, should be ok */
|
/* not 100% nice :/, modifies the dict passed, should be ok */
|
||||||
PyDict_SetItemString(py_kw, "attr", key);
|
PyDict_SetItemString(py_kw, "attr", key);
|
||||||
|
|
||||||
args_fake= PyTuple_New(1);
|
args_fake= PyTuple_New(1);
|
||||||
PyTuple_SET_ITEM(args_fake, 0, py_srna_cobject);
|
PyTuple_SET_ITEM(args_fake, 0, py_srna_cobject);
|
||||||
|
|
||||||
@@ -5311,7 +5311,7 @@ static int pyrna_deferred_register_class_recursive(StructRNA *srna, PyTypeObject
|
|||||||
!PyObject_IsSubclass((PyObject *)py_superclass, (PyObject *)&pyrna_struct_Type)
|
!PyObject_IsSubclass((PyObject *)py_superclass, (PyObject *)&pyrna_struct_Type)
|
||||||
) {
|
) {
|
||||||
ret= pyrna_deferred_register_class_recursive(srna, py_superclass);
|
ret= pyrna_deferred_register_class_recursive(srna, py_superclass);
|
||||||
|
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -5319,7 +5319,7 @@ static int pyrna_deferred_register_class_recursive(StructRNA *srna, PyTypeObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* not register out own properties */
|
/* not register out own properties */
|
||||||
return pyrna_deferred_register_props(srna, py_class->tp_dict); /* getattr(..., "__dict__") returns a proxy */
|
return pyrna_deferred_register_props(srna, py_class->tp_dict); /* getattr(..., "__dict__") returns a proxy */
|
||||||
}
|
}
|
||||||
|
|
||||||
int pyrna_deferred_register_class(StructRNA *srna, PyObject *py_class)
|
int pyrna_deferred_register_class(StructRNA *srna, PyObject *py_class)
|
||||||
@@ -5346,7 +5346,7 @@ static int rna_function_arg_count(FunctionRNA *func)
|
|||||||
if(!(RNA_property_flag(parm) & PROP_OUTPUT))
|
if(!(RNA_property_flag(parm) & PROP_OUTPUT))
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5507,9 +5507,9 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
|
|||||||
/* testing, for correctness, not operator and not draw function */
|
/* testing, for correctness, not operator and not draw function */
|
||||||
const short is_readonly= strstr("draw", func_id) || /*strstr("render", func_id) ||*/ !RNA_struct_is_a(ptr->type, &RNA_Operator);
|
const short is_readonly= strstr("draw", func_id) || /*strstr("render", func_id) ||*/ !RNA_struct_is_a(ptr->type, &RNA_Operator);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
py_class= RNA_struct_py_type_get(ptr->type);
|
py_class= RNA_struct_py_type_get(ptr->type);
|
||||||
|
|
||||||
/* rare case. can happen when registering subclasses */
|
/* rare case. can happen when registering subclasses */
|
||||||
if(py_class==NULL) {
|
if(py_class==NULL) {
|
||||||
fprintf(stderr, "bpy_class_call(): unable to get python class for rna struct '%.200s'\n", RNA_struct_identifier(ptr->type));
|
fprintf(stderr, "bpy_class_call(): unable to get python class for rna struct '%.200s'\n", RNA_struct_identifier(ptr->type));
|
||||||
@@ -5539,10 +5539,10 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* end exception */
|
/* end exception */
|
||||||
|
|
||||||
if(py_class_instance==NULL)
|
if(py_class_instance==NULL)
|
||||||
py_srna= pyrna_struct_CreatePyObject(ptr);
|
py_srna= pyrna_struct_CreatePyObject(ptr);
|
||||||
|
|
||||||
if(py_class_instance) {
|
if(py_class_instance) {
|
||||||
/* special case, instance is cached */
|
/* special case, instance is cached */
|
||||||
}
|
}
|
||||||
@@ -5562,9 +5562,9 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
|
|||||||
if(py_class->tp_init) {
|
if(py_class->tp_init) {
|
||||||
/* true in most cases even when the class its self doesnt define an __init__ function. */
|
/* true in most cases even when the class its self doesnt define an __init__ function. */
|
||||||
args = PyTuple_New(0);
|
args = PyTuple_New(0);
|
||||||
if (py_class->tp_init(py_srna, args, NULL) < 0) {
|
if (py_class->tp_init(py_srna, args, NULL) < 0) {
|
||||||
Py_DECREF(py_srna);
|
Py_DECREF(py_srna);
|
||||||
py_srna= NULL;
|
py_srna= NULL;
|
||||||
/* err set below */
|
/* err set below */
|
||||||
}
|
}
|
||||||
Py_DECREF(args);
|
Py_DECREF(args);
|
||||||
@@ -5586,7 +5586,7 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
|
|||||||
py_class_instance= PyObject_Call(py_class, args, NULL);
|
py_class_instance= PyObject_Call(py_class, args, NULL);
|
||||||
Py_DECREF(args);
|
Py_DECREF(args);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
if(py_class_instance == NULL) {
|
if(py_class_instance == NULL) {
|
||||||
err= -1; /* so the error is not overridden below */
|
err= -1; /* so the error is not overridden below */
|
||||||
}
|
}
|
||||||
@@ -5605,7 +5605,7 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
|
|||||||
RNA_pointer_create(NULL, &RNA_Function, func, &funcptr);
|
RNA_pointer_create(NULL, &RNA_Function, func, &funcptr);
|
||||||
|
|
||||||
args = PyTuple_New(rna_function_arg_count(func)); /* first arg is included in 'item' */
|
args = PyTuple_New(rna_function_arg_count(func)); /* first arg is included in 'item' */
|
||||||
|
|
||||||
if(is_static) {
|
if(is_static) {
|
||||||
i= 0;
|
i= 0;
|
||||||
}
|
}
|
||||||
@@ -5638,10 +5638,10 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_PEDANTIC_WRITE
|
#ifdef USE_PEDANTIC_WRITE
|
||||||
rna_disallow_writes= is_readonly ? TRUE:FALSE;
|
rna_disallow_writes= is_readonly ? TRUE:FALSE;
|
||||||
#endif
|
#endif
|
||||||
/* *** Main Caller *** */
|
/* *** Main Caller *** */
|
||||||
|
|
||||||
ret = PyObject_Call(item, args, NULL);
|
ret = PyObject_Call(item, args, NULL);
|
||||||
|
|
||||||
/* *** Done Calling *** */
|
/* *** Done Calling *** */
|
||||||
@@ -5733,7 +5733,7 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
|
|||||||
}
|
}
|
||||||
|
|
||||||
bpy_context_clear(C, &gilstate);
|
bpy_context_clear(C, &gilstate);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5770,7 +5770,7 @@ void pyrna_alloc_types(void)
|
|||||||
|
|
||||||
PointerRNA ptr;
|
PointerRNA ptr;
|
||||||
PropertyRNA *prop;
|
PropertyRNA *prop;
|
||||||
|
|
||||||
gilstate = PyGILState_Ensure();
|
gilstate = PyGILState_Ensure();
|
||||||
|
|
||||||
/* avoid doing this lookup for every getattr */
|
/* avoid doing this lookup for every getattr */
|
||||||
@@ -5856,7 +5856,7 @@ static PyObject *pyrna_register_class(PyObject *UNUSED(self), PyObject *py_class
|
|||||||
srna= pyrna_struct_as_srna(py_class, 1, "register_class(...):");
|
srna= pyrna_struct_as_srna(py_class, 1, "register_class(...):");
|
||||||
if(srna==NULL)
|
if(srna==NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* fails in cases, cant use this check but would like to :| */
|
/* fails in cases, cant use this check but would like to :| */
|
||||||
/*
|
/*
|
||||||
if(RNA_struct_py_type_get(srna)) {
|
if(RNA_struct_py_type_get(srna)) {
|
||||||
@@ -5872,7 +5872,7 @@ static PyObject *pyrna_register_class(PyObject *UNUSED(self), PyObject *py_class
|
|||||||
PyErr_Format(PyExc_ValueError, "register_class(...): expected a subclass of a registerable rna type (%.200s does not support registration)", RNA_struct_identifier(srna));
|
PyErr_Format(PyExc_ValueError, "register_class(...): expected a subclass of a registerable rna type (%.200s does not support registration)", RNA_struct_identifier(srna));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get the context, so register callback can do necessary refreshes */
|
/* get the context, so register callback can do necessary refreshes */
|
||||||
C= BPy_GetContext();
|
C= BPy_GetContext();
|
||||||
|
|
||||||
@@ -5893,7 +5893,7 @@ static PyObject *pyrna_register_class(PyObject *UNUSED(self), PyObject *py_class
|
|||||||
|
|
||||||
pyrna_subtype_set_rna(py_class, srna_new); /* takes a ref to py_class */
|
pyrna_subtype_set_rna(py_class, srna_new); /* takes a ref to py_class */
|
||||||
|
|
||||||
/* old srna still references us, keep the check incase registering somehow can free it */
|
/* old srna still references us, keep the check incase registering somehow can free it */
|
||||||
if(RNA_struct_py_type_get(srna)) {
|
if(RNA_struct_py_type_get(srna)) {
|
||||||
RNA_struct_py_type_set(srna, NULL);
|
RNA_struct_py_type_set(srna, NULL);
|
||||||
// Py_DECREF(py_class); // shuld be able to do this XXX since the old rna adds a new ref.
|
// Py_DECREF(py_class); // shuld be able to do this XXX since the old rna adds a new ref.
|
||||||
@@ -5955,7 +5955,7 @@ static PyObject *pyrna_unregister_class(PyObject *UNUSED(self), PyObject *py_cla
|
|||||||
srna= pyrna_struct_as_srna(py_class, 0, "unregister_class(...):");
|
srna= pyrna_struct_as_srna(py_class, 0, "unregister_class(...):");
|
||||||
if(srna==NULL)
|
if(srna==NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* check that we have a unregister callback for this type */
|
/* check that we have a unregister callback for this type */
|
||||||
unreg= RNA_struct_unregister(srna);
|
unreg= RNA_struct_unregister(srna);
|
||||||
|
|
||||||
@@ -5963,7 +5963,7 @@ static PyObject *pyrna_unregister_class(PyObject *UNUSED(self), PyObject *py_cla
|
|||||||
PyErr_SetString(PyExc_ValueError, "unregister_class(...): expected a Type subclassed from a registerable rna type (no unregister supported)");
|
PyErr_SetString(PyExc_ValueError, "unregister_class(...): expected a Type subclassed from a registerable rna type (no unregister supported)");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* should happen all the time but very slow */
|
/* should happen all the time but very slow */
|
||||||
if(G.f & G_DEBUG) {
|
if(G.f & G_DEBUG) {
|
||||||
/* remove all properties using this class */
|
/* remove all properties using this class */
|
||||||
@@ -5974,9 +5974,9 @@ static PyObject *pyrna_unregister_class(PyObject *UNUSED(self), PyObject *py_cla
|
|||||||
|
|
||||||
RNA_blender_rna_pointer_create(&ptr_rna);
|
RNA_blender_rna_pointer_create(&ptr_rna);
|
||||||
prop_rna = RNA_struct_find_property(&ptr_rna, "structs");
|
prop_rna = RNA_struct_find_property(&ptr_rna, "structs");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* loop over all structs */
|
/* loop over all structs */
|
||||||
RNA_PROP_BEGIN(&ptr_rna, itemptr, prop_rna) {
|
RNA_PROP_BEGIN(&ptr_rna, itemptr, prop_rna) {
|
||||||
srna_iter = itemptr.data;
|
srna_iter = itemptr.data;
|
||||||
@@ -5985,13 +5985,13 @@ static PyObject *pyrna_unregister_class(PyObject *UNUSED(self), PyObject *py_cla
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
RNA_PROP_END;
|
RNA_PROP_END;
|
||||||
|
|
||||||
if(prop_identifier) {
|
if(prop_identifier) {
|
||||||
PyErr_Format(PyExc_RuntimeError, "unregister_class(...): can't unregister %s because %s.%s pointer property is using this", RNA_struct_identifier(srna), RNA_struct_identifier(srna_iter), prop_identifier);
|
PyErr_Format(PyExc_RuntimeError, "unregister_class(...): can't unregister %s because %s.%s pointer property is using this", RNA_struct_identifier(srna), RNA_struct_identifier(srna_iter), prop_identifier);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get the context, so register callback can do necessary refreshes */
|
/* get the context, so register callback can do necessary refreshes */
|
||||||
C= BPy_GetContext();
|
C= BPy_GetContext();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user