Move files from ffi3 into ffi
Since Python 2 is no longer supported, one folder should be enough.
This commit is contained in:
parent
73947d84b4
commit
68c3208d35
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::PyTypeObject;
|
use crate::ffi::object::PyTypeObject;
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
||||||
extern "C" {
|
extern "C" {
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::longobject::PyLongObject;
|
use crate::ffi::longobject::PyLongObject;
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use std::os::raw::{c_int, c_long};
|
use std::os::raw::{c_int, c_long};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,7 +1,7 @@
|
||||||
#[cfg(Py_3_6)]
|
#[cfg(Py_3_6)]
|
||||||
use crate::ffi3::code::FreeFunc;
|
use crate::ffi::code::FreeFunc;
|
||||||
use crate::ffi3::object::PyObject;
|
use crate::ffi::object::PyObject;
|
||||||
use crate::ffi3::pystate::PyThreadState;
|
use crate::ffi::pystate::PyThreadState;
|
||||||
use std::os::raw::{c_char, c_int, c_void};
|
use std::os::raw::{c_char, c_int, c_void};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
||||||
|
@ -36,7 +36,7 @@ extern "C" {
|
||||||
pub fn PyEval_GetGlobals() -> *mut PyObject;
|
pub fn PyEval_GetGlobals() -> *mut PyObject;
|
||||||
#[cfg_attr(PyPy, link_name = "PyPyEval_GetLocals")]
|
#[cfg_attr(PyPy, link_name = "PyPyEval_GetLocals")]
|
||||||
pub fn PyEval_GetLocals() -> *mut PyObject;
|
pub fn PyEval_GetLocals() -> *mut PyObject;
|
||||||
pub fn PyEval_GetFrame() -> *mut crate::ffi3::PyFrameObject;
|
pub fn PyEval_GetFrame() -> *mut crate::ffi::PyFrameObject;
|
||||||
#[cfg_attr(PyPy, link_name = "PyPy_AddPendingCall")]
|
#[cfg_attr(PyPy, link_name = "PyPy_AddPendingCall")]
|
||||||
pub fn Py_AddPendingCall(
|
pub fn Py_AddPendingCall(
|
||||||
func: Option<extern "C" fn(arg1: *mut c_void) -> c_int>,
|
func: Option<extern "C" fn(arg1: *mut c_void) -> c_int>,
|
||||||
|
@ -55,22 +55,22 @@ extern "C" {
|
||||||
// TODO: Py_EnterRecursiveCall etc.
|
// TODO: Py_EnterRecursiveCall etc.
|
||||||
#[cfg(Py_3_6)]
|
#[cfg(Py_3_6)]
|
||||||
pub type _PyFrameEvalFunction =
|
pub type _PyFrameEvalFunction =
|
||||||
extern "C" fn(*mut crate::ffi3::PyFrameObject, c_int) -> *mut PyObject;
|
extern "C" fn(*mut crate::ffi::PyFrameObject, c_int) -> *mut PyObject;
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn PyEval_GetFuncName(arg1: *mut PyObject) -> *const c_char;
|
pub fn PyEval_GetFuncName(arg1: *mut PyObject) -> *const c_char;
|
||||||
pub fn PyEval_GetFuncDesc(arg1: *mut PyObject) -> *const c_char;
|
pub fn PyEval_GetFuncDesc(arg1: *mut PyObject) -> *const c_char;
|
||||||
pub fn PyEval_GetCallStats(arg1: *mut PyObject) -> *mut PyObject;
|
pub fn PyEval_GetCallStats(arg1: *mut PyObject) -> *mut PyObject;
|
||||||
pub fn PyEval_EvalFrame(arg1: *mut crate::ffi3::PyFrameObject) -> *mut PyObject;
|
pub fn PyEval_EvalFrame(arg1: *mut crate::ffi::PyFrameObject) -> *mut PyObject;
|
||||||
#[cfg(Py_3_6)]
|
#[cfg(Py_3_6)]
|
||||||
pub fn _PyEval_EvalFrameDefault(
|
pub fn _PyEval_EvalFrameDefault(
|
||||||
arg1: *mut crate::ffi3::PyFrameObject,
|
arg1: *mut crate::ffi::PyFrameObject,
|
||||||
exc: c_int,
|
exc: c_int,
|
||||||
) -> *mut PyObject;
|
) -> *mut PyObject;
|
||||||
#[cfg(Py_3_6)]
|
#[cfg(Py_3_6)]
|
||||||
pub fn _PyEval_RequestCodeExtraIndex(func: FreeFunc) -> c_int;
|
pub fn _PyEval_RequestCodeExtraIndex(func: FreeFunc) -> c_int;
|
||||||
pub fn PyEval_EvalFrameEx(f: *mut crate::ffi3::PyFrameObject, exc: c_int) -> *mut PyObject;
|
pub fn PyEval_EvalFrameEx(f: *mut crate::ffi::PyFrameObject, exc: c_int) -> *mut PyObject;
|
||||||
#[cfg_attr(PyPy, link_name = "PyPyEval_SaveThread")]
|
#[cfg_attr(PyPy, link_name = "PyPyEval_SaveThread")]
|
||||||
pub fn PyEval_SaveThread() -> *mut PyThreadState;
|
pub fn PyEval_SaveThread() -> *mut PyThreadState;
|
||||||
#[cfg_attr(PyPy, link_name = "PyPyEval_RestoreThread")]
|
#[cfg_attr(PyPy, link_name = "PyPyEval_RestoreThread")]
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::{c_char, c_int, c_uchar, c_void};
|
use std::os::raw::{c_char, c_int, c_uchar, c_void};
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
|
@ -124,5 +124,5 @@ pub unsafe fn PyCode_Check(op: *mut PyObject) -> c_int {
|
||||||
#[inline]
|
#[inline]
|
||||||
#[cfg_attr(PyPy, link_name = "PyPyCode_GetNumFree")]
|
#[cfg_attr(PyPy, link_name = "PyPyCode_GetNumFree")]
|
||||||
pub unsafe fn PyCode_GetNumFree(op: *mut PyCodeObject) -> Py_ssize_t {
|
pub unsafe fn PyCode_GetNumFree(op: *mut PyCodeObject) -> Py_ssize_t {
|
||||||
crate::ffi3::tupleobject::PyTuple_GET_SIZE((*op).co_freevars)
|
crate::ffi::tupleobject::PyTuple_GET_SIZE((*op).co_freevars)
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::PyObject;
|
use crate::ffi::object::PyObject;
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::ffi3::code::*;
|
use crate::ffi::code::*;
|
||||||
use crate::ffi3::object::PyObject;
|
use crate::ffi::object::PyObject;
|
||||||
use crate::ffi3::pyarena::*;
|
use crate::ffi::pyarena::*;
|
||||||
use crate::ffi3::pythonrun::*;
|
use crate::ffi::pythonrun::*;
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use std::os::raw::{c_double, c_int};
|
use std::os::raw::{c_double, c_int};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::ffi3::methodobject::PyMethodDef;
|
use crate::ffi::methodobject::PyMethodDef;
|
||||||
use crate::ffi3::object::{PyObject, PyTypeObject};
|
use crate::ffi::object::{PyObject, PyTypeObject};
|
||||||
#[cfg(not(PyPy))]
|
#[cfg(not(PyPy))]
|
||||||
use crate::ffi3::object::{PyObject_GenericGetDict, PyObject_GenericSetDict};
|
use crate::ffi::object::{PyObject_GenericGetDict, PyObject_GenericSetDict};
|
||||||
use crate::ffi3::structmember::PyMemberDef;
|
use crate::ffi::structmember::PyMemberDef;
|
||||||
use std::os::raw::{c_char, c_int, c_void};
|
use std::os::raw::{c_char, c_int, c_void};
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::PyTypeObject;
|
use crate::ffi::object::PyTypeObject;
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
||||||
extern "C" {
|
extern "C" {
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::PyObject;
|
use crate::ffi::object::PyObject;
|
||||||
use std::os::raw::c_int;
|
use std::os::raw::c_int;
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::PyObject;
|
use crate::ffi::object::PyObject;
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
|
|
||||||
pub const PY_STDIOTEXTMODE: &str = "b";
|
pub const PY_STDIOTEXTMODE: &str = "b";
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use std::os::raw::{c_double, c_int};
|
use std::os::raw::{c_double, c_int};
|
||||||
|
|
||||||
#[cfg(not(Py_LIMITED_API))]
|
#[cfg(not(Py_LIMITED_API))]
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::ffi3::code::{PyCodeObject, CO_MAXBLOCKS};
|
use crate::ffi::code::{PyCodeObject, CO_MAXBLOCKS};
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pystate::PyThreadState;
|
use crate::ffi::pystate::PyThreadState;
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::ffi3::frameobject::PyFrameObject;
|
use crate::ffi::frameobject::PyFrameObject;
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::c_int;
|
use std::os::raw::c_int;
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::PyObject;
|
use crate::ffi::object::PyObject;
|
||||||
use std::os::raw::{c_char, c_int, c_long};
|
use std::os::raw::{c_char, c_int, c_long};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use std::os::raw::c_int;
|
use std::os::raw::c_int;
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::c_int;
|
use std::os::raw::c_int;
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use libc::size_t;
|
use libc::size_t;
|
||||||
use std::os::raw::{
|
use std::os::raw::{
|
||||||
c_char, c_double, c_int, c_long, c_longlong, c_uchar, c_ulong, c_ulonglong, c_void,
|
c_char, c_double, c_int, c_long, c_longlong, c_uchar, c_ulong, c_ulonglong, c_void,
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::{PyObject, PyTypeObject, Py_TYPE};
|
use crate::ffi::object::{PyObject, PyTypeObject, Py_TYPE};
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
use std::{mem, ptr};
|
use std::{mem, ptr};
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ pub type PyCFunction =
|
||||||
pub type _PyCFunctionFast = unsafe extern "C" fn(
|
pub type _PyCFunctionFast = unsafe extern "C" fn(
|
||||||
slf: *mut PyObject,
|
slf: *mut PyObject,
|
||||||
args: *mut *mut PyObject,
|
args: *mut *mut PyObject,
|
||||||
nargs: crate::ffi3::pyport::Py_ssize_t,
|
nargs: crate::ffi::pyport::Py_ssize_t,
|
||||||
kwnames: *mut PyObject,
|
kwnames: *mut PyObject,
|
||||||
) -> *mut PyObject;
|
) -> *mut PyObject;
|
||||||
|
|
154
src/ffi/mod.rs
154
src/ffi/mod.rs
|
@ -1,9 +1,157 @@
|
||||||
#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
|
#![allow(non_camel_case_types, non_snake_case, non_upper_case_globals)]
|
||||||
|
#![cfg_attr(Py_LIMITED_API, allow(unused_imports))]
|
||||||
pub use crate::ffi3::*;
|
#![cfg_attr(feature="cargo-clippy", allow(clippy::inline_always))]
|
||||||
|
|
||||||
|
pub use self::bltinmodule::*;
|
||||||
|
pub use self::boolobject::*;
|
||||||
|
pub use self::bytearrayobject::*;
|
||||||
|
pub use self::bytesobject::*;
|
||||||
|
pub use self::ceval::*;
|
||||||
|
pub use self::code::*;
|
||||||
|
pub use self::codecs::*;
|
||||||
|
pub use self::compile::*;
|
||||||
|
pub use self::complexobject::*;
|
||||||
pub use self::datetime::*;
|
pub use self::datetime::*;
|
||||||
|
pub use self::descrobject::*;
|
||||||
|
pub use self::dictobject::*;
|
||||||
|
pub use self::enumobject::*;
|
||||||
|
pub use self::eval::*;
|
||||||
|
pub use self::fileobject::*;
|
||||||
|
pub use self::floatobject::*;
|
||||||
|
pub use self::frameobject::PyFrameObject;
|
||||||
|
pub use self::genobject::*;
|
||||||
|
pub use self::import::*;
|
||||||
|
pub use self::intrcheck::*;
|
||||||
|
pub use self::iterobject::*;
|
||||||
|
pub use self::listobject::*;
|
||||||
|
pub use self::longobject::*;
|
||||||
pub use self::marshal::*;
|
pub use self::marshal::*;
|
||||||
|
pub use self::memoryobject::*;
|
||||||
|
pub use self::methodobject::*;
|
||||||
|
pub use self::modsupport::*;
|
||||||
|
pub use self::moduleobject::*;
|
||||||
|
pub use self::object::*;
|
||||||
|
pub use self::objectabstract::*;
|
||||||
|
pub use self::objimpl::*;
|
||||||
|
#[cfg(Py_3_6)]
|
||||||
|
pub use self::osmodule::*;
|
||||||
|
pub use self::pyarena::*;
|
||||||
|
pub use self::pycapsule::*;
|
||||||
|
pub use self::pydebug::*;
|
||||||
|
pub use self::pyerrors::*;
|
||||||
|
pub use self::pyhash::*;
|
||||||
|
pub use self::pymem::*;
|
||||||
|
pub use self::pyport::*;
|
||||||
|
pub use self::pystate::*;
|
||||||
|
pub use self::pystrtod::*;
|
||||||
|
pub use self::pythonrun::*;
|
||||||
|
pub use self::rangeobject::*;
|
||||||
|
pub use self::setobject::*;
|
||||||
|
pub use self::sliceobject::*;
|
||||||
|
pub use self::structseq::*;
|
||||||
|
pub use self::sysmodule::*;
|
||||||
|
pub use self::traceback::*;
|
||||||
|
pub use self::tupleobject::*;
|
||||||
|
pub use self::typeslots::*;
|
||||||
|
pub use self::unicodeobject::*;
|
||||||
|
pub use self::warnings::*;
|
||||||
|
pub use self::weakrefobject::*;
|
||||||
|
|
||||||
|
mod pyport;
|
||||||
|
// mod pymacro; contains nothing of interest for Rust
|
||||||
|
// mod pyatomic; contains nothing of interest for Rust
|
||||||
|
// mod pymath; contains nothing of interest for Rust
|
||||||
|
|
||||||
|
// [cfg(not(Py_LIMITED_API))]
|
||||||
|
// mod pytime; contains nothing of interest
|
||||||
|
|
||||||
|
mod pymem;
|
||||||
|
|
||||||
|
mod object;
|
||||||
|
mod objimpl;
|
||||||
|
mod pydebug;
|
||||||
|
mod pyhash;
|
||||||
|
mod typeslots;
|
||||||
|
|
||||||
|
mod bytearrayobject;
|
||||||
|
mod bytesobject;
|
||||||
|
mod longobject;
|
||||||
|
mod unicodeobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
// mod longintrepr; TODO excluded by PEP-384
|
||||||
|
mod boolobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod complexobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod dictobject;
|
||||||
|
mod floatobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod listobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod memoryobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod rangeobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod tupleobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
// mod odictobject; TODO new in 3.5
|
||||||
|
mod enumobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod methodobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod moduleobject;
|
||||||
|
mod setobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
// mod funcobject; TODO excluded by PEP-384
|
||||||
|
// mod classobject; TODO excluded by PEP-384
|
||||||
|
mod fileobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod pycapsule; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod sliceobject;
|
||||||
|
mod traceback; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
// mod cellobject; TODO excluded by PEP-384
|
||||||
|
mod descrobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod genobject; // TODO excluded by PEP-384
|
||||||
|
mod iterobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod structseq;
|
||||||
|
mod warnings; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod weakrefobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
// mod namespaceobject; TODO
|
||||||
|
|
||||||
|
mod codecs; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod pyerrors; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
|
||||||
|
mod pystate; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
|
||||||
|
#[cfg(Py_LIMITED_API)]
|
||||||
|
mod pyarena {}
|
||||||
|
mod modsupport; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
#[cfg(not(Py_LIMITED_API))]
|
||||||
|
mod pyarena; // TODO: incomplete
|
||||||
|
mod pythonrun; // TODO some functions need to be moved to pylifecycle
|
||||||
|
//mod pylifecycle; // TODO new in 3.5
|
||||||
|
mod ceval; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
mod import;
|
||||||
|
mod intrcheck; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
#[cfg(Py_3_6)]
|
||||||
|
mod osmodule;
|
||||||
|
mod sysmodule; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
|
||||||
|
mod bltinmodule;
|
||||||
|
mod objectabstract; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
|
||||||
|
#[cfg(Py_LIMITED_API)]
|
||||||
|
mod code {}
|
||||||
|
#[cfg(not(Py_LIMITED_API))]
|
||||||
|
mod code;
|
||||||
|
|
||||||
|
mod compile; // TODO: incomplete
|
||||||
|
mod eval; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
|
||||||
|
// mod pyctype; TODO excluded by PEP-384
|
||||||
|
mod pystrtod; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
// mod pystrcmp; TODO nothing interesting for Rust?
|
||||||
|
// mod dtoa; TODO excluded by PEP-384
|
||||||
|
// mod fileutils; TODO no public functions?
|
||||||
|
// mod pyfpe; TODO probably not interesting for rust
|
||||||
|
|
||||||
|
// Additional headers that are not exported by Python.h
|
||||||
|
pub mod structmember; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
||||||
|
|
||||||
|
#[cfg(not(Py_LIMITED_API))]
|
||||||
|
pub mod frameobject;
|
||||||
|
#[cfg(Py_LIMITED_API)]
|
||||||
|
pub mod frameobject {
|
||||||
|
pub enum PyFrameObject {}
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) mod datetime;
|
pub(crate) mod datetime;
|
||||||
pub(crate) mod marshal;
|
pub(crate) mod marshal;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::ffi3::methodobject::PyMethodDef;
|
use crate::ffi::methodobject::PyMethodDef;
|
||||||
use crate::ffi3::moduleobject::PyModuleDef;
|
use crate::ffi::moduleobject::PyModuleDef;
|
||||||
use crate::ffi3::object::PyObject;
|
use crate::ffi::object::PyObject;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::{c_char, c_int, c_long};
|
use std::os::raw::{c_char, c_int, c_long};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::ffi3::methodobject::PyMethodDef;
|
use crate::ffi::methodobject::PyMethodDef;
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::{c_char, c_int, c_void};
|
use std::os::raw::{c_char, c_int, c_void};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::pyport::{Py_hash_t, Py_ssize_t};
|
use crate::ffi::pyport::{Py_hash_t, Py_ssize_t};
|
||||||
#[cfg(PyPy)]
|
#[cfg(PyPy)]
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
@ -77,8 +77,8 @@ pub unsafe fn Py_REFCNT(ob: *mut PyObject) -> Py_ssize_t {
|
||||||
|
|
||||||
#[cfg(PyPy)]
|
#[cfg(PyPy)]
|
||||||
pub unsafe fn _PyObject_NextNotImplemented(arg1: *mut PyObject) -> *mut PyObject {
|
pub unsafe fn _PyObject_NextNotImplemented(arg1: *mut PyObject) -> *mut PyObject {
|
||||||
return crate::ffi3::pyerrors::PyErr_Format(
|
return crate::ffi::pyerrors::PyErr_Format(
|
||||||
crate::ffi3::pyerrors::PyExc_TypeError,
|
crate::ffi::pyerrors::PyExc_TypeError,
|
||||||
CStr::from_bytes_with_nul(b"'%.200s' object is not iterable\0")
|
CStr::from_bytes_with_nul(b"'%.200s' object is not iterable\0")
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.as_ptr(),
|
.as_ptr(),
|
||||||
|
@ -132,7 +132,7 @@ pub type objobjargproc =
|
||||||
|
|
||||||
#[cfg(not(Py_LIMITED_API))]
|
#[cfg(not(Py_LIMITED_API))]
|
||||||
mod bufferinfo {
|
mod bufferinfo {
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::os::raw::{c_char, c_int, c_void};
|
use std::os::raw::{c_char, c_int, c_void};
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ mod bufferinfo {
|
||||||
#[derive(Copy, Clone)]
|
#[derive(Copy, Clone)]
|
||||||
pub struct Py_buffer {
|
pub struct Py_buffer {
|
||||||
pub buf: *mut c_void,
|
pub buf: *mut c_void,
|
||||||
pub obj: *mut crate::ffi3::PyObject,
|
pub obj: *mut crate::ffi::PyObject,
|
||||||
pub len: Py_ssize_t,
|
pub len: Py_ssize_t,
|
||||||
pub itemsize: Py_ssize_t,
|
pub itemsize: Py_ssize_t,
|
||||||
pub readonly: c_int,
|
pub readonly: c_int,
|
||||||
|
@ -160,12 +160,12 @@ mod bufferinfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type getbufferproc = unsafe extern "C" fn(
|
pub type getbufferproc = unsafe extern "C" fn(
|
||||||
arg1: *mut crate::ffi3::PyObject,
|
arg1: *mut crate::ffi::PyObject,
|
||||||
arg2: *mut Py_buffer,
|
arg2: *mut Py_buffer,
|
||||||
arg3: c_int,
|
arg3: c_int,
|
||||||
) -> c_int;
|
) -> c_int;
|
||||||
pub type releasebufferproc =
|
pub type releasebufferproc =
|
||||||
unsafe extern "C" fn(arg1: *mut crate::ffi3::PyObject, arg2: *mut Py_buffer) -> ();
|
unsafe extern "C" fn(arg1: *mut crate::ffi::PyObject, arg2: *mut Py_buffer) -> ();
|
||||||
|
|
||||||
/// Maximum number of dimensions
|
/// Maximum number of dimensions
|
||||||
pub const PyBUF_MAX_NDIM: c_int = 64;
|
pub const PyBUF_MAX_NDIM: c_int = 64;
|
||||||
|
@ -249,8 +249,8 @@ mod typeobject {
|
||||||
|
|
||||||
#[cfg(not(Py_LIMITED_API))]
|
#[cfg(not(Py_LIMITED_API))]
|
||||||
mod typeobject {
|
mod typeobject {
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use crate::ffi3::{self, object};
|
use crate::ffi::{self, object};
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::os::raw::{c_char, c_uint, c_ulong, c_void};
|
use std::os::raw::{c_char, c_uint, c_ulong, c_void};
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
@ -485,27 +485,27 @@ mod typeobject {
|
||||||
pub tp_weaklistoffset: Py_ssize_t,
|
pub tp_weaklistoffset: Py_ssize_t,
|
||||||
pub tp_iter: Option<object::getiterfunc>,
|
pub tp_iter: Option<object::getiterfunc>,
|
||||||
pub tp_iternext: Option<object::iternextfunc>,
|
pub tp_iternext: Option<object::iternextfunc>,
|
||||||
pub tp_methods: *mut ffi3::methodobject::PyMethodDef,
|
pub tp_methods: *mut ffi::methodobject::PyMethodDef,
|
||||||
pub tp_members: *mut ffi3::structmember::PyMemberDef,
|
pub tp_members: *mut ffi::structmember::PyMemberDef,
|
||||||
pub tp_getset: *mut ffi3::descrobject::PyGetSetDef,
|
pub tp_getset: *mut ffi::descrobject::PyGetSetDef,
|
||||||
pub tp_base: *mut PyTypeObject,
|
pub tp_base: *mut PyTypeObject,
|
||||||
pub tp_dict: *mut ffi3::object::PyObject,
|
pub tp_dict: *mut ffi::object::PyObject,
|
||||||
pub tp_descr_get: Option<ffi3::object::descrgetfunc>,
|
pub tp_descr_get: Option<ffi::object::descrgetfunc>,
|
||||||
pub tp_descr_set: Option<ffi3::object::descrsetfunc>,
|
pub tp_descr_set: Option<ffi::object::descrsetfunc>,
|
||||||
pub tp_dictoffset: Py_ssize_t,
|
pub tp_dictoffset: Py_ssize_t,
|
||||||
pub tp_init: Option<ffi3::object::initproc>,
|
pub tp_init: Option<ffi::object::initproc>,
|
||||||
pub tp_alloc: Option<ffi3::object::allocfunc>,
|
pub tp_alloc: Option<ffi::object::allocfunc>,
|
||||||
pub tp_new: Option<ffi3::object::newfunc>,
|
pub tp_new: Option<ffi::object::newfunc>,
|
||||||
pub tp_free: Option<ffi3::object::freefunc>,
|
pub tp_free: Option<ffi::object::freefunc>,
|
||||||
pub tp_is_gc: Option<ffi3::object::inquiry>,
|
pub tp_is_gc: Option<ffi::object::inquiry>,
|
||||||
pub tp_bases: *mut ffi3::object::PyObject,
|
pub tp_bases: *mut ffi::object::PyObject,
|
||||||
pub tp_mro: *mut ffi3::object::PyObject,
|
pub tp_mro: *mut ffi::object::PyObject,
|
||||||
pub tp_cache: *mut ffi3::object::PyObject,
|
pub tp_cache: *mut ffi::object::PyObject,
|
||||||
pub tp_subclasses: *mut ffi3::object::PyObject,
|
pub tp_subclasses: *mut ffi::object::PyObject,
|
||||||
pub tp_weaklist: *mut ffi3::object::PyObject,
|
pub tp_weaklist: *mut ffi::object::PyObject,
|
||||||
pub tp_del: Option<ffi3::object::destructor>,
|
pub tp_del: Option<ffi::object::destructor>,
|
||||||
pub tp_version_tag: c_uint,
|
pub tp_version_tag: c_uint,
|
||||||
pub tp_finalize: Option<ffi3::object::destructor>,
|
pub tp_finalize: Option<ffi::object::destructor>,
|
||||||
#[cfg(PyPy)]
|
#[cfg(PyPy)]
|
||||||
pub tp_pypy_flags: ::std::os::raw::c_long,
|
pub tp_pypy_flags: ::std::os::raw::c_long,
|
||||||
#[cfg(py_sys_config = "COUNT_ALLOCS")]
|
#[cfg(py_sys_config = "COUNT_ALLOCS")]
|
||||||
|
@ -543,7 +543,7 @@ mod typeobject {
|
||||||
tp_getattro: None,
|
tp_getattro: None,
|
||||||
tp_setattro: None,
|
tp_setattro: None,
|
||||||
tp_as_buffer: ptr::null_mut(),
|
tp_as_buffer: ptr::null_mut(),
|
||||||
tp_flags: ffi3::object::Py_TPFLAGS_DEFAULT,
|
tp_flags: ffi::object::Py_TPFLAGS_DEFAULT,
|
||||||
tp_doc: ptr::null(),
|
tp_doc: ptr::null(),
|
||||||
tp_traverse: None,
|
tp_traverse: None,
|
||||||
tp_clear: None,
|
tp_clear: None,
|
||||||
|
@ -597,8 +597,8 @@ mod typeobject {
|
||||||
macro_rules! py_type_object_init {
|
macro_rules! py_type_object_init {
|
||||||
($tp_as_async:ident, $($tail:tt)*) => {
|
($tp_as_async:ident, $($tail:tt)*) => {
|
||||||
_type_object_init!({
|
_type_object_init!({
|
||||||
ob_base: ffi3::object::PyVarObject {
|
ob_base: ffi::object::PyVarObject {
|
||||||
ob_base: ffi3::object::PyObject_HEAD_INIT,
|
ob_base: ffi::object::PyObject_HEAD_INIT,
|
||||||
ob_size: 0
|
ob_size: 0
|
||||||
},}
|
},}
|
||||||
$tp_as_async,
|
$tp_as_async,
|
||||||
|
@ -640,9 +640,9 @@ mod typeobject {
|
||||||
pub as_mapping: PyMappingMethods,
|
pub as_mapping: PyMappingMethods,
|
||||||
pub as_sequence: PySequenceMethods,
|
pub as_sequence: PySequenceMethods,
|
||||||
pub as_buffer: PyBufferProcs,
|
pub as_buffer: PyBufferProcs,
|
||||||
pub ht_name: *mut ffi3::object::PyObject,
|
pub ht_name: *mut ffi::object::PyObject,
|
||||||
pub ht_slots: *mut ffi3::object::PyObject,
|
pub ht_slots: *mut ffi::object::PyObject,
|
||||||
pub ht_qualname: *mut ffi3::object::PyObject,
|
pub ht_qualname: *mut ffi::object::PyObject,
|
||||||
pub ht_cached_keys: *mut c_void,
|
pub ht_cached_keys: *mut c_void,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -656,10 +656,10 @@ mod typeobject {
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn PyHeapType_GET_MEMBERS(
|
pub unsafe fn PyHeapType_GET_MEMBERS(
|
||||||
etype: *mut PyHeapTypeObject,
|
etype: *mut PyHeapTypeObject,
|
||||||
) -> *mut ffi3::structmember::PyMemberDef {
|
) -> *mut ffi::structmember::PyMemberDef {
|
||||||
let py_type = ffi3::object::Py_TYPE(etype as *mut ffi3::object::PyObject);
|
let py_type = ffi::object::Py_TYPE(etype as *mut ffi::object::PyObject);
|
||||||
let ptr = etype.offset((*py_type).tp_basicsize);
|
let ptr = etype.offset((*py_type).tp_basicsize);
|
||||||
ptr as *mut ffi3::structmember::PyMemberDef
|
ptr as *mut ffi::structmember::PyMemberDef
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::{c_char, c_int, c_void};
|
use std::os::raw::{c_char, c_int, c_void};
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
|
||||||
|
@ -161,7 +161,7 @@ pub unsafe fn PyIter_Check(o: *mut PyObject) -> c_int {
|
||||||
(match (*(*o).ob_type).tp_iternext {
|
(match (*(*o).ob_type).tp_iternext {
|
||||||
Some(tp_iternext) => {
|
Some(tp_iternext) => {
|
||||||
tp_iternext as *const c_void
|
tp_iternext as *const c_void
|
||||||
!= crate::ffi3::object::_PyObject_NextNotImplemented as *const c_void
|
!= crate::ffi::object::_PyObject_NextNotImplemented as *const c_void
|
||||||
}
|
}
|
||||||
None => false,
|
None => false,
|
||||||
}) as c_int
|
}) as c_int
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use libc::size_t;
|
use libc::size_t;
|
||||||
use std::os::raw::{c_int, c_void};
|
use std::os::raw::{c_int, c_void};
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// This header is new in Python 3.6
|
// This header is new in Python 3.6
|
||||||
use crate::ffi3::object::PyObject;
|
use crate::ffi::object::PyObject;
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
||||||
extern "C" {
|
extern "C" {
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use std::os::raw::{c_char, c_int, c_void};
|
use std::os::raw::{c_char, c_int, c_void};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
#[cfg(PyPy)]
|
#[cfg(PyPy)]
|
||||||
use crate::ffi3::objectabstract::PyObject_CallFunction;
|
use crate::ffi::objectabstract::PyObject_CallFunction;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
#[cfg(PyPy)]
|
#[cfg(PyPy)]
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::pyport::{Py_hash_t, Py_ssize_t};
|
use crate::ffi::pyport::{Py_hash_t, Py_ssize_t};
|
||||||
use std::os::raw::{c_char, c_int, c_void};
|
use std::os::raw::{c_char, c_int, c_void};
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
|
@ -1,7 +1,7 @@
|
||||||
#[cfg(Py_3_6)]
|
#[cfg(Py_3_6)]
|
||||||
use crate::ffi3::ceval::_PyFrameEvalFunction;
|
use crate::ffi::ceval::_PyFrameEvalFunction;
|
||||||
use crate::ffi3::moduleobject::PyModuleDef;
|
use crate::ffi::moduleobject::PyModuleDef;
|
||||||
use crate::ffi3::object::PyObject;
|
use crate::ffi::object::PyObject;
|
||||||
use std::os::raw::{c_int, c_long};
|
use std::os::raw::{c_int, c_long};
|
||||||
|
|
||||||
#[cfg(Py_3_6)]
|
#[cfg(Py_3_6)]
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::PyObject;
|
use crate::ffi::object::PyObject;
|
||||||
use std::os::raw::{c_char, c_double, c_int};
|
use std::os::raw::{c_char, c_double, c_int};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
#[cfg(not(Py_LIMITED_API))]
|
#[cfg(not(Py_LIMITED_API))]
|
||||||
use crate::ffi3::pyarena::PyArena;
|
use crate::ffi::pyarena::PyArena;
|
||||||
use crate::ffi3::pystate::PyThreadState;
|
use crate::ffi::pystate::PyThreadState;
|
||||||
use libc::{wchar_t, FILE};
|
use libc::{wchar_t, FILE};
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
use std::ptr;
|
use std::ptr;
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use std::os::raw::c_int;
|
use std::os::raw::c_int;
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::c_int;
|
use std::os::raw::c_int;
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::c_int;
|
use std::os::raw::c_int;
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::PyObject;
|
use crate::ffi::object::PyObject;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::{PyObject, PyTypeObject};
|
use crate::ffi::object::{PyObject, PyTypeObject};
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::PyObject;
|
use crate::ffi::object::PyObject;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use libc::wchar_t;
|
use libc::wchar_t;
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use std::os::raw::c_int;
|
use std::os::raw::c_int;
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#[cfg_attr(PyPy, link_name = "PyPyTraceBack_Here")]
|
#[cfg_attr(PyPy, link_name = "PyPyTraceBack_Here")]
|
||||||
pub fn PyTraceBack_Here(arg1: *mut crate::ffi3::PyFrameObject) -> c_int;
|
pub fn PyTraceBack_Here(arg1: *mut crate::ffi::PyFrameObject) -> c_int;
|
||||||
#[cfg_attr(PyPy, link_name = "PyPyTraceBack_Print")]
|
#[cfg_attr(PyPy, link_name = "PyPyTraceBack_Print")]
|
||||||
pub fn PyTraceBack_Print(arg1: *mut PyObject, arg2: *mut PyObject) -> c_int;
|
pub fn PyTraceBack_Print(arg1: *mut PyObject, arg2: *mut PyObject) -> c_int;
|
||||||
#[cfg_attr(PyPy, link_name = "PyPyTraceBack_Type")]
|
#[cfg_attr(PyPy, link_name = "PyPyTraceBack_Type")]
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::c_int;
|
use std::os::raw::c_int;
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use libc::wchar_t;
|
use libc::wchar_t;
|
||||||
use std::os::raw::{c_char, c_int, c_void};
|
use std::os::raw::{c_char, c_int, c_void};
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::ffi3::object::PyObject;
|
use crate::ffi::object::PyObject;
|
||||||
use crate::ffi3::pyport::Py_ssize_t;
|
use crate::ffi::pyport::Py_ssize_t;
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
|
|
||||||
#[cfg_attr(windows, link(name = "pythonXY"))]
|
#[cfg_attr(windows, link(name = "pythonXY"))]
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::ffi3::object::*;
|
use crate::ffi::object::*;
|
||||||
use std::os::raw::c_int;
|
use std::os::raw::c_int;
|
||||||
|
|
||||||
pub enum PyWeakReference {}
|
pub enum PyWeakReference {}
|
153
src/ffi3/mod.rs
153
src/ffi3/mod.rs
|
@ -1,153 +0,0 @@
|
||||||
//! Rust FFI declarations for Python 3
|
|
||||||
#![allow(non_camel_case_types, non_snake_case, non_upper_case_globals)]
|
|
||||||
#![cfg_attr(Py_LIMITED_API, allow(unused_imports))]
|
|
||||||
#![cfg_attr(feature="cargo-clippy", allow(clippy::inline_always))]
|
|
||||||
|
|
||||||
pub use self::bltinmodule::*;
|
|
||||||
pub use self::boolobject::*;
|
|
||||||
pub use self::bytearrayobject::*;
|
|
||||||
pub use self::bytesobject::*;
|
|
||||||
pub use self::ceval::*;
|
|
||||||
pub use self::code::*;
|
|
||||||
pub use self::codecs::*;
|
|
||||||
pub use self::compile::*;
|
|
||||||
pub use self::complexobject::*;
|
|
||||||
pub use self::descrobject::*;
|
|
||||||
pub use self::dictobject::*;
|
|
||||||
pub use self::enumobject::*;
|
|
||||||
pub use self::eval::*;
|
|
||||||
pub use self::fileobject::*;
|
|
||||||
pub use self::floatobject::*;
|
|
||||||
pub use self::frameobject::PyFrameObject;
|
|
||||||
pub use self::genobject::*;
|
|
||||||
pub use self::import::*;
|
|
||||||
pub use self::intrcheck::*;
|
|
||||||
pub use self::iterobject::*;
|
|
||||||
pub use self::listobject::*;
|
|
||||||
pub use self::longobject::*;
|
|
||||||
pub use self::memoryobject::*;
|
|
||||||
pub use self::methodobject::*;
|
|
||||||
pub use self::modsupport::*;
|
|
||||||
pub use self::moduleobject::*;
|
|
||||||
pub use self::object::*;
|
|
||||||
pub use self::objectabstract::*;
|
|
||||||
pub use self::objimpl::*;
|
|
||||||
#[cfg(Py_3_6)]
|
|
||||||
pub use self::osmodule::*;
|
|
||||||
pub use self::pyarena::*;
|
|
||||||
pub use self::pycapsule::*;
|
|
||||||
pub use self::pydebug::*;
|
|
||||||
pub use self::pyerrors::*;
|
|
||||||
pub use self::pyhash::*;
|
|
||||||
pub use self::pymem::*;
|
|
||||||
pub use self::pyport::*;
|
|
||||||
pub use self::pystate::*;
|
|
||||||
pub use self::pystrtod::*;
|
|
||||||
pub use self::pythonrun::*;
|
|
||||||
pub use self::rangeobject::*;
|
|
||||||
pub use self::setobject::*;
|
|
||||||
pub use self::sliceobject::*;
|
|
||||||
pub use self::structseq::*;
|
|
||||||
pub use self::sysmodule::*;
|
|
||||||
pub use self::traceback::*;
|
|
||||||
pub use self::tupleobject::*;
|
|
||||||
pub use self::typeslots::*;
|
|
||||||
pub use self::unicodeobject::*;
|
|
||||||
pub use self::warnings::*;
|
|
||||||
pub use self::weakrefobject::*;
|
|
||||||
|
|
||||||
mod pyport;
|
|
||||||
// mod pymacro; contains nothing of interest for Rust
|
|
||||||
// mod pyatomic; contains nothing of interest for Rust
|
|
||||||
// mod pymath; contains nothing of interest for Rust
|
|
||||||
|
|
||||||
// [cfg(not(Py_LIMITED_API))]
|
|
||||||
// mod pytime; contains nothing of interest
|
|
||||||
|
|
||||||
mod pymem;
|
|
||||||
|
|
||||||
mod object;
|
|
||||||
mod objimpl;
|
|
||||||
mod pydebug;
|
|
||||||
mod pyhash;
|
|
||||||
mod typeslots;
|
|
||||||
|
|
||||||
mod bytearrayobject;
|
|
||||||
mod bytesobject;
|
|
||||||
mod longobject;
|
|
||||||
mod unicodeobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
// mod longintrepr; TODO excluded by PEP-384
|
|
||||||
mod boolobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod complexobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod dictobject;
|
|
||||||
mod floatobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod listobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod memoryobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod rangeobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod tupleobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
// mod odictobject; TODO new in 3.5
|
|
||||||
mod enumobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod methodobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod moduleobject;
|
|
||||||
mod setobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
// mod funcobject; TODO excluded by PEP-384
|
|
||||||
// mod classobject; TODO excluded by PEP-384
|
|
||||||
mod fileobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod pycapsule; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod sliceobject;
|
|
||||||
mod traceback; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
// mod cellobject; TODO excluded by PEP-384
|
|
||||||
mod descrobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod genobject; // TODO excluded by PEP-384
|
|
||||||
mod iterobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod structseq;
|
|
||||||
mod warnings; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod weakrefobject; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
// mod namespaceobject; TODO
|
|
||||||
|
|
||||||
mod codecs; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod pyerrors; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
|
|
||||||
mod pystate; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
|
|
||||||
#[cfg(Py_LIMITED_API)]
|
|
||||||
mod pyarena {}
|
|
||||||
mod modsupport; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
#[cfg(not(Py_LIMITED_API))]
|
|
||||||
mod pyarena; // TODO: incomplete
|
|
||||||
mod pythonrun; // TODO some functions need to be moved to pylifecycle
|
|
||||||
//mod pylifecycle; // TODO new in 3.5
|
|
||||||
mod ceval; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
mod import;
|
|
||||||
mod intrcheck; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
#[cfg(Py_3_6)]
|
|
||||||
mod osmodule;
|
|
||||||
mod sysmodule; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
|
|
||||||
mod bltinmodule;
|
|
||||||
mod objectabstract; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
|
|
||||||
#[cfg(Py_LIMITED_API)]
|
|
||||||
mod code {}
|
|
||||||
#[cfg(not(Py_LIMITED_API))]
|
|
||||||
mod code;
|
|
||||||
|
|
||||||
mod compile; // TODO: incomplete
|
|
||||||
mod eval; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
|
|
||||||
// mod pyctype; TODO excluded by PEP-384
|
|
||||||
mod pystrtod; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
// mod pystrcmp; TODO nothing interesting for Rust?
|
|
||||||
// mod dtoa; TODO excluded by PEP-384
|
|
||||||
// mod fileutils; TODO no public functions?
|
|
||||||
// mod pyfpe; TODO probably not interesting for rust
|
|
||||||
|
|
||||||
// Additional headers that are not exported by Python.h
|
|
||||||
pub mod structmember; // TODO supports PEP-384 only; needs adjustment for Python 3.3 and 3.5
|
|
||||||
|
|
||||||
#[cfg(not(Py_LIMITED_API))]
|
|
||||||
pub mod frameobject;
|
|
||||||
#[cfg(Py_LIMITED_API)]
|
|
||||||
pub mod frameobject {
|
|
||||||
pub enum PyFrameObject {}
|
|
||||||
}
|
|
|
@ -149,8 +149,6 @@ pub use unindent;
|
||||||
/// Raw ffi declarations for the c interface of python
|
/// Raw ffi declarations for the c interface of python
|
||||||
pub mod ffi;
|
pub mod ffi;
|
||||||
|
|
||||||
mod ffi3;
|
|
||||||
|
|
||||||
pub mod buffer;
|
pub mod buffer;
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub mod callback;
|
pub mod callback;
|
||||||
|
|
Loading…
Reference in a new issue