示例#1
0
//-------------------------------------------------------------------------------------
PyObject* FixedArray::__py_extend(PyObject* self, PyObject* args, PyObject* kwargs)
{
	FixedArray* ary = static_cast<FixedArray*>(self);
	uint32 seq_size = ary->length();
	PyObject* pyItem = PyTuple_GetItem(args, 0);
	return PyBool_FromLong(seq_ass_slice(self, seq_size, seq_size, &*pyItem) == 0);	
}
示例#2
0
//-------------------------------------------------------------------------------------
PyObject* FixedArray::__py_reduce_ex__(PyObject* self, PyObject* protocol)
{
	FixedArray* arr = static_cast<FixedArray*>(self);
	PyObject* args = PyTuple_New(2);
	PyObject* unpickleMethod = script::Pickler::getUnpickleFunc("FixedArray");
	PyTuple_SET_ITEM(args, 0, unpickleMethod);
	int len = arr->length();
	PyObject* args1 = PyTuple_New(2);
	PyObject* pyList = PyList_New(len);

	if(len > 0)
	{
		std::vector<PyObject*>& values = arr->getValues();
		for(int i=0; i<len; ++i)
		{
			Py_INCREF(values[i]);
			PyList_SET_ITEM(pyList, i, values[i]);
		}
	}

	PyTuple_SET_ITEM(args1, 0, PyLong_FromLongLong(arr->getDataType()->id()));
	PyTuple_SET_ITEM(args1, 1, pyList);

	PyTuple_SET_ITEM(args, 1, args1);

	if(unpickleMethod == NULL){
		Py_DECREF(args);
		return NULL;
	}
	return args;
}
示例#3
0
//-------------------------------------------------------------------------------------
PyObject* FixedArray::__py_append(PyObject* self, PyObject* args, PyObject* kwargs)
{
	FixedArray* ary = static_cast<FixedArray*>(self);
	uint32 seq_size = ary->length();
	return PyBool_FromLong(seq_ass_slice(self, seq_size, seq_size, &*args) == 0);	
}