/* * 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. * * LayerStructure.java * * Created on 26. Mai 2004, 06:37 */ package board; /** * Describes the layer structure of the board. * * @author alfons */ public class LayerStructure implements java.io.Serializable { /** Creates a new instance of LayerStructure */ public LayerStructure(Layer [] p_layer_arr) { arr = p_layer_arr; } /** * Returns the index of the layer with the name p_name in the array arr, * -1, if arr contains no layer with name p_name. */ public int get_no(String p_name) { for (int i = 0; i < arr.length; ++i) { if (p_name.equals(arr[i].name)) { return i; } } return -1; } /** * Returns the index of p_layer in the array arr, * or -1, if arr does not contain p_layer. */ public int get_no(Layer p_layer) { for (int i = 0; i < arr.length; ++i) { if (p_layer == arr[i]) { return i; } } return -1; } /** * Returns the count of signal layers of this layer_structure. */ public int signal_layer_count() { int found_signal_layers = 0; for (int i = 0; i < arr.length; ++i) { if (arr[i].is_signal) { ++found_signal_layers; } } return found_signal_layers; } /** * Gets the p_no-th signal layer of this layer structure. */ public Layer get_signal_layer(int p_no) { int found_signal_layers = 0; for (int i = 0; i < arr.length; ++i) { if (arr[i].is_signal) { if (p_no == found_signal_layers) { return arr[i]; } ++found_signal_layers; } } return arr[arr.length - 1]; } /** * Returns the count of signal layers with a smaller number than p_layer */ public int get_signal_layer_no(Layer p_layer) { int found_signal_layers = 0; for (int i = 0; i < arr.length; ++i) { if (arr[i] == p_layer) { return found_signal_layers; } if (arr[i].is_signal) { ++found_signal_layers; } } return -1; } /** * Gets the layer number of the p_signal_layer_no-th signal layer in this layer structure */ public int get_layer_no (int p_signal_layer_no) { Layer curr_signal_layer = get_signal_layer(p_signal_layer_no); return get_no(curr_signal_layer); } public final Layer [] arr; }