1 package net.mograsim.logic.model.util;
3 import java.lang.reflect.Type;
5 import com.google.gson.JsonDeserializationContext;
6 import com.google.gson.JsonDeserializer;
7 import com.google.gson.JsonElement;
8 import com.google.gson.JsonParseException;
9 import com.google.gson.JsonPrimitive;
10 import com.google.gson.JsonSerializationContext;
11 import com.google.gson.JsonSerializer;
13 import net.mograsim.logic.core.types.Bit;
14 import net.mograsim.logic.core.types.BitVector;
16 public class BitVectorAdapter implements JsonSerializer<BitVector>, JsonDeserializer<BitVector>
19 public JsonElement serialize(BitVector src, Type typeOfSrc, JsonSerializationContext context)
21 return new JsonPrimitive(src.toBitstring());
25 public BitVector deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException
27 if (!typeOfT.equals(BitVector.class))
28 throw new JsonParseException("Type mismatch");
29 if (json.isJsonPrimitive())
30 // don't check for isString, because the "input" could consist solely of ones and zeroes.
31 return BitVector.parseBitstring(json.getAsString());
33 return BitVector.of(((BitVectorPrimitive) context.deserialize(json, BitVectorPrimitive.class)).bits);
36 private static class BitVectorPrimitive