17db96d56Sopenharmony_ci/* Frame object interface */ 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ci#ifndef Py_CPYTHON_FRAMEOBJECT_H 47db96d56Sopenharmony_ci# error "this header file must not be included directly" 57db96d56Sopenharmony_ci#endif 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ci/* Standard object interface */ 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ciPyAPI_FUNC(PyFrameObject *) PyFrame_New(PyThreadState *, PyCodeObject *, 107db96d56Sopenharmony_ci PyObject *, PyObject *); 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci/* The rest of the interface is specific for frame objects */ 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ci/* Conversions between "fast locals" and locals in dictionary */ 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ciPyAPI_FUNC(void) PyFrame_LocalsToFast(PyFrameObject *, int); 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ci/* -- Caveat emptor -- 197db96d56Sopenharmony_ci * The concept of entry frames is an implementation detail of the CPython 207db96d56Sopenharmony_ci * interpreter. This API is considered unstable and is provided for the 217db96d56Sopenharmony_ci * convenience of debuggers, profilers and state-inspecting tools. Notice that 227db96d56Sopenharmony_ci * this API can be changed in future minor versions if the underlying frame 237db96d56Sopenharmony_ci * mechanism change or the concept of an 'entry frame' or its semantics becomes 247db96d56Sopenharmony_ci * obsolete or outdated. */ 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ciPyAPI_FUNC(int) _PyFrame_IsEntryFrame(PyFrameObject *frame); 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ciPyAPI_FUNC(int) PyFrame_FastToLocalsWithError(PyFrameObject *f); 297db96d56Sopenharmony_ciPyAPI_FUNC(void) PyFrame_FastToLocals(PyFrameObject *); 30