comparison Python/sysmodule.c @ 79803:d2127cdec10e

Issue #16166: Add PY_LITTLE_ENDIAN and PY_BIG_ENDIAN macros and unified endianess detection and handling.
author Christian Heimes <christian@cheimes.de>
date Wed, 17 Oct 2012 23:52:17 +0200
parents ee01fd98b5b0
children ceb0184c7f44
comparison
equal deleted inserted replaced
79802:943d3e289ab4 79803:d2127cdec10e
1559 1559
1560 PyObject * 1560 PyObject *
1561 _PySys_Init(void) 1561 _PySys_Init(void)
1562 { 1562 {
1563 PyObject *m, *v, *sysdict, *version_info; 1563 PyObject *m, *v, *sysdict, *version_info;
1564 char *s;
1565 1564
1566 m = PyModule_Create(&sysmodule); 1565 m = PyModule_Create(&sysmodule);
1567 if (m == NULL) 1566 if (m == NULL)
1568 return NULL; 1567 return NULL;
1569 sysdict = PyModule_GetDict(m); 1568 sysdict = PyModule_GetDict(m);
1636 get_hash_info()); 1635 get_hash_info());
1637 SET_SYS_FROM_STRING("maxunicode", 1636 SET_SYS_FROM_STRING("maxunicode",
1638 PyLong_FromLong(0x10FFFF)); 1637 PyLong_FromLong(0x10FFFF));
1639 SET_SYS_FROM_STRING("builtin_module_names", 1638 SET_SYS_FROM_STRING("builtin_module_names",
1640 list_builtin_module_names()); 1639 list_builtin_module_names());
1641 { 1640 #if PY_BIG_ENDIAN
1642 /* Assumes that longs are at least 2 bytes long. 1641 SET_SYS_FROM_STRING("byteorder",
1643 Should be safe! */ 1642 PyUnicode_FromString("big"));
1644 unsigned long number = 1; 1643 #else
1645 char *value; 1644 SET_SYS_FROM_STRING("byteorder",
1646 1645 PyUnicode_FromString("little"));
1647 s = (char *) &number; 1646 #endif
1648 if (s[0] == 0) 1647
1649 value = "big";
1650 else
1651 value = "little";
1652 SET_SYS_FROM_STRING("byteorder",
1653 PyUnicode_FromString(value));
1654 }
1655 #ifdef MS_COREDLL 1648 #ifdef MS_COREDLL
1656 SET_SYS_FROM_STRING("dllhandle", 1649 SET_SYS_FROM_STRING("dllhandle",
1657 PyLong_FromVoidPtr(PyWin_DLLhModule)); 1650 PyLong_FromVoidPtr(PyWin_DLLhModule));
1658 SET_SYS_FROM_STRING("winver", 1651 SET_SYS_FROM_STRING("winver",
1659 PyUnicode_FromString(PyWin_DLLVersionString)); 1652 PyUnicode_FromString(PyWin_DLLVersionString));