[Python-checkins] python/nondist/sandbox/datetime datetime.c,1.12,1.13

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
Thu, 21 Nov 2002 09:59:30 -0800


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

Modified Files:
	datetime.c 
Log Message:
Reindent with tabs.  Tim will take it from here.


Index: datetime.c
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/datetime.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** datetime.c	20 Aug 2002 18:53:07 -0000	1.12
--- datetime.c	21 Nov 2002 17:59:28 -0000	1.13
***************
*** 16,24 ****
  typedef struct
  {
!     PyObject_HEAD
!     int hashcode;
!     long int days;
!     long int seconds;
!     long int microseconds;
  } PyDateTime_Delta;
  
--- 16,24 ----
  typedef struct
  {
! 	PyObject_HEAD
! 	int hashcode;
! 	long int days;
! 	long int seconds;
! 	long int microseconds;
  } PyDateTime_Delta;
  
***************
*** 65,69 ****
  is_leap(int year)
  {
!     return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) ? 1 : 0;
  }
  
--- 65,69 ----
  is_leap(int year)
  {
! 	return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) ? 1 : 0;
  }
  
***************
*** 71,84 ****
  days_in_month(int year, int month)
  {
!     static int _days_in_month[] = {
!         0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
!     };
  
!     assert(month >= 1);
!     assert(month <= 12);
!     if (month == 2 && is_leap(year))
!         return 29;
!     else
!         return _days_in_month[month];
  }
  
--- 71,84 ----
  days_in_month(int year, int month)
  {
! 	static int _days_in_month[] = {
! 		0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
! 	};
  
! 	assert(month >= 1);
! 	assert(month <= 12);
! 	if (month == 2 && is_leap(year))
! 		return 29;
! 	else
! 		return _days_in_month[month];
  }
  
***************
*** 86,91 ****
  days_before_year(int year)
  {
!     int y = year - 1;
!     return y*365 + y/4 - y/100 + y/400;
  }
  
--- 86,91 ----
  days_before_year(int year)
  {
! 	int y = year - 1;
! 	return y*365 + y/4 - y/100 + y/400;
  }
  
***************
*** 94,98 ****
   */
  static int _days_before_month[] = {
!     0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334
  };
  
--- 94,98 ----
   */
  static int _days_before_month[] = {
! 	0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334
  };
  
***************
*** 100,111 ****
  days_before_month(int year, int month)
  {
!     int days;
  
!     assert(month >= 1);
!     assert(month <= 12);
!     days = _days_before_month[month];
!     if (month > 2 && is_leap(year))
!         ++days;
!     return days;
  }
  
--- 100,111 ----
  days_before_month(int year, int month)
  {
! 	int days;
  
! 	assert(month >= 1);
! 	assert(month <= 12);
! 	days = _days_before_month[month];
! 	if (month > 2 && is_leap(year))
! 		++days;
! 	return days;
  }
  
***************
*** 114,160 ****
  ord_to_ymd(long int ordinal, long int *year, long int *month, long int *day)
  {
!     int di400y = days_before_year(401);
!     int di100y = days_before_year(101);
!     int di4y = days_before_year(5);
!     int n, n1, n4, n100, n400, leapyear, preceding;
  
!     assert(ordinal >= 1);
!     --ordinal;
!     n400 = ordinal / di400y;
!     n = ordinal % di400y;
!     *year = n400 * 400 + 1;
  
!     n100 = n / di100y;
!     n = n % di100y;
  
!     n4 = n / di4y;
!     n = n % di4y;
  
!     n1 = n / 365;
!     n = n % 365;
  
!     *year += n100 * 100 + n4 * 4 + n1;
!     if (n1 == 4 || n100 == 4) {
!         assert(n == 0);
!         *year -= 1;
!         *month = 12;
!         *day = 31;
!         return;
!     }
!     leapyear = (n1 == 3 && (n4 != 24 || n100 == 3)) ? 1 : 0;
!     assert(leapyear == is_leap(*year));
!     *month = (n + 50) >> 5;
!     preceding = (_days_before_month[*month]
!                  + ((*month > 2 && leapyear) ? 1 : 0));
!     if (preceding > n) {
!         /* estimate is too large */
!         *month -= 1;
!         preceding -= days_in_month(*year, *month);
!     }
!     n -= preceding;
!     assert(0 <= n);
!     assert(n < days_in_month(*year, *month));
  
!     *day = n + 1;
  }
  
--- 114,160 ----
  ord_to_ymd(long int ordinal, long int *year, long int *month, long int *day)
  {
! 	int di400y = days_before_year(401);
! 	int di100y = days_before_year(101);
! 	int di4y = days_before_year(5);
! 	int n, n1, n4, n100, n400, leapyear, preceding;
  
! 	assert(ordinal >= 1);
! 	--ordinal;
! 	n400 = ordinal / di400y;
! 	n = ordinal % di400y;
! 	*year = n400 * 400 + 1;
  
! 	n100 = n / di100y;
! 	n = n % di100y;
  
! 	n4 = n / di4y;
! 	n = n % di4y;
  
! 	n1 = n / 365;
! 	n = n % 365;
  
! 	*year += n100 * 100 + n4 * 4 + n1;
! 	if (n1 == 4 || n100 == 4) {
! 		assert(n == 0);
! 		*year -= 1;
! 		*month = 12;
! 		*day = 31;
! 		return;
! 	}
! 	leapyear = (n1 == 3 && (n4 != 24 || n100 == 3)) ? 1 : 0;
! 	assert(leapyear == is_leap(*year));
! 	*month = (n + 50) >> 5;
! 	preceding = (_days_before_month[*month]
! 		     + ((*month > 2 && leapyear) ? 1 : 0));
! 	if (preceding > n) {
! 		/* estimate is too large */
! 		*month -= 1;
! 		preceding -= days_in_month(*year, *month);
! 	}
! 	n -= preceding;
! 	assert(0 <= n);
! 	assert(n < days_in_month(*year, *month));
  
! 	*day = n + 1;
  }
  
***************
*** 163,167 ****
  ymd_to_ord(int year, int month, int day)
  {
!     return days_before_year(year) + days_before_month(year, month) + day;
  }
  
--- 163,167 ----
  ymd_to_ord(int year, int month, int day)
  {
! 	return days_before_year(year) + days_before_month(year, month) + day;
  }
  
***************
*** 169,173 ****
  weekday(int year, int month, int day)
  {
!     return (ymd_to_ord(year, month, day) + 6) % 7;
  }
  
--- 169,173 ----
  weekday(int year, int month, int day)
  {
! 	return (ymd_to_ord(year, month, day) + 6) % 7;
  }
  
***************
*** 175,187 ****
  iso_week1_monday(int year)
  {
!     int first_day     = ymd_to_ord(year, 1, 1);
!     int first_weekday = (first_day + 6) % 7;
!     int week1_monday  = first_day - first_weekday;
  
  #define THURSDAY 3
!     if (first_weekday > THURSDAY)
!         week1_monday += 7;
  #undef THURSDAY
!     return week1_monday;
  }
  
--- 175,187 ----
  iso_week1_monday(int year)
  {
! 	int first_day     = ymd_to_ord(year, 1, 1);
! 	int first_weekday = (first_day + 6) % 7;
! 	int week1_monday  = first_day - first_weekday;
  
  #define THURSDAY 3
! 	if (first_weekday > THURSDAY)
! 		week1_monday += 7;
  #undef THURSDAY
! 	return week1_monday;
  }
  
