symbian-qemu-0.9.1-12/python-2.6.1/Modules/future_builtins.c
author Gareth Stockwell <gareth.stockwell@accenture.com>
Wed, 22 Sep 2010 15:40:40 +0100
branchgraphics-phase-3
changeset 111 345f1c88c950
parent 1 2fb8b9db1c86
permissions -rw-r--r--
Fixes to syborg-graphicswrapper.vcproj These changes allow syborg-graphicswrapper to link against the hostthreadadapter and khronosapiwrapper libraries built by the graphics.simulator component. The .vcproj file uses relative paths, which requires that the following three packages are laid out as follows: os/ graphics adapt/ graphics.simulator qemu


/* 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\
hex(arg) -- Returns the hexadecimal representation of an integer\n\
oct(arg) -- Returns the octal representation of an integer\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 hex, oct\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;

	for (cur_func = it_funcs; *cur_func; ++cur_func){
		iter_func = PyObject_GetAttrString(itertools, *cur_func);
		if (iter_func == NULL)
			return;
		PyModule_AddObject(m, *cur_func+1, iter_func);
	}
	Py_DECREF(itertools);
	/* any other initialization needed */
}