Skip to content
Snippets Groups Projects
Select Git revision
  • bug-collection
  • master default protected
2 results

CreateTruthTableDirectSync.scala

Blame
  • CreateTruthTableDirectSync.scala 1.67 KiB
    package ttc2019
    
    import sync.tt._
    import org.eclipse.emf.ecore.EObject
    
    /**
     * Create the instances of the truth table in Scala. 
     * 
     * @author Christopher Werner
     */
    class CreateTruthTableDirectSync extends ICreateTruthTable {
      
      var truthttable: TruthTable = null
      var rows: java.util.Map[EObject, Row] = new java.util.HashMap()
      var cells: java.util.Map[EObject, Cell] = new java.util.HashMap()
      var ports: java.util.Map[EObject, Port] = new java.util.HashMap()
      
      def createTruthTable(name: String, id: EObject): Unit = {
        truthttable = new TruthTable(name, Set.empty, Set.empty, null)
      }
      
      def createInputPort(name: String, id: EObject): Unit = {
        ports.put(id, new InputPort(name, Set.empty, null, null))
      }
      
      def createOutputPort(name: String, id: EObject): Unit = {
        ports.put(id, new OutputPort(name, Set.empty, null, null))
      }
      
      def createRow(id: EObject): Unit = {
        rows.put(id, new Row(Set.empty, null, null))
      }
      
      def createCell(value: Boolean, id: EObject): Unit = {
        cells.put(id, new Cell(value, null, null, null))
      }
      
      def createTruthTableRowsRow(tt: EObject, row: EObject): Unit = {
        val r = rows.get(row)
        truthttable.addRows(r)
        r.setOwner(truthttable)
      }
      
      def createTruthTablePortsPort(tt: EObject, port: EObject): Unit = {
        val p = ports.get(port)
        truthttable.addPorts(p)
        p.setOwner(truthttable)
      }
      
      def createRowCellsCell(row: EObject, cell: EObject): Unit = {
        val c = cells.get(cell)
        val r = rows.get(row)
        c.setOwner(r)
        r.addCells(c)
      }
      
      def createCellPortPort(cell: EObject, port: EObject): Unit = {
        val c = cells.get(cell)
        val p = ports.get(port)
        c.setPort(p)
        p.addCells(c)
      }
    }