/* * Copyright (C) 2014 Alfons Wirtz * website www.freerouting.net * * This program 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. * * This program 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 at <http://www.gnu.org/licenses/> * for more details. * * LogicalPart.java * * Created on 26. Maerz 2005, 06:14 */ package library; /** * Contains contain information for gate swap and pin swap for a single component. * * @author Alfons Wirtz */ public class LogicalPart implements board.ObjectInfoPanel.Printable, java.io.Serializable { /** * Creates a new instance of LogicalPart. * The part pins are sorted by pin_no. * The pin_no's of the part pins must be the same number as in the componnents library package. */ public LogicalPart(String p_name, int p_no, PartPin[] p_part_pin_arr) { name = p_name; no = p_no; part_pin_arr = p_part_pin_arr; } public int pin_count() { return part_pin_arr.length; } /** Returns the pim with index p_no. Pin numbers are from 0 to pin_count - 1 */ public PartPin get_pin(int p_no) { if (p_no < 0 || p_no >= part_pin_arr.length) { System.out.println("LogicalPart.get_pin: p_no out of range"); return null; } return part_pin_arr[p_no]; } public void print_info(board.ObjectInfoPanel p_window, java.util.Locale p_locale) { java.util.ResourceBundle resources = java.util.ResourceBundle.getBundle("board.resources.ObjectInfoPanel", p_locale); p_window.append_bold(resources.getString("logical_part_2") + " "); p_window.append_bold(this.name); for (int i = 0; i < this.part_pin_arr.length; ++i) { PartPin curr_pin = this.part_pin_arr[i]; p_window.newline(); p_window.indent(); p_window.append(resources.getString("pin") + " "); p_window.append(curr_pin.pin_name); p_window.append(", " + resources.getString("gate") + " "); p_window.append(curr_pin.gate_name); p_window.append(", " + resources.getString("swap_code") + " "); Integer gate_swap_code = curr_pin.gate_swap_code; p_window.append(gate_swap_code.toString()); p_window.append(", " + resources.getString("gate_pin") + " "); p_window.append(curr_pin.gate_pin_name); p_window.append(", " + resources.getString("swap_code") + " "); Integer pin_swap_code = curr_pin.gate_pin_swap_code; p_window.append(pin_swap_code.toString()); } p_window.newline(); p_window.newline(); } public final String name; public final int no; private final PartPin [] part_pin_arr; public static class PartPin implements Comparable<PartPin>, java.io.Serializable { public PartPin(int p_pin_no, String p_pin_name, String p_gate_name, int p_gate_swap_code, String p_gate_pin_name, int p_gate_pin_swap_code) { pin_no = p_pin_no; pin_name = p_pin_name; gate_name = p_gate_name; gate_swap_code = p_gate_swap_code; gate_pin_name = p_gate_pin_name; gate_pin_swap_code = p_gate_pin_swap_code; } public int compareTo(PartPin p_other) { return this.pin_no - p_other.pin_no; } /** The number of the part pin. Must be the same number as in the componnents library package. */ public final int pin_no; /** The name of the part pin. Must be the same name as in the componnents library package. */ public final String pin_name; /** The name of the gate this pin belongs to. */ public final String gate_name; /** * The gate swap code. Gates with the same gate swap code can be swapped. * Gates with swap code <= 0 are not swappable. */ public final int gate_swap_code; /** The identifier of the pin in the gate. */ public final String gate_pin_name; /** * The pin swap code of the gate. Pins with the same pin swap code can be swapped inside a gate. * Pins with swap code <= 0 are not swappable. */ public final int gate_pin_swap_code; } }