[PyGreSQL] [CVS] Change to pygresql: pgmodule.c

Christoph Zwerschke cito at druid.net
Wed Sep 17 05:00:08 EDT 2008


Update of /usr/cvs/Public/pygresql/module
In directory druid.net:/tmp/cvs-serv27675/module

Modified Files:
	pgmodule.c 
Log Message:
Allow set_decimal(None) instead of set_decimal(float).
To see the diffs for this commit:
   http://www.druid.net/pygresql/viewcvs.cgi/cvs/pygresql/module/pgmodule.c.diff?r1=1.78&r2=1.79

Index: pgmodule.c
===================================================================
RCS file: /usr/cvs/Public/pygresql/module/pgmodule.c,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -r1.78 -r1.79
--- pgmodule.c	16 Sep 2008 22:29:48 -0000	1.78
+++ pgmodule.c	17 Sep 2008 09:00:08 -0000	1.79
@@ -1,5 +1,5 @@
 /*
- * $Id: pgmodule.c,v 1.78 2008/09/16 22:29:48 cito Exp $
+ * $Id: pgmodule.c,v 1.79 2008/09/17 09:00:08 cito Exp $
  * PyGres, version 2.2 A Python interface for PostgreSQL database. Written by
  * D'Arcy J.M. Cain, (darcy at druid.net).  Based heavily on code written by
  * Pascal Andre, andre at chimay.via.ecp.fr. Copyright (c) 1995, Pascal Andre
@@ -3077,25 +3077,30 @@
 
 /* set decimal */
 static char set_decimal__doc__[] =
-"set_decimal(class) -- set a decimal type to be used for numeric values.";
+"set_decimal(cls) -- set a decimal type to be used for numeric values.";
 
 static PyObject *
-set_decimal(PyObject *dummy, PyObject *args)
+set_decimal(PyObject * self, PyObject * args)
 {
-	PyObject *result = NULL;
-	PyObject *temp;
+	PyObject *ret = NULL;
+	PyObject *cls;
 
-	if (PyArg_ParseTuple(args, "O:set_decimal", &temp))
+	if (PyArg_ParseTuple(args, "O", &cls))
 	{
-		if (!PyCallable_Check(temp))
+		if (cls == Py_None)
 		{
-			PyErr_SetString(PyExc_TypeError, "parameter must be callable");
-			return NULL;
+			Py_XDECREF(decimal); decimal = NULL;
+			Py_INCREF(Py_None); ret = Py_None;
+		}
+		else if (PyCallable_Check(cls))
+		{
+			Py_XINCREF(cls); Py_XDECREF(decimal); decimal = cls;
+			Py_INCREF(Py_None); ret = Py_None;
 		}
-		Py_XINCREF(temp); Py_XDECREF(decimal); decimal = temp;
-		Py_INCREF(Py_None); result = Py_None;
+		else
+			PyErr_SetString(PyExc_TypeError, "decimal type must be None or callable");
 	}
-	return result;
+	return ret;
 }
 
 #ifdef DEFAULT_VARS



More information about the PyGreSQL mailing list