mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-28 18:59:04 +08:00
vm/src/slots.rs
This commit is contained in:
1 parent
e2e5c7ab00
commit
80f3da92ee
9 files changed
+30
-35
No files matched your search
@@ -1,10 +0,0 @@
|
||||
use crate::function::PyFuncArgs;
|
||||
use crate::pyobject::{PyResult, PyValue};
|
||||
use crate::VirtualMachine;
|
||||
|
||||
#[pyimpl]
|
||||
pub trait PyBuiltinCallable: PyValue {
|
||||
#[pymethod(magic)]
|
||||
#[pyslot]
|
||||
fn call(&self, args: PyFuncArgs, vm: &VirtualMachine) -> PyResult;
|
||||
}
|
||||
+1
-2
@@ -58,9 +58,7 @@ macro_rules! py_compile_bytecode {
|
||||
pub mod macros;
|
||||
|
||||
mod builtins;
|
||||
mod callable;
|
||||
pub mod cformat;
|
||||
mod descriptor;
|
||||
mod dictdatatype;
|
||||
#[cfg(feature = "rustpython-compiler")]
|
||||
pub mod eval;
|
||||
@@ -76,6 +74,7 @@ mod pyhash;
|
||||
pub mod pyobject;
|
||||
pub mod scope;
|
||||
mod sequence;
|
||||
mod slots;
|
||||
pub mod stdlib;
|
||||
mod sysmodule;
|
||||
pub mod types;
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
use std::fmt;
|
||||
|
||||
use crate::callable::PyBuiltinCallable;
|
||||
use crate::descriptor::PyBuiltinDescriptor;
|
||||
use crate::function::{OptionalArg, PyFuncArgs, PyNativeFunc};
|
||||
use crate::obj::objtype::PyClassRef;
|
||||
use crate::pyobject::{
|
||||
IdProtocol, PyClassImpl, PyContext, PyObjectRef, PyRef, PyResult, PyValue, TypeProtocol,
|
||||
};
|
||||
use crate::slots::{PyBuiltinCallable, PyBuiltinDescriptor};
|
||||
use crate::vm::VirtualMachine;
|
||||
|
||||
#[pyclass]
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use super::objtype::PyClassRef;
|
||||
use crate::descriptor::PyBuiltinDescriptor;
|
||||
use crate::function::OptionalArg;
|
||||
use crate::pyobject::{
|
||||
PyClassImpl, PyContext, PyObjectRef, PyRef, PyResult, PyValue, TypeProtocol,
|
||||
};
|
||||
use crate::slots::PyBuiltinDescriptor;
|
||||
use crate::vm::VirtualMachine;
|
||||
|
||||
/// classmethod(function) -> method
|
||||
|
||||
@@ -4,8 +4,6 @@ use super::objstr::PyStringRef;
|
||||
use super::objtuple::PyTupleRef;
|
||||
use super::objtype::PyClassRef;
|
||||
use crate::bytecode;
|
||||
use crate::callable::PyBuiltinCallable;
|
||||
use crate::descriptor::PyBuiltinDescriptor;
|
||||
use crate::frame::Frame;
|
||||
use crate::function::{OptionalArg, PyFuncArgs};
|
||||
use crate::obj::objcoroutine::PyCoroutine;
|
||||
@@ -15,6 +13,7 @@ use crate::pyobject::{
|
||||
TypeProtocol,
|
||||
};
|
||||
use crate::scope::Scope;
|
||||
use crate::slots::{PyBuiltinCallable, PyBuiltinDescriptor};
|
||||
use crate::vm::VirtualMachine;
|
||||
|
||||
pub type PyFunctionRef = PyRef<PyFunction>;
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
use std::cell::RefCell;
|
||||
|
||||
use super::objtype::PyClassRef;
|
||||
use crate::descriptor::PyBuiltinDescriptor;
|
||||
use crate::function::{IntoPyNativeFunc, OptionalArg};
|
||||
use crate::pyobject::{
|
||||
IdProtocol, PyClassImpl, PyContext, PyObject, PyObjectRef, PyRef, PyResult, PyValue,
|
||||
TypeProtocol,
|
||||
};
|
||||
use crate::slots::PyBuiltinDescriptor;
|
||||
use crate::vm::VirtualMachine;
|
||||
|
||||
// Read-only property, doesn't have __set__ or __delete__
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use super::objtype::PyClassRef;
|
||||
use crate::descriptor::PyBuiltinDescriptor;
|
||||
use crate::function::OptionalArg;
|
||||
use crate::pyobject::{PyClassImpl, PyContext, PyObjectRef, PyRef, PyResult, PyValue};
|
||||
use crate::slots::PyBuiltinDescriptor;
|
||||
use crate::vm::VirtualMachine;
|
||||
|
||||
#[pyclass(name = "staticmethod")]
|
||||
|
||||
+2
-14
@@ -9,11 +9,12 @@ use super::objproperty::PropertyBuilder;
|
||||
use super::objstr::PyStringRef;
|
||||
use super::objtuple::PyTuple;
|
||||
use super::objweakref::PyWeak;
|
||||
use crate::function::{PyFuncArgs, PyNativeFunc};
|
||||
use crate::function::PyFuncArgs;
|
||||
use crate::pyobject::{
|
||||
IdProtocol, PyAttributes, PyContext, PyIterable, PyObject, PyObjectRef, PyRef, PyResult,
|
||||
PyValue, TypeProtocol,
|
||||
};
|
||||
use crate::slots::PyClassSlots;
|
||||
use crate::vm::VirtualMachine;
|
||||
|
||||
#[derive(Debug)]
|
||||
@@ -26,19 +27,6 @@ pub struct PyClass {
|
||||
pub slots: RefCell<PyClassSlots>,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct PyClassSlots {
|
||||
pub new: Option<PyNativeFunc>,
|
||||
pub call: Option<PyNativeFunc>,
|
||||
pub descr_get: Option<PyNativeFunc>,
|
||||
}
|
||||
|
||||
impl fmt::Debug for PyClassSlots {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
f.write_str("PyClassSlots")
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for PyClass {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
fmt::Display::fmt(&self.name, f)
|
||||
|
||||
@@ -1,10 +1,30 @@
|
||||
use crate::function::OptionalArg;
|
||||
use crate::function::{OptionalArg, PyFuncArgs, PyNativeFunc};
|
||||
use crate::pyobject::{IdProtocol, PyObjectRef, PyRef, PyResult, PyValue};
|
||||
use crate::VirtualMachine;
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct PyClassSlots {
|
||||
pub new: Option<PyNativeFunc>,
|
||||
pub call: Option<PyNativeFunc>,
|
||||
pub descr_get: Option<PyNativeFunc>,
|
||||
}
|
||||
|
||||
impl std::fmt::Debug for PyClassSlots {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
f.write_str("PyClassSlots")
|
||||
}
|
||||
}
|
||||
|
||||
#[pyimpl]
|
||||
pub trait PyBuiltinCallable: PyValue {
|
||||
#[pymethod(magic)]
|
||||
#[pyslot]
|
||||
fn call(&self, args: PyFuncArgs, vm: &VirtualMachine) -> PyResult;
|
||||
}
|
||||
|
||||
#[pyimpl]
|
||||
pub trait PyBuiltinDescriptor: PyValue {
|
||||
#[pymethod(name = "__get__")]
|
||||
#[pymethod(magic)]
|
||||
#[pyslot(descr_get)]
|
||||
fn get(
|
||||
zelf: PyRef<Self>,
|
||||
Reference in new issue
Block a user