GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing rustpython.github.io — objtraceback.rs.html -- source 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 use crate::frame::FrameRef; use crate::obj::objtype::PyClassRef; use crate::pyobject::{PyClassImpl, PyContext, PyRef, PyValue}; use crate::vm::VirtualMachine; #[pyclass] #[derive(Debug)] pub struct PyTraceback { pub next: Option<PyTracebackRef>, // TODO: Make mutable pub frame: FrameRef, pub lasti: usize, pub lineno: usize, } pub type PyTracebackRef = PyRef<PyTraceback>; impl PyValue for PyTraceback { fn class(vm: &VirtualMachine) -> PyClassRef { vm.ctx.traceback_type() } } #[pyimpl] impl PyTraceback { pub fn new(next: Option<PyTracebackRef>, frame: FrameRef, lasti: usize, lineno: usize) -> Self { PyTraceback { next, frame, lasti, lineno, } } #[pyproperty(name = "tb_frame")] fn frame(&self) -> FrameRef { self.frame.clone() } #[pyproperty(name = "tb_lasti")] fn lasti(&self) -> usize { self.lasti } #[pyproperty(name = "tb_lineno")] fn lineno(&self) -> usize { self.lineno } #[pyproperty(name = "tb_next")] fn next_get(&self) -> Option<PyTracebackRef> { self.next.as_ref().cloned() } } impl PyTracebackRef { pub fn iter<'a>(&'a self) -> impl Iterator<Item = PyTracebackRef> + 'a { std::iter::successors(Some(self.clone()), |tb| tb.next.clone()) } } pub fn init(context: &PyContext) { PyTraceback::extend_class(context, &context.types.traceback_type); } impl serde::Serialize for PyTraceback { fn serialize<S: serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> { use serde::ser::SerializeStruct; let mut struc = s.serialize_struct("PyTraceback", 3)?; struc.serialize_field("name", &self.frame.code.obj_name)?; struc.serialize_field("lineno", &self.lineno)?; struc.serialize_field("filename", &self.frame.code.source_path)?; struc.end() } } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |