From 6963591f4fe7c4a06f2af9cd34774c2df0e5b289 Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Mon, 4 Apr 2022 08:19:21 +0200 Subject: [PATCH] add backend --- src/backend.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/backend.rs diff --git a/src/backend.rs b/src/backend.rs new file mode 100644 index 0000000..8de199f --- /dev/null +++ b/src/backend.rs @@ -0,0 +1,33 @@ +use sptr::Strict; + +pub trait Backend { + type Stored: Copy; + + fn get_ptr(s: Self::Stored) -> (*mut T, Self); + + fn set_ptr(provenance: *mut T, addr: Self) -> Self::Stored; + + fn get_int(s: Self::Stored) -> Self; + + fn set_int(s: Self::Stored, int: Self) -> Self::Stored; +} + +impl Backend for usize { + type Stored = *mut T; + + fn get_ptr(s: Self::Stored) -> (*mut T, Self) { + (s, Strict::addr(s)) + } + + fn set_ptr(provenance: *mut T, addr: Self) -> Self::Stored { + Strict::with_addr(provenance, addr) + } + + fn get_int(s: Self::Stored) -> Self { + Strict::addr(s) + } + + fn set_int(s: Self::Stored, int: Self) -> Self::Stored { + Strict::with_addr(s, int) + } +}