From ca38133b06bfffa62ebee216d1c9f1bbd5cbeeaf Mon Sep 17 00:00:00 2001 From: Joshua Suskalo Date: Wed, 15 Sep 2021 12:40:08 -0500 Subject: [PATCH] Add basic serialize implementations --- src/coffi/ffi.clj | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/coffi/ffi.clj b/src/coffi/ffi.clj index a7541c2..ab4bdfc 100644 --- a/src/coffi/ffi.clj +++ b/src/coffi/ffi.clj @@ -24,6 +24,42 @@ [obj type segment scope] type)) +(defmethod serialize* ::byte + [obj _type segment _scope] + (MemoryAccess/setByte segment (byte obj))) + +(defmethod serialize* ::short + [obj _type segment _scope] + (MemoryAccess/setShort segment (short obj))) + +(defmethod serialize* ::int + [obj _type segment _scope] + (MemoryAccess/setInt segment (int obj))) + +(defmethod serialize* ::long + [obj _type segment _scope] + (MemoryAccess/setLong segment (long obj))) + +(defmethod serialize* ::long-long + [obj _type segment _scope] + (MemoryAccess/setLong segment (long obj))) + +(defmethod serialize* ::char + [obj _type segment _scope] + (MemoryAccess/setChar segment (char obj))) + +(defmethod serialize* ::float + [obj _type segment _scope] + (MemoryAccess/setFloat segment (float obj))) + +(defmethod serialize* ::double + [obj _type segment _scope] + (MemoryAccess/setDouble segment (double obj))) + +(defmethod serialize* ::pointer + [obj _type segment _scope] + (MemoryAccess/setAddress segment obj)) + (defmulti deserialize "Deserializes the given object into a Clojure data structure." (fn