コード例 #1
0
static int __init__(PyObject *self, PyObject *args, PyObject *kwds)
{
	ligolw_RowDumper *rowdumper = (ligolw_RowDumper *) self;
	Py_UNICODE default_delimiter = ',';

	rowdumper->delimiter = NULL;
	if(!PyArg_ParseTuple(args, "OO|U", &rowdumper->attributes, &rowdumper->formats, &rowdumper->delimiter))
		return -1;

	if(rowdumper->delimiter)
		Py_INCREF(rowdumper->delimiter);
	else
		rowdumper->delimiter = PyUnicode_FromUnicode(&default_delimiter, 1);
	rowdumper->attributes = llwtokenizer_build_attributes(rowdumper->attributes);
	rowdumper->formats = llwtokenizer_build_formats(rowdumper->formats);
	if(!rowdumper->delimiter || !rowdumper->attributes || !rowdumper->formats)
		/* memory clean-up happens in __del__() */
		return -1;

	if(PyTuple_GET_SIZE(rowdumper->attributes) != PyTuple_GET_SIZE(rowdumper->formats)) {
		/* memory clean-up happens in __del__() */
		PyErr_SetString(PyExc_ValueError, "len(attributes) != len(formats)");
		return -1;
	}

	rowdumper->rows_converted = 0;
	rowdumper->iter = Py_None;
	Py_INCREF(rowdumper->iter);
	rowdumper->tokens = Py_None;
	Py_INCREF(rowdumper->tokens);

	return 0;
}
コード例 #2
0
static int __init__(PyObject *self, PyObject *args, PyObject *kwds)
{
	ligolw_RowBuilder *rowbuilder = (ligolw_RowBuilder *) self;

	rowbuilder->interns = NULL;
	if(!PyArg_ParseTuple(args, "OO|O", &rowbuilder->rowtype, &rowbuilder->attributes, &rowbuilder->interns))
		return -1;

	Py_INCREF(rowbuilder->rowtype);

	rowbuilder->attributes = llwtokenizer_build_attributes(rowbuilder->attributes);
	if(rowbuilder->interns)
		rowbuilder->interns = PySequence_Tuple(rowbuilder->interns);
	else
		rowbuilder->interns = PyTuple_New(0);

	if(!rowbuilder->attributes || !rowbuilder->interns)
		return -1;

	rowbuilder->row = Py_None;
	Py_INCREF(rowbuilder->row);
	rowbuilder->i = 0;
	rowbuilder->iter = NULL;

	return 0;
}