From 7eb75bccb5dacb658c63db1a9a980950c3d54d42 Mon Sep 17 00:00:00 2001 From: Daryl McDaniel Date: Sat, 7 Nov 2015 19:25:02 +0000 Subject: AppPkg/Applications/Python/Python-2.7.10: Initial Checkin part 2/5. The Modules directory from the cPython 2.7.10 distribution. These files are unchanged and set the baseline for subsequent commits. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Daryl McDaniel git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18738 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Python/Python-2.7.10/Modules/future_builtins.c | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 AppPkg/Applications/Python/Python-2.7.10/Modules/future_builtins.c (limited to 'AppPkg/Applications/Python/Python-2.7.10/Modules/future_builtins.c') diff --git a/AppPkg/Applications/Python/Python-2.7.10/Modules/future_builtins.c b/AppPkg/Applications/Python/Python-2.7.10/Modules/future_builtins.c new file mode 100644 index 0000000000..47696d51cd --- /dev/null +++ b/AppPkg/Applications/Python/Python-2.7.10/Modules/future_builtins.c @@ -0,0 +1,105 @@ + +/* future_builtins module */ + +/* This module provides functions that will be builtins in Python 3.0, + but that conflict with builtins that already exist in Python + 2.x. */ + + +#include "Python.h" + +PyDoc_STRVAR(module_doc, +"This module provides functions that will be builtins in Python 3.0,\n\ +but that conflict with builtins that already exist in Python 2.x.\n\ +\n\ +Functions:\n\ +\n\ +ascii(arg) -- Returns the canonical string representation of an object.\n\ +filter(pred, iterable) -- Returns an iterator yielding those items of \n\ + iterable for which pred(item) is true.\n\ +hex(arg) -- Returns the hexadecimal representation of an integer.\n\ +map(func, *iterables) -- Returns an iterator that computes the function \n\ + using arguments from each of the iterables.\n\ +oct(arg) -- Returns the octal representation of an integer.\n\ +zip(iter1 [,iter2 [...]]) -- Returns a zip object whose .next() method \n\ + returns a tuple where the i-th element comes from the i-th iterable \n\ + argument.\n\ +\n\ +The typical usage of this module is to replace existing builtins in a\n\ +module's namespace:\n \n\ +from future_builtins import ascii, filter, map, hex, oct, zip\n"); + +static PyObject * +builtin_hex(PyObject *self, PyObject *v) +{ + return PyNumber_ToBase(v, 16); +} + +PyDoc_STRVAR(hex_doc, +"hex(number) -> string\n\ +\n\ +Return the hexadecimal representation of an integer or long integer."); + + +static PyObject * +builtin_oct(PyObject *self, PyObject *v) +{ + return PyNumber_ToBase(v, 8); +} + +PyDoc_STRVAR(oct_doc, +"oct(number) -> string\n\ +\n\ +Return the octal representation of an integer or long integer."); + + +static PyObject * +builtin_ascii(PyObject *self, PyObject *v) +{ + return PyObject_Repr(v); +} + +PyDoc_STRVAR(ascii_doc, +"ascii(object) -> string\n\ +\n\ +Return the same as repr(). In Python 3.x, the repr() result will\n\ +contain printable characters unescaped, while the ascii() result\n\ +will have such characters backslash-escaped."); + +/* List of functions exported by this module */ + +static PyMethodDef module_functions[] = { + {"hex", builtin_hex, METH_O, hex_doc}, + {"oct", builtin_oct, METH_O, oct_doc}, + {"ascii", builtin_ascii, METH_O, ascii_doc}, + {NULL, NULL} /* Sentinel */ +}; + + +/* Initialize this module. */ + +PyMODINIT_FUNC +initfuture_builtins(void) +{ + PyObject *m, *itertools, *iter_func; + char *it_funcs[] = {"imap", "ifilter", "izip", NULL}; + char **cur_func; + + m = Py_InitModule3("future_builtins", module_functions, module_doc); + if (m == NULL) + return; + + itertools = PyImport_ImportModuleNoBlock("itertools"); + if (itertools == NULL) + return; + + /* If anything in the following loop fails, we fall through. */ + for (cur_func = it_funcs; *cur_func; ++cur_func){ + iter_func = PyObject_GetAttrString(itertools, *cur_func); + if (iter_func == NULL || + PyModule_AddObject(m, *cur_func+1, iter_func) < 0) + break; + } + Py_DECREF(itertools); + /* any other initialization needed */ +} -- cgit v1.2.3