101 lines
2.8 KiB
Java
101 lines
2.8 KiB
Java
/*
|
|
* 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.
|
|
*
|
|
* NetList.java
|
|
*
|
|
* Created on 19. Mai 2004, 09:05
|
|
*/
|
|
|
|
package designformats.specctra;
|
|
|
|
import java.util.Collection;
|
|
import java.util.Iterator;
|
|
import java.util.Map;
|
|
import java.util.TreeMap;
|
|
import java.util.Set;
|
|
|
|
/**
|
|
* Describes a list of nets sorted by its names.
|
|
* The net number is generated internally.
|
|
*
|
|
* @author alfons
|
|
*/
|
|
public class NetList
|
|
{
|
|
|
|
/**
|
|
* Returns true, if the netlist contains a net with the input name.
|
|
*/
|
|
public boolean contains(Net.Id p_net_id)
|
|
{
|
|
return nets.containsKey(p_net_id);
|
|
}
|
|
|
|
/**
|
|
* Adds a new net mit the input name to the net list.
|
|
* Returns null, if a net with p_name already exists in the net list.
|
|
* In this case no new net is added.
|
|
*/
|
|
public Net add_net(Net.Id p_net_id)
|
|
{
|
|
Net result;
|
|
if (nets.containsKey(p_net_id))
|
|
{
|
|
result = null;
|
|
}
|
|
else
|
|
{
|
|
result = new Net(p_net_id);
|
|
nets.put(p_net_id, result);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Returns the net with the input name, or null,
|
|
* if the netlist does not contain a net with the input name.
|
|
*/
|
|
public Net get_net(Net.Id p_net_id)
|
|
{
|
|
Object value = nets.get(p_net_id);
|
|
return ((Net) value);
|
|
}
|
|
|
|
/**
|
|
* Returns all nets in this net list containing the input pin.
|
|
*/
|
|
public Collection<Net> get_nets(String p_component_name, String p_pin_name)
|
|
{
|
|
Collection<Net> result = new java.util.LinkedList<Net>();
|
|
Net.Pin search_pin = new Net.Pin(p_component_name, p_pin_name);
|
|
Collection<Net> net_list = nets.values();
|
|
Iterator<Net> it = net_list.iterator();
|
|
while (it.hasNext())
|
|
{
|
|
Net curr_net = it.next();
|
|
Set<Net.Pin> net_pins = curr_net.get_pins();
|
|
if (net_pins != null && net_pins.contains(search_pin))
|
|
{
|
|
result.add(curr_net);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/** The entries of this map are of type Net, the keys are the net_ids. */
|
|
private final Map<Net.Id, Net> nets = new TreeMap<Net.Id, Net>();
|
|
|
|
}
|