[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
2002年12月06日 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;
 }

AltStyle によって変換されたページ (->オリジナル) /