vm/src/slots.rs

This commit is contained in:
Jeong YunWon committed 2020-01-26 14:05:05 +09:00
1 parent e2e5c7ab00
commit 80f3da92ee
9 files changed
+30 -35

No files matched your search

-10
View File
@@ -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
View File
@@ -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 -2
View File
@@ -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 -1
View File
@@ -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
+1 -2
View File
@@ -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>;
+1 -1
View File
@@ -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 -1
View File
@@ -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
View File
@@ -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)
+22 -2
View File
@@ -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>,