Skip to content

Commit 7591415

Browse files
author
Roberto De Ioris
committed
first round of ref-by-default struct
1 parent 866b236 commit 7591415

3 files changed

Lines changed: 10 additions & 10 deletions

File tree

‎Source/UnrealEnginePython/Private/UEPyUScriptStruct.cpp‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ static PyObject *py_ue_uscriptstruct_get_field(ue_PyUScriptStruct *self, PyObjec
1616
if (!u_property)
1717
return PyErr_Format(PyExc_Exception, "unable to find property %s", name);
1818

19-
return ue_py_convert_property(u_property, self->data, index);
19+
return ue_py_convert_property(u_property, self->u_struct_ptr, index);
2020
}
2121

2222
static PyObject *py_ue_uscriptstruct_get_field_array_dim(ue_PyUScriptStruct *self, PyObject * args)
@@ -49,7 +49,7 @@ static PyObject *py_ue_uscriptstruct_set_field(ue_PyUScriptStruct *self, PyObjec
4949
return PyErr_Format(PyExc_Exception, "unable to find property %s", name);
5050

5151

52-
if (!ue_py_convert_pyobject(value, u_property, self->data, index))
52+
if (!ue_py_convert_pyobject(value, u_property, self->u_struct_ptr, index))
5353
{
5454
return PyErr_Format(PyExc_Exception, "unable to set property %s", name);
5555
}
@@ -80,7 +80,7 @@ static PyObject *py_ue_uscriptstruct_get_struct(ue_PyUScriptStruct *self, PyObje
8080

8181
static PyObject *py_ue_uscriptstruct_clone(ue_PyUScriptStruct *self, PyObject * args)
8282
{
83-
return py_ue_new_uscriptstruct(self->u_struct, self->data);
83+
return py_ue_new_uscriptstruct(self->u_struct, self->u_struct_ptr);
8484
}
8585

8686
PyObject *py_ue_uscriptstruct_as_dict(ue_PyUScriptStruct * self, PyObject * args)

‎Source/UnrealEnginePython/Private/UEPyUScriptStruct.h‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
typedef struct
66
{
77
PyObject_HEAD
8-
/* Type-specific fields go here. */
9-
UScriptStruct *u_struct;
10-
uint8 *data;
11-
// if 1, data points to un-owned memory
12-
int is_ptr;
8+
/* Type-specific fields go here. */
9+
UScriptStruct *u_struct;
10+
uint8 *u_struct_ptr;
1311
// points to the original struct memory (do not try this at home !)
14-
uint8 *original_data;
12+
uint8 *original_ptr;
13+
// if set, the struct is responsible for freeing memory
14+
int u_struct_owned;
1515
} ue_PyUScriptStruct;
1616

1717
PyObject *py_ue_new_uscriptstruct(UScriptStruct *, uint8 *);

‎Source/UnrealEnginePython/Private/UObject/UEPyDataTable.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ PyObject *py_ue_data_table_add_row(ue_PyUObject * self, PyObject * args)
3838
if (!row)
3939
return PyErr_Format(PyExc_Exception, "unable to add row");
4040
data_table->RowStruct->InitializeStruct(row);
41-
data_table->RowStruct->CopyScriptStruct(row, u_struct->data);
41+
data_table->RowStruct->CopyScriptStruct(row, u_struct->u_struct_ptr);
4242

4343
Py_RETURN_NONE;
4444

0 commit comments

Comments
 (0)