The final restructured version for automatic build using maven tycho
[Mograsim.git] / net.mograsim.logic.core / src / net / mograsim / logic / core / types / Bit.java
diff --git a/net.mograsim.logic.core/src/net/mograsim/logic/core/types/Bit.java b/net.mograsim.logic.core/src/net/mograsim/logic/core/types/Bit.java
deleted file mode 100644 (file)
index 752fbb8..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-package net.mograsim.logic.core.types;
-
-import java.util.Arrays;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * stdlogic according to IEEE 1164
- */
-public enum Bit implements StrictLogicType<Bit>
-{
-       U("U"), X("X"), ZERO("0"), ONE("1"), Z("Z");
-
-       private final String symbol;
-
-       private Bit(String symbol)
-       {
-               this.symbol = symbol;
-       }
-
-       /**
-        * Returns if the Bit is binary, this is only true for <code>ZERO</code> and <code>ONE</code>.
-        * 
-        * @return true if and only if <code>this == ONE || this == ZERO</code>
-        */
-       public boolean isBinary()
-       {
-               return this == ONE || this == ZERO;
-       }
-
-       @Override
-       public Bit and(Bit other)
-       {
-               return fromTable(AND_TABLE, this, other);
-       }
-
-       public static void and(Bit[] dst, Bit[] src)
-       {
-               for (int i = 0; i < dst.length; i++)
-                       dst[i] = dst[i].and(src[i]);
-       }
-
-       @Override
-       public Bit or(Bit other)
-       {
-               return fromTable(OR_TABLE, this, other);
-       }
-
-       public static void or(Bit[] dst, Bit[] src)
-       {
-               for (int i = 0; i < dst.length; i++)
-                       dst[i] = dst[i].or(src[i]);
-       }
-
-       @Override
-       public Bit xor(Bit other)
-       {
-               return fromTable(XOR_TABLE, this, other);
-       }
-
-       public static void xor(Bit[] dst, Bit[] src)
-       {
-               for (int i = 0; i < dst.length; i++)
-                       dst[i] = dst[i].xor(src[i]);
-       }
-
-       @Override
-       public Bit not()
-       {
-               switch (this)
-               {
-               case U:
-                       return U;
-               case ONE:
-                       return ZERO;
-               case ZERO:
-                       return ONE;
-               default:
-                       return X;
-               }
-       }
-
-       public Bit[] makeArray(int length)
-       {
-               Bit[] bits = new Bit[length];
-               Arrays.fill(bits, this);
-               return bits;
-       }
-
-       public BitVector toVector()
-       {
-               return BitVector.of(this, 1);
-       }
-
-       public BitVector toVector(int length)
-       {
-               return BitVector.of(this, length);
-       }
-
-       @Override
-       public Bit join(Bit other)
-       {
-               return fromTable(JOIN_TABLE, this, other);
-       }
-
-       public static void join(Bit[] dst, Bit[] src)
-       {
-               for (int i = 0; i < dst.length; i++)
-                       dst[i] = dst[i].join(src[i]);
-       }
-
-       @Override
-       public String toString()
-       {
-               return getSymbol();
-       }
-
-       public String getSymbol()
-       {
-               return symbol;
-       }
-
-       public static Bit lastBitOf(int value)
-       {
-               return values()[2 + (value & 1)];
-       }
-
-       public static Bit of(boolean binaryValue)
-       {
-               return binaryValue ? ONE : ZERO;
-       }
-
-       public static Bit parse(String s)
-       {
-               Bit bit = SYMBOL_MAP.get(s);
-               Objects.requireNonNull(bit, "No Bit found for symbol " + s);
-               return bit;
-       }
-
-       public static Bit parse(String s, int symbolPosition)
-       {
-               return parse(s.substring(symbolPosition, symbolPosition + 1));
-       }
-
-       private static Bit fromTable(Bit[][] table, Bit a, Bit b)
-       {
-               return table[a.ordinal()][b.ordinal()];
-       }
-
-       static final Map<String, Bit> SYMBOL_MAP = Map.of(U.symbol, U, X.symbol, X, ZERO.symbol, ZERO, ONE.symbol, ONE, Z.symbol, Z);
-
-       // @formatter:off
-       private static final Bit[][] JOIN_TABLE = 
-               { { U, U, U,    U,   U    }, 
-                 { U, X, X,    X,   X    }, 
-                 { U, X, ZERO, X,   ZERO },
-                 { U, X, X,    ONE, ONE  }, 
-                 { U, X, ZERO, ONE, Z    } };
-
-       private static final Bit[][] AND_TABLE = 
-               { { U,    U,    ZERO, U,    U    }, 
-                 { U,    X,    ZERO, X,    X    },
-                 { ZERO, ZERO, ZERO, ZERO, ZERO }, 
-                 { U,    X,    ZERO, ONE,  X    }, 
-                 { U,    X,    ZERO, X,    X    } };
-
-       private static final Bit[][] OR_TABLE =
-       { { U,   U,   U,    ONE, U    },    
-         { U,   X,   X,    ONE, X    },    
-         { U,   X,   ZERO, ONE, X    },    
-         { ONE, ONE, ONE,  ONE, ONE  },    
-         { U,   X,   X,    ONE, X    } };
-       
-       private static final Bit[][] XOR_TABLE =
-       { { U, U, U,    U,    U },    
-         { U, X, X,    X,    X },    
-         { U, X, ZERO, ONE,  X },    
-         { U, X, ONE,  ZERO, X },    
-         { U, X, X,    X,    X } }; 
-       // @formatter:on
-}
\ No newline at end of file