[Python-checkins] python/nondist/sandbox/datetime datetime.c,1.43,1.44 obj_date.c,1.32,1.33

tim_one@users.sourceforge.net tim_one@users.sourceforge.net
Fri, 06 Dec 2002 09:06:31 -0800


Update of /cvsroot/python/python/nondist/sandbox/datetime
In directory sc8-pr-cvs1:/tmp/cvs-serv16549

Modified Files:
	datetime.c obj_date.c 
Log Message:
Fred pointed out that PyObject_CallMethod can be used to call a module
function too, so exploited that to save some tedious boilerplate code.


Index: datetime.c
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/datetime.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -C2 -d -r1.43 -r1.44
*** datetime.c	6 Dec 2002 02:55:32 -0000	1.43
--- datetime.c	6 Dec 2002 17:04:58 -0000	1.44
***************
*** 340,344 ****
  {
  	PyObject *time;
- 	PyObject *time_strftime;
  	PyObject *result;
  
--- 340,343 ----
***************
*** 349,359 ****
  		return NULL;
  
! 	time_strftime = PyObject_GetAttrString(time, "strftime");
! 	Py_DECREF(time);
! 	if (time_strftime == NULL)
! 		return NULL;
! 
!    	result = PyObject_CallFunction(time_strftime, "OO", format, tuple);
!     	Py_DECREF(time_strftime);
      	return result;
  }
--- 348,353 ----
  		return NULL;
  
!    	result = PyObject_CallMethod(time, "strftime", "OO", format, tuple);
!     	Py_DECREF(time);
      	return result;
  }
***************
*** 743,754 ****
  	{
  		PyObject *temp;
- 		PyObject *copyreg_pickle;
  		PyObject *pickler;
  
! 		temp = PyImport_ImportModule("copy_reg");
! 		assert(temp);
! 		copyreg_pickle = PyObject_GetAttrString(temp, "pickle");
! 		assert(copyreg_pickle);
! 		Py_DECREF(temp);
  
  		pickler = PyObject_GetAttrString(m, "_date_pickler");
--- 737,744 ----
  	{
  		PyObject *temp;
  		PyObject *pickler;
+ 		PyObject *copyreg = PyImport_ImportModule("copy_reg");
  
! 		assert(copyreg);
  
  		pickler = PyObject_GetAttrString(m, "_date_pickler");
***************
*** 757,764 ****
  						"_date_unpickler");
  		assert(date_unpickler_object);
! 	    	temp = PyObject_CallFunction(copyreg_pickle, "OOO",
! 	    				     &PyDateTime_DateType,
! 	    				     pickler,
! 		                             date_unpickler_object);
  		assert(temp);
  		Py_DECREF(temp);
--- 747,754 ----
  						"_date_unpickler");
  		assert(date_unpickler_object);
! 	    	temp = PyObject_CallMethod(copyreg, "pickle", "OOO",
! 	    				   &PyDateTime_DateType,
! 	    				   pickler,
! 		                           date_unpickler_object);
  		assert(temp);
  		Py_DECREF(temp);
***************
*** 770,782 ****
  						"_datetime_unpickler");
  		assert(datetime_unpickler_object);
! 	    	temp = PyObject_CallFunction(copyreg_pickle, "OOO",
! 	    				     &PyDateTime_DateTimeType,
! 	    				     pickler,
! 		                             datetime_unpickler_object);
  		assert(temp);
  		Py_DECREF(temp);
  		Py_DECREF(pickler);
  
! 		Py_DECREF(copyreg_pickle);
  	}
  }
--- 760,772 ----
  						"_datetime_unpickler");
  		assert(datetime_unpickler_object);
! 	    	temp = PyObject_CallMethod(copyreg, "pickle", "OOO",
! 	    				   &PyDateTime_DateTimeType,
! 	    				   pickler,
! 		                           datetime_unpickler_object);
  		assert(temp);
  		Py_DECREF(temp);
  		Py_DECREF(pickler);
  
! 		Py_DECREF(copyreg);
  	}
  }

Index: obj_date.c
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/obj_date.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -C2 -d -r1.32 -r1.33
*** obj_date.c	6 Dec 2002 05:26:52 -0000	1.32
--- obj_date.c	6 Dec 2002 17:05:13 -0000	1.33
***************
*** 227,232 ****
  date_today(PyObject *self, PyObject *cls)
  {
! 	PyObject *time;		/* the time module, and later time.time() */
! 	PyObject *time_time;	/* time.time */
  	PyObject *result;
  
--- 227,232 ----
  date_today(PyObject *self, PyObject *cls)
  {
! 	PyObject *time;		/* the time module) */
! 	PyObject *time_time;	/* time.time() */
  	PyObject *result;
  
***************
*** 235,246 ****
  		return NULL;
  
! 	time_time = PyObject_GetAttrString(time, "time");
  	Py_DECREF(time);
! 	if (time_time == NULL)
! 		return NULL;
! 
!    	time = PyObject_CallObject(time_time, NULL);
!     	Py_DECREF(time_time);
!     	if (time == NULL)
      		return NULL;
  
--- 235,241 ----
  		return NULL;
  
! 	time_time = PyObject_CallMethod(time, "time", "()");
  	Py_DECREF(time);
!     	if (time_time == NULL)
      		return NULL;
  
***************
*** 251,256 ****
  	 * date.today() could get away with plain C time().
  	 */
! 	result = PyObject_CallMethod(cls, "fromtimestamp", "O", time);
! 	Py_DECREF(time);
  	return result;
  }
--- 246,251 ----
  	 * date.today() could get away with plain C time().
  	 */
! 	result = PyObject_CallMethod(cls, "fromtimestamp", "O", time_time);
! 	Py_DECREF(time_time);
  	return result;
  }