pub trait EvalContextExt<'tcx>: MiriInterpCxExt<'tcx> {
Show 16 methods
// Provided methods
fn read_os_str_from_c_str<'a>(
&'a self,
ptr: Pointer,
) -> InterpResult<'tcx, &'a OsStr>
where 'tcx: 'a { ... }
fn read_os_str_from_wide_str<'a>(
&'a self,
ptr: Pointer,
) -> InterpResult<'tcx, OsString>
where 'tcx: 'a { ... }
fn write_os_str_to_c_str(
&mut self,
os_str: &OsStr,
ptr: Pointer,
size: u64,
) -> InterpResult<'tcx, (bool, u64)> { ... }
fn write_os_str_to_wide_str_helper(
&mut self,
os_str: &OsStr,
ptr: Pointer,
size: u64,
truncate: bool,
) -> InterpResult<'tcx, (bool, u64)> { ... }
fn write_os_str_to_wide_str(
&mut self,
os_str: &OsStr,
ptr: Pointer,
size: u64,
) -> InterpResult<'tcx, (bool, u64)> { ... }
fn write_os_str_to_wide_str_truncated(
&mut self,
os_str: &OsStr,
ptr: Pointer,
size: u64,
) -> InterpResult<'tcx, (bool, u64)> { ... }
fn alloc_os_str_as_c_str(
&mut self,
os_str: &OsStr,
memkind: MemoryKind,
) -> InterpResult<'tcx, Pointer> { ... }
fn alloc_os_str_as_wide_str(
&mut self,
os_str: &OsStr,
memkind: MemoryKind,
) -> InterpResult<'tcx, Pointer> { ... }
fn read_path_from_c_str<'a>(
&'a self,
ptr: Pointer,
) -> InterpResult<'tcx, Cow<'a, Path>>
where 'tcx: 'a { ... }
fn read_path_from_wide_str(
&self,
ptr: Pointer,
) -> InterpResult<'tcx, PathBuf> { ... }
fn write_path_to_c_str(
&mut self,
path: &Path,
ptr: Pointer,
size: u64,
) -> InterpResult<'tcx, (bool, u64)> { ... }
fn write_path_to_wide_str(
&mut self,
path: &Path,
ptr: Pointer,
size: u64,
) -> InterpResult<'tcx, (bool, u64)> { ... }
fn write_path_to_wide_str_truncated(
&mut self,
path: &Path,
ptr: Pointer,
size: u64,
) -> InterpResult<'tcx, (bool, u64)> { ... }
fn alloc_path_as_c_str(
&mut self,
path: &Path,
memkind: MemoryKind,
) -> InterpResult<'tcx, Pointer> { ... }
fn alloc_path_as_wide_str(
&mut self,
path: &Path,
memkind: MemoryKind,
) -> InterpResult<'tcx, Pointer> { ... }
fn convert_path<'a>(
&self,
os_str: Cow<'a, OsStr>,
direction: PathConversion,
) -> Cow<'a, OsStr> { ... }
}
Provided Methods§
Sourcefn read_os_str_from_c_str<'a>(
&'a self,
ptr: Pointer,
) -> InterpResult<'tcx, &'a OsStr>where
'tcx: 'a,
fn read_os_str_from_c_str<'a>(
&'a self,
ptr: Pointer,
) -> InterpResult<'tcx, &'a OsStr>where
'tcx: 'a,
Helper function to read an OsString from a null-terminated sequence of bytes, which is what the Unix APIs usually handle.
Sourcefn read_os_str_from_wide_str<'a>(
&'a self,
ptr: Pointer,
) -> InterpResult<'tcx, OsString>where
'tcx: 'a,
fn read_os_str_from_wide_str<'a>(
&'a self,
ptr: Pointer,
) -> InterpResult<'tcx, OsString>where
'tcx: 'a,
Helper function to read an OsString from a 0x0000-terminated sequence of u16, which is what the Windows APIs usually handle.
Sourcefn write_os_str_to_c_str(
&mut self,
os_str: &OsStr,
ptr: Pointer,
size: u64,
) -> InterpResult<'tcx, (bool, u64)>
fn write_os_str_to_c_str( &mut self, os_str: &OsStr, ptr: Pointer, size: u64, ) -> InterpResult<'tcx, (bool, u64)>
Helper function to write an OsStr as a null-terminated sequence of bytes, which is what the
Unix APIs usually handle. Returns (success, full_len)
, where length includes the null
terminator. On failure, nothing is written.
Sourcefn write_os_str_to_wide_str_helper(
&mut self,
os_str: &OsStr,
ptr: Pointer,
size: u64,
truncate: bool,
) -> InterpResult<'tcx, (bool, u64)>
fn write_os_str_to_wide_str_helper( &mut self, os_str: &OsStr, ptr: Pointer, size: u64, truncate: bool, ) -> InterpResult<'tcx, (bool, u64)>
Internal helper to share code between write_os_str_to_wide_str
and
write_os_str_to_wide_str_truncated
.
Sourcefn write_os_str_to_wide_str(
&mut self,
os_str: &OsStr,
ptr: Pointer,
size: u64,
) -> InterpResult<'tcx, (bool, u64)>
fn write_os_str_to_wide_str( &mut self, os_str: &OsStr, ptr: Pointer, size: u64, ) -> InterpResult<'tcx, (bool, u64)>
Helper function to write an OsStr as a 0x0000-terminated u16-sequence, which is what the
Windows APIs usually handle. Returns (success, full_len)
, where length is measured
in units of u16
and includes the null terminator. On failure, nothing is written.
Sourcefn write_os_str_to_wide_str_truncated(
&mut self,
os_str: &OsStr,
ptr: Pointer,
size: u64,
) -> InterpResult<'tcx, (bool, u64)>
fn write_os_str_to_wide_str_truncated( &mut self, os_str: &OsStr, ptr: Pointer, size: u64, ) -> InterpResult<'tcx, (bool, u64)>
Like write_os_str_to_wide_str
, but on failure as much as possible is written into
the buffer (always with a null terminator).
Sourcefn alloc_os_str_as_c_str(
&mut self,
os_str: &OsStr,
memkind: MemoryKind,
) -> InterpResult<'tcx, Pointer>
fn alloc_os_str_as_c_str( &mut self, os_str: &OsStr, memkind: MemoryKind, ) -> InterpResult<'tcx, Pointer>
Allocate enough memory to store the given OsStr
as a null-terminated sequence of bytes.
Sourcefn alloc_os_str_as_wide_str(
&mut self,
os_str: &OsStr,
memkind: MemoryKind,
) -> InterpResult<'tcx, Pointer>
fn alloc_os_str_as_wide_str( &mut self, os_str: &OsStr, memkind: MemoryKind, ) -> InterpResult<'tcx, Pointer>
Allocate enough memory to store the given OsStr
as a null-terminated sequence of u16
.
Sourcefn read_path_from_c_str<'a>(
&'a self,
ptr: Pointer,
) -> InterpResult<'tcx, Cow<'a, Path>>where
'tcx: 'a,
fn read_path_from_c_str<'a>(
&'a self,
ptr: Pointer,
) -> InterpResult<'tcx, Cow<'a, Path>>where
'tcx: 'a,
Read a null-terminated sequence of bytes, and perform path separator conversion if needed.
Sourcefn read_path_from_wide_str(&self, ptr: Pointer) -> InterpResult<'tcx, PathBuf>
fn read_path_from_wide_str(&self, ptr: Pointer) -> InterpResult<'tcx, PathBuf>
Read a null-terminated sequence of u16
s, and perform path separator conversion if needed.
Sourcefn write_path_to_c_str(
&mut self,
path: &Path,
ptr: Pointer,
size: u64,
) -> InterpResult<'tcx, (bool, u64)>
fn write_path_to_c_str( &mut self, path: &Path, ptr: Pointer, size: u64, ) -> InterpResult<'tcx, (bool, u64)>
Write a Path to the machine memory (as a null-terminated sequence of bytes), adjusting path separators if needed.
Sourcefn write_path_to_wide_str(
&mut self,
path: &Path,
ptr: Pointer,
size: u64,
) -> InterpResult<'tcx, (bool, u64)>
fn write_path_to_wide_str( &mut self, path: &Path, ptr: Pointer, size: u64, ) -> InterpResult<'tcx, (bool, u64)>
Write a Path to the machine memory (as a null-terminated sequence of u16
s),
adjusting path separators if needed.
Sourcefn write_path_to_wide_str_truncated(
&mut self,
path: &Path,
ptr: Pointer,
size: u64,
) -> InterpResult<'tcx, (bool, u64)>
fn write_path_to_wide_str_truncated( &mut self, path: &Path, ptr: Pointer, size: u64, ) -> InterpResult<'tcx, (bool, u64)>
Write a Path to the machine memory (as a null-terminated sequence of u16
s),
adjusting path separators if needed.
Sourcefn alloc_path_as_c_str(
&mut self,
path: &Path,
memkind: MemoryKind,
) -> InterpResult<'tcx, Pointer>
fn alloc_path_as_c_str( &mut self, path: &Path, memkind: MemoryKind, ) -> InterpResult<'tcx, Pointer>
Allocate enough memory to store a Path as a null-terminated sequence of bytes, adjusting path separators if needed.
Sourcefn alloc_path_as_wide_str(
&mut self,
path: &Path,
memkind: MemoryKind,
) -> InterpResult<'tcx, Pointer>
fn alloc_path_as_wide_str( &mut self, path: &Path, memkind: MemoryKind, ) -> InterpResult<'tcx, Pointer>
Allocate enough memory to store a Path as a null-terminated sequence of u16
s,
adjusting path separators if needed.