diff Python/getargs.c @ 13378:113d833eea7e legacy-trunk

Added support for H (unsigned short) specifier in PyArg_ParseTuple and Py_BuildValue.
author Jack Jansen <jack.jansen@cwi.nl>
date Thu, 06 Jul 2000 12:22:00 +0000
parents 83377fc298d8
children a89f7f268de4
line wrap: on
line diff
--- a/Python/getargs.c	Thu Jul 06 11:29:01 2000 +0000
+++ b/Python/getargs.c	Thu Jul 06 12:22:00 2000 +0000
@@ -489,6 +489,27 @@
 			break;
 		}
 	
+	case 'H': /* unsigned short int */
+		{
+			unsigned short *p = va_arg(*p_va, unsigned short *);
+			long ival = PyInt_AsLong(arg);
+			if (ival == -1 && PyErr_Occurred())
+				return "integer<H>";
+			else if (ival < 0) {
+				PyErr_SetString(PyExc_OverflowError,
+			      "unsigned short integer is less than minimum");
+				return "integer<H>";
+			}
+			else if (ival > USHRT_MAX) {
+				PyErr_SetString(PyExc_OverflowError,
+			      "unsigned short integer is greater than maximum");
+				return "integer<H>";
+			}
+			else
+				*p = (unsigned short) ival;
+			break;
+		}
+	
 	case 'i': /* signed int */
 		{
 			int *p = va_arg(*p_va, int *);
@@ -509,7 +530,6 @@
 				*p = ival;
 			break;
 		}
-	
 	case 'l': /* long int */
 		{
 			long *p = va_arg(*p_va, long *);
@@ -1207,6 +1227,12 @@
 			break;
 		}
 	
+	case 'H': /* unsigned short int */
+		{
+			(void) va_arg(*p_va, unsigned short *);
+			break;
+		}
+	
 	case 'i': /* int */
 		{
 			(void) va_arg(*p_va, int *);