***************
*** 190,209 ****
               int hours, int minutes, int seconds)
  {
!     static char *DayNames[] = {
!         "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"
!     };
!     static char *MonthNames[] = {
!         "Jan", "Feb", "Mar", "Apr", "May", "Jun",
!         "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
!     };
  
!     char buffer[128];
!     int wday = weekday(GET_YEAR(date), GET_MONTH(date), GET_DAY(date));
  
!     PyOS_snprintf(buffer, sizeof(buffer), "%s %s %2d %02d:%02d:%02d %04d",
!                   DayNames[wday], MonthNames[GET_MONTH(date) - 1],
!                   GET_DAY(date), hours, minutes, seconds,
!                   GET_YEAR(date));
!     return PyString_FromString(buffer);
  }
  
--- 190,209 ----
               int hours, int minutes, int seconds)
  {
! 	static char *DayNames[] = {
! 		"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"
! 	};
! 	static char *MonthNames[] = {
! 		"Jan", "Feb", "Mar", "Apr", "May", "Jun",
! 		"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
! 	};
  
! 	char buffer[128];
! 	int wday = weekday(GET_YEAR(date), GET_MONTH(date), GET_DAY(date));
  
! 	PyOS_snprintf(buffer, sizeof(buffer), "%s %s %2d %02d:%02d:%02d %04d",
! 		      DayNames[wday], MonthNames[GET_MONTH(date) - 1],
! 		      GET_DAY(date), hours, minutes, seconds,
! 		      GET_YEAR(date));
! 	return PyString_FromString(buffer);
  }
  
***************
*** 211,219 ****
  isoformat_date(PyDateTime_Date *dt, char buffer[], int bufflen)
  {
!     int x;
!     x = PyOS_snprintf(buffer, bufflen,
!                       "%04d-%02d-%02d",
!                       GET_YEAR(dt), GET_MONTH(dt), GET_DAY(dt));
!     return buffer + x;
  }
  
--- 211,219 ----
  isoformat_date(PyDateTime_Date *dt, char buffer[], int bufflen)
  {
! 	int x;
! 	x = PyOS_snprintf(buffer, bufflen,
! 			  "%04d-%02d-%02d",
! 			  GET_YEAR(dt), GET_MONTH(dt), GET_DAY(dt));
! 	return buffer + x;
  }
  
***************
*** 221,228 ****
  isoformat_time(PyDateTime_DateTime *dt, char buffer[], int bufflen)
  {
!     PyOS_snprintf(buffer, bufflen,
!                   "%02d:%02d:%02d.%06d",
!                   GET_HOUR(dt), GET_MINUTE(dt), GET_SECOND(dt),
!                   GET_MICROSECOND(dt));
  }
  
--- 221,228 ----
  isoformat_time(PyDateTime_DateTime *dt, char buffer[], int bufflen)
  {
! 	PyOS_snprintf(buffer, bufflen,
! 		      "%02d:%02d:%02d.%06d",
! 		      GET_HOUR(dt), GET_MINUTE(dt), GET_SECOND(dt),
! 		      GET_MICROSECOND(dt));
  }
  
***************
*** 232,245 ****
  new_date(int year, int month, int day)
  {
!     PyDateTime_Date *self;
  
!     self = PyObject_New(PyDateTime_Date, &PyDateTime_DateType);
!     if (self != NULL) {
!         self->hashcode = -1;
!         SET_YEAR(self, year);
!         SET_MONTH(self, month);
!         SET_DAY(self, day);
!     }
!     return (PyObject *) self;
  }
  
--- 232,245 ----
  new_date(int year, int month, int day)
  {
! 	PyDateTime_Date *self;
  
! 	self = PyObject_New(PyDateTime_Date, &PyDateTime_DateType);
! 	if (self != NULL) {
! 		self->hashcode = -1;
! 		SET_YEAR(self, year);
! 		SET_MONTH(self, month);
! 		SET_DAY(self, day);
! 	}
! 	return (PyObject *) self;
  }
  
***************
*** 249,266 ****
               int second, int usecond)
  {
!     PyDateTime_DateTime *self;
  
!     self = PyObject_New(PyDateTime_DateTime, &PyDateTime_DateTimeType);
!     if (self != NULL) {
!         self->hashcode = -1;
!         SET_YEAR(self, year);
!         SET_MONTH(self, month);
!         SET_DAY(self, day);
!         SET_HOUR(self, hour);
!         SET_MINUTE(self, minute);
!         SET_SECOND(self, second);
!         SET_MICROSECOND(self, usecond);
!     }
!     return (PyObject *) self;
  }
  
--- 249,266 ----
               int second, int usecond)
  {
! 	PyDateTime_DateTime *self;
  
! 	self = PyObject_New(PyDateTime_DateTime, &PyDateTime_DateTimeType);
! 	if (self != NULL) {
! 		self->hashcode = -1;
! 		SET_YEAR(self, year);
! 		SET_MONTH(self, month);
! 		SET_DAY(self, day);
! 		SET_HOUR(self, hour);
! 		SET_MINUTE(self, minute);
! 		SET_SECOND(self, second);
! 		SET_MICROSECOND(self, usecond);
! 	}
! 	return (PyObject *) self;
  }
  
***************
*** 268,289 ****
  new_delta(long int days, long int seconds, long int microseconds)
  {
!     PyDateTime_Delta *self;
  
!     if (microseconds >= 1000000 || microseconds <= -1000000) {
!         seconds += microseconds / 1000000;
!         microseconds %= 1000000;
!     }
!     if (seconds >= 24*3600 || seconds <= 24*3600) {
!         days += seconds / (24*3600);
!         seconds %= (24*3600);
!     }
!     self = PyObject_New(PyDateTime_Delta, &PyDateTime_DeltaType);
!     if (self != NULL) {
!         self->hashcode = -1;
!         SET_TD_DAYS(self, days);
!         SET_TD_SECONDS(self, seconds);
!         SET_TD_MICROSECONDS(self, microseconds);
!     }
!     return (PyObject *) self;
  }
  
--- 268,289 ----
  new_delta(long int days, long int seconds, long int microseconds)
  {
! 	PyDateTime_Delta *self;
  
! 	if (microseconds >= 1000000 || microseconds <= -1000000) {
! 		seconds += microseconds / 1000000;
! 		microseconds %= 1000000;
! 	}
! 	if (seconds >= 24*3600 || seconds <= 24*3600) {
! 		days += seconds / (24*3600);
! 		seconds %= (24*3600);
! 	}
! 	self = PyObject_New(PyDateTime_Delta, &PyDateTime_DeltaType);
! 	if (self != NULL) {
! 		self->hashcode = -1;
! 		SET_TD_DAYS(self, days);
! 		SET_TD_SECONDS(self, seconds);
! 		SET_TD_MICROSECONDS(self, microseconds);
! 	}
! 	return (PyObject *) self;
  }
  
***************
*** 295,348 ****
  init_datetime(void)
  {
!     PyObject *m;
!     PyObject *d, *dt;
  
!     if (PyType_Ready(&PyDateTime_DateType) < 0)
!         return;
!     if (PyType_Ready(&PyDateTime_DateTimeType) < 0)
!         return;
!     if (PyType_Ready(&PyDateTime_DeltaType) < 0)
!         return;
  
!     /* date values */
!     d = PyDateTime_DateType.tp_dict;
!     dt = new_date(1, 1, 1);
!     if (dt == NULL || PyDict_SetItemString(d, "min", dt) < 0)
!         return;
!     Py_DECREF(dt);
!     dt = new_date(MAXYEAR, 12, 31);
!     if (dt == NULL || PyDict_SetItemString(d, "max", dt) < 0)
!         return;
!     Py_DECREF(dt);
!     dt = new_delta(1, 0, 0);
!     if (dt == NULL || PyDict_SetItemString(d, "resolution", dt) < 0)
!         return;
!     Py_DECREF(dt);
  
!     /* date/time values */
!     d = PyDateTime_DateTimeType.tp_dict;
!     dt = new_datetime(1, 1, 1, 0, 0, 0, 0);
!     if (dt == NULL || PyDict_SetItemString(d, "min", dt) < 0)
!         return;
!     Py_DECREF(dt);
!     dt = new_datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999);
!     if (dt == NULL || PyDict_SetItemString(d, "max", dt) < 0)
!         return;
!     Py_DECREF(dt);
!     dt = new_delta(0, 0, 1);
!     if (dt == NULL || PyDict_SetItemString(d, "resolution", dt) < 0)
!         return;
!     Py_DECREF(dt);
  
!     /* module initialization */
!     m = Py_InitModule3("_datetime", NULL,
!                        "Fast implementation of the datetime type.");
!     PyModule_AddIntConstant(m, "MINYEAR", 1);
!     PyModule_AddIntConstant(m, "MAXYEAR", MAXYEAR);
!     Py_INCREF(&PyDateTime_DateType);
!     PyModule_AddObject(m, "date", (PyObject *) &PyDateTime_DateType);
!     Py_INCREF(&PyDateTime_DateTimeType);
!     PyModule_AddObject(m, "datetime", (PyObject *) &PyDateTime_DateTimeType);
!     Py_INCREF(&PyDateTime_DeltaType);
!     PyModule_AddObject(m, "timedelta", (PyObject *) &PyDateTime_DeltaType);
  }
--- 295,348 ----
  init_datetime(void)
  {
! 	PyObject *m;
! 	PyObject *d, *dt;
  
! 	if (PyType_Ready(&PyDateTime_DateType) < 0)
! 		return;
! 	if (PyType_Ready(&PyDateTime_DateTimeType) < 0)
! 		return;
! 	if (PyType_Ready(&PyDateTime_DeltaType) < 0)
! 		return;
  
! 	/* date values */
! 	d = PyDateTime_DateType.tp_dict;
! 	dt = new_date(1, 1, 1);
! 	if (dt == NULL || PyDict_SetItemString(d, "min", dt) < 0)
! 		return;
! 	Py_DECREF(dt);
! 	dt = new_date(MAXYEAR, 12, 31);
! 	if (dt == NULL || PyDict_SetItemString(d, "max", dt) < 0)
! 		return;
! 	Py_DECREF(dt);
! 	dt = new_delta(1, 0, 0);
! 	if (dt == NULL || PyDict_SetItemString(d, "resolution", dt) < 0)
! 		return;
! 	Py_DECREF(dt);
  
! 	/* date/time values */
! 	d = PyDateTime_DateTimeType.tp_dict;
! 	dt = new_datetime(1, 1, 1, 0, 0, 0, 0);
! 	if (dt == NULL || PyDict_SetItemString(d, "min", dt) < 0)
! 		return;
! 	Py_DECREF(dt);
! 	dt = new_datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999);
! 	if (dt == NULL || PyDict_SetItemString(d, "max", dt) < 0)
! 		return;
! 	Py_DECREF(dt);
! 	dt = new_delta(0, 0, 1);
! 	if (dt == NULL || PyDict_SetItemString(d, "resolution", dt) < 0)
! 		return;
! 	Py_DECREF(dt);
  
! 	/* module initialization */
! 	m = Py_InitModule3("_datetime", NULL,
! 			   "Fast implementation of the datetime type.");
! 	PyModule_AddIntConstant(m, "MINYEAR", 1);
! 	PyModule_AddIntConstant(m, "MAXYEAR", MAXYEAR);
! 	Py_INCREF(&PyDateTime_DateType);
! 	PyModule_AddObject(m, "date", (PyObject *) &PyDateTime_DateType);
! 	Py_INCREF(&PyDateTime_DateTimeType);
! 	PyModule_AddObject(m, "datetime", (PyObject *) &PyDateTime_DateTimeType);
! 	Py_INCREF(&PyDateTime_DeltaType);
! 	PyModule_AddObject(m, "timedelta", (PyObject *) &PyDateTime_DeltaType);
  }