本文整理汇总了C++中PyCode_New函数的典型用法代码示例。如果您正苦于以下问题:C++ PyCode_New函数的具体用法?C++ PyCode_New怎么用?C++ PyCode_New使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PyCode_New函数的18个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: CHECK_OBJECT
PyCodeObject *MAKE_CODEOBJ( PyObject *filename, PyObject *function_name, int line, PyObject *argnames, int arg_count, int kw_only_count, int flags )
#endif
{
CHECK_OBJECT( filename );
assert( Nuitka_String_Check( filename ) );
CHECK_OBJECT( function_name );
assert( Nuitka_String_Check( function_name ) );
CHECK_OBJECT( argnames );
assert( PyTuple_Check( argnames ) );
// The PyCode_New has funny code that interns, mutating the tuple that owns
// it. Really serious non-immutable shit. We have triggered that changes
// behind our back in the past.
#ifndef __NUITKA_NO_ASSERT__
Py_hash_t hash = DEEP_HASH( argnames );
#endif
// TODO: Consider using PyCode_NewEmpty
PyCodeObject *result = PyCode_New(
arg_count, // argcount
#if PYTHON_VERSION >= 300
kw_only_count, // kw-only count
#endif
0, // nlocals
0, // stacksize
flags, // flags
#if PYTHON_VERSION < 300
const_str_empty, // code (bytecode)
#else
const_bytes_empty, // code (bytecode)
#endif
const_tuple_empty, // consts (we are not going to be compatible)
const_tuple_empty, // names (we are not going to be compatible)
argnames, // varnames (we are not going to be compatible)
const_tuple_empty, // freevars (we are not going to be compatible)
const_tuple_empty, // cellvars (we are not going to be compatible)
filename, // filename
function_name, // name
line, // firstlineno (offset of the code object)
#if PYTHON_VERSION < 300
const_str_empty // lnotab (table to translate code object)
#else
const_bytes_empty // lnotab (table to translate code object)
#endif
);
assert( DEEP_HASH( argnames ) == hash );
if (unlikely( result == NULL ))
{
return NULL;
}
return result;
}
开发者ID:601040605,项目名称:Nuitka,代码行数:56,代码来源:CompiledFrameType.cpp
示例2: _ctypes_add_traceback
/* after code that pyrex generates */
void _ctypes_add_traceback(char *funcname, char *filename, int lineno)
{
PyObject *py_srcfile = 0;
PyObject *py_funcname = 0;
PyObject *py_globals = 0;
PyObject *empty_tuple = 0;
PyObject *empty_string = 0;
PyCodeObject *py_code = 0;
PyFrameObject *py_frame = 0;
py_srcfile = PyUnicode_DecodeFSDefault(filename);
if (!py_srcfile) goto bad;
py_funcname = PyUnicode_FromString(funcname);
if (!py_funcname) goto bad;
py_globals = PyDict_New();
if (!py_globals) goto bad;
empty_tuple = PyTuple_New(0);
if (!empty_tuple) goto bad;
empty_string = PyBytes_FromString("");
if (!empty_string) goto bad;
py_code = PyCode_New(
0, /*int argcount,*/
0, /*int kwonlyargcount,*/
0, /*int nlocals,*/
0, /*int stacksize,*/
0, /*int flags,*/
empty_string, /*PyObject *code,*/
empty_tuple, /*PyObject *consts,*/
empty_tuple, /*PyObject *names,*/
empty_tuple, /*PyObject *varnames,*/
empty_tuple, /*PyObject *freevars,*/
empty_tuple, /*PyObject *cellvars,*/
py_srcfile, /*PyObject *filename,*/
py_funcname, /*PyObject *name,*/
lineno, /*int firstlineno,*/
empty_string /*PyObject *lnotab*/
);
if (!py_code) goto bad;
py_frame = PyFrame_New(
PyThreadState_Get(), /*PyThreadState *tstate,*/
py_code, /*PyCodeObject *code,*/
py_globals, /*PyObject *globals,*/
0 /*PyObject *locals*/
);
if (!py_frame) goto bad;
py_frame->f_lineno = lineno;
PyTraceBack_Here(py_frame);
bad:
Py_XDECREF(py_globals);
Py_XDECREF(py_srcfile);
Py_XDECREF(py_funcname);
Py_XDECREF(empty_tuple);
Py_XDECREF(empty_string);
Py_XDECREF(py_code);
Py_XDECREF(py_frame);
}
开发者ID:Kanma,项目名称:Athena-Dependencies-Python,代码行数:57,代码来源:callbacks.c
示例3: code_new
static PyObject *
code_new(PyTypeObject *type, PyObject *args, PyObject *kw)
{
int argcount;
int nlocals;
int stacksize;
int flags;
PyObject *code;
PyObject *consts;
PyObject *names;
PyObject *varnames;
PyObject *freevars = NULL;
PyObject *cellvars = NULL;
PyObject *filename;
PyObject *name;
int firstlineno;
PyObject *lnotab;
if (!PyArg_ParseTuple(args, "iiiiSO!O!O!SSiS|O!O!:code",
&argcount, &nlocals, &stacksize, &flags,
&code,
&PyTuple_Type, &consts,
&PyTuple_Type, &names,
&PyTuple_Type, &varnames,
&filename, &name,
&firstlineno, &lnotab,
&PyTuple_Type, &freevars,
&PyTuple_Type, &cellvars))
return NULL;
if (freevars == NULL || cellvars == NULL) {
PyObject *empty = PyTuple_New(0);
if (empty == NULL)
return NULL;
if (freevars == NULL) {
freevars = empty;
Py_INCREF(freevars);
}
if (cellvars == NULL) {
cellvars = empty;
Py_INCREF(cellvars);
}
Py_DECREF(empty);
}
if (!PyObject_CheckReadBuffer(code)) {
PyErr_SetString(PyExc_TypeError,
"bytecode object must be a single-segment read-only buffer");
return NULL;
}
return (PyObject *)PyCode_New(argcount, nlocals, stacksize, flags,
code, consts, names, varnames,
freevars, cellvars, filename, name,
firstlineno, lnotab);
}
开发者ID:Oxyd76,项目名称:cleese,代码行数:56,代码来源:compile.c
示例4: __Pyx_AddTraceback
static void __Pyx_AddTraceback(char *funcname) {
PyObject *py_srcfile = 0;
PyObject *py_funcname = 0;
PyObject *py_globals = 0;
PyObject *empty_tuple = 0;
PyObject *empty_string = 0;
PyCodeObject *py_code = 0;
PyFrameObject *py_frame = 0;
py_srcfile = PyString_FromString(__pyx_filename);
if (!py_srcfile) goto bad;
py_funcname = PyString_FromString(funcname);
if (!py_funcname) goto bad;
py_globals = PyModule_GetDict(__pyx_m);
if (!py_globals) goto bad;
empty_tuple = PyTuple_New(0);
if (!empty_tuple) goto bad;
empty_string = PyString_FromString("");
if (!empty_string) goto bad;
py_code = PyCode_New(
0, /*int argcount,*/
0, /*int nlocals,*/
0, /*int stacksize,*/
0, /*int flags,*/
empty_string, /*PyObject *code,*/
empty_tuple, /*PyObject *consts,*/
empty_tuple, /*PyObject *names,*/
empty_tuple, /*PyObject *varnames,*/
empty_tuple, /*PyObject *freevars,*/
empty_tuple, /*PyObject *cellvars,*/
py_srcfile, /*PyObject *filename,*/
py_funcname, /*PyObject *name,*/
__pyx_lineno, /*int firstlineno,*/
empty_string /*PyObject *lnotab*/
);
if (!py_code) goto bad;
py_frame = PyFrame_New(
PyThreadState_Get(), /*PyThreadState *tstate,*/
py_code, /*PyCodeObject *code,*/
py_globals, /*PyObject *globals,*/
0 /*PyObject *locals*/
);
if (!py_frame) goto bad;
py_frame->f_lineno = __pyx_lineno;
PyTraceBack_Here(py_frame);
bad:
Py_XDECREF(py_srcfile);
Py_XDECREF(py_funcname);
Py_XDECREF(empty_tuple);
Py_XDECREF(empty_string);
Py_XDECREF(py_code);
Py_XDECREF(py_frame);
}
开发者ID:jwilk,项目名称:Pyrex,代码行数:53,代码来源:excbug.c
示例5: m_valid
dummy_python_frame::dummy_python_frame ()
: m_valid (false),
m_saved_frame (NULL),
m_tstate (NULL)
{
PyCodeObject *code;
PyFrameObject *frame;
gdbpy_ref<> empty_string (PyString_FromString (""));
if (empty_string == NULL)
return;
gdbpy_ref<> null_tuple (PyTuple_New (0));
if (null_tuple == NULL)
return;
code = PyCode_New (0, /* argcount */
0, /* locals */
0, /* stacksize */
0, /* flags */
empty_string.get (), /* code */
null_tuple.get (), /* consts */
null_tuple.get (), /* names */
null_tuple.get (), /* varnames */
#if PYTHON_API_VERSION >= 1010
null_tuple.get (), /* freevars */
null_tuple.get (), /* cellvars */
#endif
empty_string.get (), /* filename */
empty_string.get (), /* name */
1, /* firstlineno */
empty_string.get () /* lnotab */
);
if (code == NULL)
return;
gdbpy_ref<> code_holder ((PyObject *) code);
gdbpy_ref<> globals (PyDict_New ());
if (globals == NULL)
return;
m_tstate = PyThreadState_GET ();
frame = PyFrame_New (m_tstate, code, globals.get (), NULL);
if (frame == NULL)
return;
m_frame.reset ((PyObject *) frame);
m_tstate->frame = frame;
m_saved_frame = frame->f_back;
m_valid = true;
}
开发者ID:simark,项目名称:binutils-gdb,代码行数:51,代码来源:py-prettyprint.c
示例6: PyCode_NewEmpty
PyCodeObject *
PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno)
{
static PyObject *emptystring = NULL;
static PyObject *nulltuple = NULL;
PyObject *filename_ob = NULL;
PyObject *funcname_ob = NULL;
PyCodeObject *result = NULL;
if (emptystring == NULL) {
emptystring = PyBytes_FromString("");
if (emptystring == NULL)
goto failed;
}
if (nulltuple == NULL) {
nulltuple = PyTuple_New(0);
if (nulltuple == NULL)
goto failed;
}
funcname_ob = PyUnicode_FromString(funcname);
if (funcname_ob == NULL)
goto failed;
filename_ob = PyUnicode_DecodeFSDefault(filename);
if (filename_ob == NULL)
goto failed;
result = PyCode_New(0, /* argcount */
0, /* kwonlyargcount */
0, /* nlocals */
0, /* stacksize */
0, /* flags */
emptystring, /* code */
nulltuple, /* consts */
nulltuple, /* names */
nulltuple, /* varnames */
nulltuple, /* freevars */
nulltuple, /* cellvars */
filename_ob, /* filename */
funcname_ob, /* name */
firstlineno, /* firstlineno */
emptystring /* lnotab */
);
failed:
Py_XDECREF(funcname_ob);
Py_XDECREF(filename_ob);
return result;
}
开发者ID:TruckHacking,项目名称:J1939Python,代码行数:47,代码来源:codeobject.c
示例7: PyCode_NewEmpty
extern "C" PyCodeObject* PyCode_NewEmpty(const char* filename, const char* funcname, int firstlineno) noexcept {
static PyObject* emptystring = NULL;
static PyObject* nulltuple = NULL;
PyObject* filename_ob = NULL;
PyObject* funcname_ob = NULL;
PyCodeObject* result = NULL;
if (emptystring == NULL) {
emptystring = PyGC_RegisterStaticConstant(PyString_FromString(""));
if (emptystring == NULL)
goto failed;
}
if (nulltuple == NULL) {
nulltuple = PyGC_RegisterStaticConstant(PyTuple_New(0));
if (nulltuple == NULL)
goto failed;
}
funcname_ob = PyString_FromString(funcname);
if (funcname_ob == NULL)
goto failed;
filename_ob = PyString_FromString(filename);
if (filename_ob == NULL)
goto failed;
result = PyCode_New(0, /* argcount */
0, /* nlocals */
0, /* stacksize */
0, /* flags */
emptystring, /* code */
nulltuple, /* consts */
nulltuple, /* names */
nulltuple, /* varnames */
nulltuple, /* freevars */
nulltuple, /* cellvars */
filename_ob, /* filename */
funcname_ob, /* name */
firstlineno, /* firstlineno */
emptystring /* lnotab */
);
failed:
Py_XDECREF(funcname_ob);
Py_XDECREF(filename_ob);
return result;
}
开发者ID:Daetalus,项目名称:pyston,代码行数:44,代码来源:code.cpp
示例8: create_empty_code
static PyCodeObject* create_empty_code(void) {
PyObject* py_srcfile = PyString_FromString(__FILE__);
PyObject* py_funcname = PyString_FromString("compose");
PyObject* empty_string = PyString_FromString("");
PyObject* empty_tuple = PyTuple_New(0);
PyCodeObject* code = PyCode_New(
0, 0, 1, 0, // stacksize is 1
empty_string,
empty_tuple,
empty_tuple,
empty_tuple,
empty_tuple,
empty_tuple,
py_srcfile,
py_funcname,
__LINE__,
empty_string);
return code;
}
开发者ID:blep,项目名称:weightless-core,代码行数:19,代码来源:_compose.c
示例9: new_code
static PyObject *
new_code(PyObject* unused, PyObject* args)
{
int argcount;
int nlocals;
int stacksize;
int flags;
PyObject* code;
PyObject* consts;
PyObject* names;
PyObject* varnames;
PyObject* filename;
PyObject* name;
int firstlineno;
PyObject* lnotab;
PyBufferProcs *pb;
if (!PyArg_ParseTuple(args, "iiiiOO!O!O!SSiS:code",
&argcount, &nlocals, &stacksize, &flags,
&code,
&PyTuple_Type, &consts,
&PyTuple_Type, &names,
&PyTuple_Type, &varnames,
&filename, &name,
&firstlineno, &lnotab))
return NULL;
pb = code->ob_type->tp_as_buffer;
if (pb == NULL ||
pb->bf_getreadbuffer == NULL ||
pb->bf_getsegcount == NULL ||
(*pb->bf_getsegcount)(code, NULL) != 1)
{
PyErr_SetString(PyExc_TypeError,
"bytecode object must be a single-segment read-only buffer");
return NULL;
}
return (PyObject *)PyCode_New(argcount, nlocals, stacksize, flags,
code, consts, names, varnames,
filename, name, firstlineno, lnotab);
}
开发者ID:Claruarius,项目名称:stblinux-2.6.37,代码行数:42,代码来源:newmodule.c
示例10: PyString_FromString
static PyCodeObject *__Pyx_createFrameCodeObject(const char *funcname, const char *srcfile, int firstlineno) {
PyObject *py_srcfile = 0;
PyObject *py_funcname = 0;
PyCodeObject *py_code = 0;
#if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromString(funcname);
py_srcfile = PyString_FromString(srcfile);
#else
py_funcname = PyUnicode_FromString(funcname);
py_srcfile = PyUnicode_FromString(srcfile);
#endif
if (!py_funcname | !py_srcfile) goto bad;
py_code = PyCode_New(
0, /*int argcount,*/
#if PY_MAJOR_VERSION >= 3
0, /*int kwonlyargcount,*/
#endif
0, /*int nlocals,*/
0, /*int stacksize,*/
0, /*int flags,*/
$empty_bytes, /*PyObject *code,*/
$empty_tuple, /*PyObject *consts,*/
$empty_tuple, /*PyObject *names,*/
$empty_tuple, /*PyObject *varnames,*/
$empty_tuple, /*PyObject *freevars,*/
$empty_tuple, /*PyObject *cellvars,*/
py_srcfile, /*PyObject *filename,*/
py_funcname, /*PyObject *name,*/
firstlineno, /*int firstlineno,*/
$empty_bytes /*PyObject *lnotab*/
);
bad:
Py_XDECREF(py_srcfile);
Py_XDECREF(py_funcname);
return py_code;
}
开发者ID:13steinj,项目名称:cython,代码行数:40,代码来源:Profile.c
示例11: PyString_FromString
static PyCodeObject *__Pyx_DummyCode(char *funcname) {
PyObject *py_srcfile = 0;
PyObject *py_funcname = 0;
PyObject *empty_tuple = 0;
PyObject *empty_string = 0;
PyCodeObject *py_code;
py_srcfile = PyString_FromString(__pyx_filename);
if (!py_srcfile) goto bad;
py_funcname = PyString_FromString(funcname);
if (!py_funcname) goto bad;
empty_tuple = PyTuple_New(0);
if (!empty_tuple) goto bad;
empty_string = PyString_FromString("");
if (!empty_string) goto bad;
py_code = PyCode_New(
0, /*int argcount,*/
0, /*int nlocals,*/
0, /*int stacksize,*/
0, /*int flags,*/
empty_string, /*PyObject *code,*/
empty_tuple, /*PyObject *consts,*/
empty_tuple, /*PyObject *names,*/
empty_tuple, /*PyObject *varnames,*/
empty_tuple, /*PyObject *freevars,*/
empty_tuple, /*PyObject *cellvars,*/
py_srcfile, /*PyObject *filename,*/
py_funcname, /*PyObject *name,*/
__pyx_lineno, /*int firstlineno,*/
empty_string /*PyObject *lnotab*/
);
bad:
Py_XDECREF(py_srcfile);
Py_XDECREF(py_funcname);
Py_XDECREF(empty_tuple);
Py_XDECREF(empty_string);
return py_code;
}
开发者ID:jwilk,项目名称:Pyrex,代码行数:38,代码来源:excbug_new_traceback.c
示例12: __Pyx_AddTraceback
static void __Pyx_AddTraceback(const char *funcname, int __pyx_clineno,
int __pyx_lineno, const char *__pyx_filename) {
PyObject *py_srcfile = 0;
PyObject *py_funcname = 0;
PyObject *py_globals = 0;
PyCodeObject *py_code = 0;
PyFrameObject *py_frame = 0;
#if PY_MAJOR_VERSION < 3
py_srcfile = PyString_FromString(__pyx_filename);
#else
py_srcfile = PyUnicode_FromString(__pyx_filename);
#endif
if (!py_srcfile) goto bad;
if (__pyx_clineno) {
#if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
#else
py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
#endif
}
else {
#if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromString(funcname);
#else
py_funcname = PyUnicode_FromString(funcname);
#endif
}
if (!py_funcname) goto bad;
py_globals = PyModule_GetDict(__pyx_m);
if (!py_globals) goto bad;
py_code = PyCode_New(
0, /*int argcount,*/
#if PY_MAJOR_VERSION >= 3
0, /*int kwonlyargcount,*/
#endif
0, /*int nlocals,*/
0, /*int stacksize,*/
0, /*int flags,*/
__pyx_empty_bytes, /*PyObject *code,*/
__pyx_empty_tuple, /*PyObject *consts,*/
__pyx_empty_tuple, /*PyObject *names,*/
__pyx_empty_tuple, /*PyObject *varnames,*/
__pyx_empty_tuple, /*PyObject *freevars,*/
__pyx_empty_tuple, /*PyObject *cellvars,*/
py_srcfile, /*PyObject *filename,*/
py_funcname, /*PyObject *name,*/
__pyx_lineno, /*int firstlineno,*/
__pyx_empty_bytes /*PyObject *lnotab*/
);
if (!py_code) goto bad;
py_frame = PyFrame_New(
PyThreadState_GET(), /*PyThreadState *tstate,*/
py_code, /*PyCodeObject *code,*/
py_globals, /*PyObject *globals,*/
0 /*PyObject *locals*/
);
if (!py_frame) goto bad;
py_frame->f_lineno = __pyx_lineno;
PyTraceBack_Here(py_frame);
bad:
Py_XDECREF(py_srcfile);
Py_XDECREF(py_funcname);
Py_XDECREF(py_code);
Py_XDECREF(py_frame);
}
开发者ID:v1j4y,项目名称:irpf90,代码行数:66,代码来源:version.c
示例13: code_new
static PyObject *
code_new(PyTypeObject *type, PyObject *args, PyObject *kw)
{
int argcount;
int kwonlyargcount;
int nlocals;
int stacksize;
int flags;
PyObject *co = NULL;
PyObject *code;
PyObject *consts;
PyObject *names, *ournames = NULL;
PyObject *varnames, *ourvarnames = NULL;
PyObject *freevars = NULL, *ourfreevars = NULL;
PyObject *cellvars = NULL, *ourcellvars = NULL;
PyObject *filename;
PyObject *name;
int firstlineno;
PyObject *lnotab;
if (!PyArg_ParseTuple(args, "iiiiiSO!O!O!UUiS|O!O!:code",
&argcount, &kwonlyargcount,
&nlocals, &stacksize, &flags,
&code,
&PyTuple_Type, &consts,
&PyTuple_Type, &names,
&PyTuple_Type, &varnames,
&filename, &name,
&firstlineno, &lnotab,
&PyTuple_Type, &freevars,
&PyTuple_Type, &cellvars))
return NULL;
if (argcount < 0) {
PyErr_SetString(
PyExc_ValueError,
"code: argcount must not be negative");
goto cleanup;
}
if (kwonlyargcount < 0) {
PyErr_SetString(
PyExc_ValueError,
"code: kwonlyargcount must not be negative");
goto cleanup;
}
if (nlocals < 0) {
PyErr_SetString(
PyExc_ValueError,
"code: nlocals must not be negative");
goto cleanup;
}
ournames = validate_and_copy_tuple(names);
if (ournames == NULL)
goto cleanup;
ourvarnames = validate_and_copy_tuple(varnames);
if (ourvarnames == NULL)
goto cleanup;
if (freevars)
ourfreevars = validate_and_copy_tuple(freevars);
else
ourfreevars = PyTuple_New(0);
if (ourfreevars == NULL)
goto cleanup;
if (cellvars)
ourcellvars = validate_and_copy_tuple(cellvars);
else
ourcellvars = PyTuple_New(0);
if (ourcellvars == NULL)
goto cleanup;
co = (PyObject *)PyCode_New(argcount, kwonlyargcount,
nlocals, stacksize, flags,
code, consts, ournames, ourvarnames,
ourfreevars, ourcellvars, filename,
name, firstlineno, lnotab);
cleanup:
Py_XDECREF(ournames);
Py_XDECREF(ourvarnames);
Py_XDECREF(ourfreevars);
Py_XDECREF(ourcellvars);
return co;
}
开发者ID:TruckHacking,项目名称:J1939Python,代码行数:84,代码来源:codeobject.c
示例14: add_frame
void
add_frame(const char* srcfile, const char* funcname, int linenum)
{
PyObject* src = NULL;
PyObject* func = NULL;
PyObject* glbl = NULL;
PyObject* tpl = NULL;
PyObject* str = NULL;
PyCodeObject* code = NULL;
PyFrameObject* frame = NULL;
src = PyString_FromString(srcfile);
if(src == NULL) goto error;
func = PyString_FromString(funcname);
if(func == NULL) goto error;
glbl = PyModule_GetDict(SpidermonkeyModule);
if(glbl == NULL) goto error;
tpl = PyTuple_New(0);
if(tpl == NULL) goto error;
str = PyString_FromString("");
if(str == NULL) goto error;
code = PyCode_New(
0, /*co_argcount*/
0, /*co_nlocals*/
0, /*co_stacksize*/
0, /*co_flags*/
str, /*co_code*/
tpl, /*co_consts*/
tpl, /*co_names*/
tpl, /*co_varnames*/
tpl, /*co_freevars*/
tpl, /*co_cellvars*/
src, /*co_filename*/
func, /*co_name*/
linenum, /*co_firstlineno*/
str /*co_lnotab*/
);
if(code == NULL) goto error;
frame = PyFrame_New(PyThreadState_Get(), code, glbl, NULL);
if(frame == NULL) goto error;
frame->f_lineno = linenum;
PyTraceBack_Here(frame);
goto success;
error:
success:
Py_XDECREF(func);
Py_XDECREF(src);
Py_XDECREF(tpl);
Py_XDECREF(str);
Py_XDECREF(code);
Py_XDECREF(frame);
}
开发者ID:FromPointer,项目名称:python-spidermonkey,代码行数:61,代码来源:error.c
示例15: push_dummy_python_frame
/* Create a dummy PyFrameObject, needed to work around
a Python-2.4 bug with generators. */
static PyObject *
push_dummy_python_frame (void)
{
PyObject *empty_string, *null_tuple, *globals;
PyCodeObject *code;
PyFrameObject *frame;
PyThreadState *tstate;
empty_string = PyString_FromString ("");
if (!empty_string)
return NULL;
null_tuple = PyTuple_New (0);
if (!null_tuple)
{
Py_DECREF (empty_string);
return NULL;
}
code = PyCode_New (0, /* argcount */
0, /* nlocals */
0, /* stacksize */
0, /* flags */
empty_string, /* code */
null_tuple, /* consts */
null_tuple, /* names */
null_tuple, /* varnames */
#if PYTHON_API_VERSION >= 1010
null_tuple, /* freevars */
null_tuple, /* cellvars */
#endif
empty_string, /* filename */
empty_string, /* name */
1, /* firstlineno */
empty_string /* lnotab */
);
Py_DECREF (empty_string);
Py_DECREF (null_tuple);
if (!code)
return NULL;
globals = PyDict_New ();
if (!globals)
{
Py_DECREF (code);
return NULL;
}
tstate = PyThreadState_GET ();
frame = PyFrame_New (tstate, code, globals, NULL);
Py_DECREF (globals);
Py_DECREF (code);
if (!frame)
return NULL;
tstate->frame = frame;
make_cleanup (py_restore_tstate, frame->f_back);
return (PyObject *) frame;
}
开发者ID:krichter722,项目名称:binutils-gdb,代码行数:66,代码来源:py-prettyprint.c
示例16: __Pyx_ParseOptionalKeywords
//.........这里部分代码省略.........
}
}
return 0;
arg_passed_twice:
__Pyx_RaiseDoubleKeywordsError(function_name, **name);
goto bad;
invalid_keyword_type:
PyErr_Format(PyExc_TypeError,
"%s() keywords must be strings", function_name);
goto bad;
invalid_keyword:
PyErr_Format(PyExc_TypeError,
#if PY_MAJOR_VERSION < 3
"%s() got an unexpected keyword argument '%s'",
function_name, PyString_AsString(key));
#else
"%s() got an unexpected keyword argument '%U'",
function_name, key);
#endif
bad:
return -1;
}
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static void __Pyx_AddTraceback(const char *funcname) {
PyObject *py_srcfile = 0;
PyObject *py_funcname = 0;
PyObject *py_globals = 0;
PyObject *empty_string = 0;
PyCodeObject *py_code = 0;
PyFrameObject *py_frame = 0;
#if PY_MAJOR_VERSION < 3
py_srcfile = PyString_FromString(__pyx_filename);
#else
py_srcfile = PyUnicode_FromString(__pyx_filename);
#endif
if (!py_srcfile) goto bad;
if (__pyx_clineno) {
#if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
#else
py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
#endif
}
else {
#if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromString(funcname);
#else
py_funcname = PyUnicode_FromString(funcname);
#endif
}
if (!py_funcname) goto bad;
py_globals = PyModule_GetDict(__pyx_m);
if (!py_globals) goto bad;
#if PY_MAJOR_VERSION < 3
empty_string = PyString_FromStringAndSize("", 0);
#else
empty_string = PyBytes_FromStringAndSize("", 0);
#endif
if (!empty_string) goto bad;
py_code = PyCode_New(
0, /*int argcount,*/
#if PY_MAJOR_VERSION >= 3
0, /*int kwonlyargcount,*/
#endif
0, /*int nlocals,*/
0, /*int stacksize,*/
0, /*int flags,*/
empty_string, /*PyObject *code,*/
__pyx_empty_tuple, /*PyObject *consts,*/
__pyx_empty_tuple, /*PyObject *names,*/
__pyx_empty_tuple, /*PyObject *varnames,*/
__pyx_empty_tuple, /*PyObject *freevars,*/
__pyx_empty_tuple, /*PyObject *cellvars,*/
py_srcfile, /*PyObject *filename,*/
py_funcname, /*PyObject *name,*/
__pyx_lineno, /*int firstlineno,*/
empty_string /*PyObject *lnotab*/
);
if (!py_code) goto bad;
py_frame = PyFrame_New(
PyThreadState_GET(), /*PyThreadState *tstate,*/
py_code, /*PyCodeObject *code,*/
py_globals, /*PyObject *globals,*/
0 /*PyObject *locals*/
);
if (!py_frame) goto bad;
py_frame->f_lineno = __pyx_lineno;
PyTraceBack_Here(py_frame);
bad:
Py_XDECREF(py_srcfile);
Py_XDECREF(py_funcname);
Py_XDECREF(empty_string);
Py_XDECREF(py_code);
Py_XDECREF(py_frame);
}
开发者ID:liguow,项目名称:everseq,代码行数:101,代码来源:_core.c
示例17: Py_BuildValue
/* Add a dummy frame to the traceback so the developer has a better idea of what C code was doing
@param filename: Use __FILE__ for this - it will be the filename reported in the frame
@param lineno: Use __LINE__ for this - it will be the line number reported in the frame
@param functionname: Name of the function reported
@param localsformat: Format string for Py_BuildValue( that must specify a dictionary or NULL to make
an empty dictionary. An example is "{s:i, s: s}" with the varargs then conforming
to this format (the corresponding params could be "seven", 7, "foo", "bar"
*/
static void AddTraceBackHere(const char *filename, int lineno, const char *functionname, const char *localsformat, ...)
{
PyObject *srcfile=0, *funcname=0, *empty_dict=0, *empty_tuple=0, *empty_string=0, *localargs=0, *empty_code=0;
PyCodeObject *code=0;
PyFrameObject *frame=0;
va_list localargsva;
va_start(localargsva, localsformat);
assert(PyErr_Occurred());
#if PY_VERSION_HEX<0x03000000
srcfile=PyString_FromString(filename);
funcname=PyString_FromString(functionname);
#else
srcfile=PyUnicode_FromString(filename);
funcname=PyUnicode_FromString(functionname);
#endif
empty_dict=PyDict_New();
empty_tuple=PyTuple_New(0);
#if PY_VERSION_HEX<0x03000000
empty_string=PyString_FromString("");
empty_code=PyString_FromString("");
#else
empty_string=PyUnicode_FromString("");
empty_code=PyBytes_FromStringAndSize(NULL,0);
#endif
localargs=localsformat?(Py_VaBuildValue((char *)localsformat, localargsva)):PyDict_New();
if(localsformat)
assert(localsformat[0]=='{');
if(localargs)
assert(PyDict_Check(localargs));
/* did any fail? */
if (!srcfile || !funcname || !empty_dict || !empty_tuple || !empty_string)
goto end;
/* make the dummy code object */
code = PyCode_New(
0, /*int argcount,*/
#if PY_VERSION_HEX >= 0x03000000
0, /*int kwonlyargcount*/
#endif
0, /*int nlocals,*/
0, /*int stacksize,*/
0, /*int flags,*/
empty_code, /*PyObject *code,*/
empty_tuple, /*PyObject *consts,*/
empty_tuple, /*PyObject *names,*/
empty_tuple, /*PyObject *varnames,*/
empty_tuple, /*PyObject *freevars,*/
empty_tuple, /*PyObject *cellvars,*/
srcfile, /*PyObject *filename,*/
funcname, /*PyObject *name,*/
lineno, /*int firstlineno,*/
empty_code /*PyObject *lnotab*/
);
if (!code) goto end;
/* make the dummy frame */
frame=PyFrame_New(
PyThreadState_Get(), /*PyThreadState *tstate,*/
code, /*PyCodeObject *code,*/
empty_dict, /*PyObject *globals,*/
localargs /*PyObject *locals*/
);
if(!frame) goto end;
/* add dummy frame to traceback */
frame->f_lineno=lineno;
PyTraceBack_Here(frame);
/* this epilogue deals with success or failure cases */
end:
va_end(localargsva);
Py_XDECREF(localargs);
Py_XDECREF(srcfile);
Py_XDECREF(funcname);
Py_XDECREF(empty_dict);
Py_XDECREF(empty_tuple);
Py_XDECREF(empty_string);
Py_XDECREF(empty_code);
Py_XDECREF(code);
Py_XDECREF(frame);
}
开发者ID:Defman21,项目名称:KomodoEdit,代码行数:96,代码来源:traceback.c
示例18: __Pyx_ParseOptionalKeywords
//.........这里部分代码省略.........
if (likely(PyInt_Check(x))) {
long val = PyInt_AS_LONG(x);
if (is_unsigned && unlikely(val < 0)) {
PyErr_SetString(PyExc_OverflowError,
"can't convert negative value to signed PY_LONG_LONG");
return (signed PY_LONG_LONG)-1;
}
return (signed PY_LONG_LONG)val;
} else
#endif
if (likely(PyLong_Check(x))) {
if (is_unsigned) {
if (unlikely(Py_SIZE(x) < 0)) {
PyErr_SetString(PyExc_OverflowError,
"can't convert negative value to signed PY_LONG_LONG");
return (signed PY_LONG_LONG)-1;
}
return PyLong_AsUnsignedLongLong(x);
} else {
return PyLong_AsLongLong(x);
}
} else {
signed PY_LONG_LONG val;
PyObject *tmp = __Pyx_PyNumber_Int(x);
if (!tmp) return (signed PY_LONG_LONG)-1;
val = __Pyx_PyInt_AsSignedLongLong(tmp);
Py_DECREF(tmp);
return val;
}
}
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static void __Pyx_AddTraceback(const char *funcname) {
PyObject *py_srcfile = 0;
PyObject *py_funcname = 0;
PyObject *py_globals = 0;
PyCodeObject *py_code = 0;
PyFrameObject *py_frame = 0;
#if PY_MAJOR_VERSION < 3
py_srcfile = PyString_FromString(__pyx_filename);
#else
py_srcfile = PyUnicode_FromString(__pyx_filename);
#endif
if (!py_srcfile) goto bad;
if (__pyx_clineno) {
#if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
#else
py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
#endif
}
else {
#if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromString(funcname);
#else
py_funcname = PyUnicode_FromString(funcname);
#endif
}
if (!py_funcname) goto bad;
py_globals = PyModule_GetDict(__pyx_m);
if (!py_globals) goto bad;
py_code = PyCode_New(
0, /*int argcount,*/
#if PY_MAJOR_VERSION >= 3
0, /*int kwonlyargcount,*/
#endif
0, /*int nlocals,*/
0, /*int stacksize,*/
0, /*int flags,*/
__pyx_empty_bytes, /*PyObject *code,*/
__pyx_empty_tuple, /*PyObject *consts,*/
__pyx_empty_tuple, /*PyObject *names,*/
__pyx_empty_tuple, /*PyObject *varnames,*/
__pyx_empty_tuple, /*PyObject *freevars,*/
__pyx_empty_tuple, /*PyObject *cellvars,*/
py_srcfile, /*PyObject *filename,*/
py_funcname, /*PyObject *name,*/
__pyx_lineno, /*int firstlineno,*/
__pyx_empty_bytes /*PyObject *lnotab*/
);
if (!py_code) goto bad;
py_frame = PyFrame_New(
PyThreadState_GET(), /*PyThreadState *tstate,*/
py_code, /*PyCodeObject *code,*/
py_globals, /*PyObject *globals,*/
0 /*PyObject *locals*/
);
if (!py_frame) goto bad;
py_frame->f_lineno = __pyx_lineno;
PyTraceBack_Here(py_frame);
bad:
Py_XDECREF(py_srcfile);
Py_XDECREF(py_funcname);
Py_XDECREF(py_code);
Py_XDECREF(py_frame);
}
开发者ID:abhin4v,项目名称:fb-puzzles,代码行数:101,代码来源:levenshtein.c
注:本文中的PyCode_New函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论