miri::shims::files

Trait FileDescription

Source
pub trait FileDescription: Debug + Any {
    // Required method
    fn name(&self) -> &'static str;

    // Provided methods
    fn read<'tcx>(
        &self,
        _self_ref: &FileDescriptionRef,
        _communicate_allowed: bool,
        _ptr: Pointer,
        _len: usize,
        _dest: &MPlaceTy<'tcx>,
        _ecx: &mut MiriInterpCx<'tcx>,
    ) -> InterpResult<'tcx> { ... }
    fn write<'tcx>(
        &self,
        _self_ref: &FileDescriptionRef,
        _communicate_allowed: bool,
        _ptr: Pointer,
        _len: usize,
        _dest: &MPlaceTy<'tcx>,
        _ecx: &mut MiriInterpCx<'tcx>,
    ) -> InterpResult<'tcx> { ... }
    fn seek<'tcx>(
        &self,
        _communicate_allowed: bool,
        _offset: SeekFrom,
    ) -> InterpResult<'tcx, Result<u64>> { ... }
    fn close<'tcx>(
        self: Box<Self>,
        _communicate_allowed: bool,
        _ecx: &mut MiriInterpCx<'tcx>,
    ) -> InterpResult<'tcx, Result<()>> { ... }
    fn metadata<'tcx>(&self) -> InterpResult<'tcx, Result<Metadata>> { ... }
    fn is_tty(&self, _communicate_allowed: bool) -> bool { ... }
    fn as_unix(&self) -> &dyn UnixFileDescription { ... }
}
Expand description

Represents an open file description.

Required Methods§

Source

fn name(&self) -> &'static str

Provided Methods§

Source

fn read<'tcx>( &self, _self_ref: &FileDescriptionRef, _communicate_allowed: bool, _ptr: Pointer, _len: usize, _dest: &MPlaceTy<'tcx>, _ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx>

Reads as much as possible into the given buffer ptr. len indicates how many bytes we should try to read. dest is where the return value should be stored: number of bytes read, or -1 in case of error.

Source

fn write<'tcx>( &self, _self_ref: &FileDescriptionRef, _communicate_allowed: bool, _ptr: Pointer, _len: usize, _dest: &MPlaceTy<'tcx>, _ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx>

Writes as much as possible from the given buffer ptr. len indicates how many bytes we should try to write. dest is where the return value should be stored: number of bytes written, or -1 in case of error.

Source

fn seek<'tcx>( &self, _communicate_allowed: bool, _offset: SeekFrom, ) -> InterpResult<'tcx, Result<u64>>

Seeks to the given offset (which can be relative to the beginning, end, or current position). Returns the new position from the start of the stream.

Source

fn close<'tcx>( self: Box<Self>, _communicate_allowed: bool, _ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx, Result<()>>

Source

fn metadata<'tcx>(&self) -> InterpResult<'tcx, Result<Metadata>>

Source

fn is_tty(&self, _communicate_allowed: bool) -> bool

Source

fn as_unix(&self) -> &dyn UnixFileDescription

Implementations§

Source§

impl dyn FileDescription

Source

pub fn downcast<T: Any>(&self) -> Option<&T>

Implementations on Foreign Types§

Source§

impl FileDescription for Stderr

Source§

fn name(&self) -> &'static str

Source§

fn write<'tcx>( &self, _self_ref: &FileDescriptionRef, _communicate_allowed: bool, ptr: Pointer, len: usize, dest: &MPlaceTy<'tcx>, ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx>

Source§

fn is_tty(&self, communicate_allowed: bool) -> bool

Source§

impl FileDescription for Stdin

Source§

fn name(&self) -> &'static str

Source§

fn read<'tcx>( &self, _self_ref: &FileDescriptionRef, communicate_allowed: bool, ptr: Pointer, len: usize, dest: &MPlaceTy<'tcx>, ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx>

Source§

fn is_tty(&self, communicate_allowed: bool) -> bool

Source§

impl FileDescription for Stdout

Source§

fn name(&self) -> &'static str

Source§

fn write<'tcx>( &self, _self_ref: &FileDescriptionRef, _communicate_allowed: bool, ptr: Pointer, len: usize, dest: &MPlaceTy<'tcx>, ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx>

Source§

fn is_tty(&self, communicate_allowed: bool) -> bool

Implementors§