/*******************************************************************************
* This file is part of logisim-evolution.
*
* logisim-evolution is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* logisim-evolution is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with logisim-evolution. If not, see <http://www.gnu.org/licenses/>.
*
* Original code by Carl Burch (http://www.cburch.com), 2011.
* Subsequent modifications by :
* + Haute École Spécialisée Bernoise
* http://www.bfh.ch
* + Haute École du paysage, d'ingénierie et d'architecture de Genève
* http://hepia.hesge.ch/
* + Haute École d'Ingénierie et de Gestion du Canton de Vaud
* http://www.heig-vd.ch/
* The project is currently maintained by :
* + REDS Institute - HEIG-VD
* Yverdon-les-Bains, Switzerland
* http://reds.heig-vd.ch
*******************************************************************************/
package com.bfh.logisim.hdlgenerator;
import java.util.ArrayList;
import com.bfh.logisim.fpgaboardeditor.FPGAIOInformationContainer;
public class IOComponentInformationContainer {
private int NrOfInputBubbles;
private int NrOfInOutBubbles;
private int NrOfOutputBubbles;
private ArrayList<String> InputBubbleLabels;
private ArrayList<String> InOutBubbleLabels;
private ArrayList<String> OutputBubbleLabels;
private FPGAIOInformationContainer.IOComponentTypes MainMapType;
private ArrayList<FPGAIOInformationContainer.IOComponentTypes> AlternateMapTypes;
public IOComponentInformationContainer(int inports, int outports,
int inoutports, ArrayList<String> inportLabels,
ArrayList<String> outportLabels, ArrayList<String> inoutportLabels,
FPGAIOInformationContainer.IOComponentTypes MapType) {
NrOfInputBubbles = inports;
NrOfOutputBubbles = outports;
NrOfInOutBubbles = inoutports;
InputBubbleLabels = inportLabels;
OutputBubbleLabels = outportLabels;
InOutBubbleLabels = inoutportLabels;
MainMapType = MapType;
AlternateMapTypes = new ArrayList<FPGAIOInformationContainer.IOComponentTypes>();
}
public IOComponentInformationContainer(int inports, int outports,
int inoutport, FPGAIOInformationContainer.IOComponentTypes MapType) {
NrOfInputBubbles = inports;
NrOfOutputBubbles = outports;
NrOfInOutBubbles = inoutport;
InputBubbleLabels = null;
OutputBubbleLabels = null;
InOutBubbleLabels = null;
MainMapType = MapType;
AlternateMapTypes = new ArrayList<FPGAIOInformationContainer.IOComponentTypes>();
}
public void AddAlternateMapType(
FPGAIOInformationContainer.IOComponentTypes map) {
AlternateMapTypes.add(map);
}
public IOComponentInformationContainer clone() {
IOComponentInformationContainer Myclone = new IOComponentInformationContainer(
NrOfInputBubbles, NrOfOutputBubbles, NrOfInOutBubbles,
InputBubbleLabels, OutputBubbleLabels, InOutBubbleLabels,
MainMapType);
for (FPGAIOInformationContainer.IOComponentTypes Alt : AlternateMapTypes) {
Myclone.AddAlternateMapType(Alt);
}
return Myclone;
}
public FPGAIOInformationContainer.IOComponentTypes GetAlternateMapType(
int id) {
if (id >= AlternateMapTypes.size()) {
return FPGAIOInformationContainer.IOComponentTypes.Unknown;
} else {
return AlternateMapTypes.get(id);
}
}
public String GetInOutportLabel(int inoutNr) {
if (InOutBubbleLabels == null) {
return Integer.toString(inoutNr);
}
if (InOutBubbleLabels.size() <= inoutNr) {
return Integer.toString(inoutNr);
}
return InOutBubbleLabels.get(inoutNr);
}
public String GetInportLabel(int inputNr) {
if (InputBubbleLabels == null) {
return AlternateMapTypes.get(0).name() + Integer.toString(inputNr);
}
if (InputBubbleLabels.size() <= inputNr) {
return Integer.toString(inputNr);
}
return InputBubbleLabels.get(inputNr);
}
public FPGAIOInformationContainer.IOComponentTypes GetMainMapType() {
return MainMapType;
}
public int GetNrOfInOutports() {
return NrOfInOutBubbles;
}
public int GetNrOfInports() {
return NrOfInputBubbles;
}
public int GetNrOfOutports() {
return NrOfOutputBubbles;
}
public String GetOutportLabel(int outputNr) {
if (OutputBubbleLabels == null) {
return AlternateMapTypes.get(0).name() + Integer.toString(outputNr);
}
if (OutputBubbleLabels.size() <= outputNr) {
return Integer.toString(outputNr);
}
return OutputBubbleLabels.get(outputNr);
}
public boolean HasAlternateMapTypes() {
return !AlternateMapTypes.isEmpty();
}
public void setNrOfInOutports(int nb, ArrayList<String> labels) {
NrOfInOutBubbles = nb;
InOutBubbleLabels = labels;
}
public void setNrOfInports(int nb, ArrayList<String> labels) {
NrOfInputBubbles = nb;
InputBubbleLabels = labels;
}
}