⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 portcharacteristic.java

📁 The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
💻 JAVA
字号:
/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: PortCharacteristic.java * * Copyright (c) 2003 Sun Microsystems and Static Free Software * * Electric(tm) 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. * * Electric(tm) 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 Electric(tm); see the file COPYING.  If not, write to * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, Mass 02111-1307, USA. */package com.sun.electric.database.prototype;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;/** * PortCharacteristic is a typesafe enum class that describes the function of a PortProto. * PortCharacteristics are technology-independent and describe the nature of the port (input, output, etc.) */public enum PortCharacteristic{	/** Describes an unknown port. */                   UNKNOWN("U", "Unknown", "unknown"),	/** Describes an un-phased clock port. */           CLK("C", "Clock", "clock"),	/** Describes a clock phase 1 port. */              C1("C1", "Clock Phase 1", "clock1"),	/** Describes a clock phase 2 port. */              C2("C2", "Clock Phase 2", "clock2"),	/** Describes a clock phase 3 port. */              C3("C3", "Clock Phase 3", "clock3"),	/** Describes a clock phase 4 port. */              C4("C4", "Clock Phase 4", "clock4"),	/** Describes a clock phase 5 port. */              C5("C5", "Clock Phase 5", "clock5"),	/** Describes a clock phase 6 port. */              C6("C6", "Clock Phase 6", "clock6"),	/** Describes an input port. */                     IN("I", "Input", "input"),	/** Describes an output port. */                    OUT("O", "Output", "output"),	/** Describes a bidirectional port. */              BIDIR("B", "Bidirectional", "bidirectional"),	/** Describes a power port. */                      PWR("P", "Power", "power"),	/** Describes a ground port. */                     GND("G", "Ground", "ground"),	/** Describes a bias-level reference output port. */REFOUT("RO", "Reference Output", "refout"),	/** Describes a bias-level reference input port. */ REFIN("RI", "Reference Input", "refin"),	/** Describes a bias-level reference base port. */  REFBASE("RB", "Reference Base", "refbase");        	private final String name;	private final String shortName;	private final String fullName;	private final int bits;//	private static int ordering = 0;	private PortCharacteristic(String shortName, String fullName, String name)	{		this.shortName = shortName;		this.fullName = fullName;		this.name = name;		this.bits = ordinal() << 1;	}	/**	 * Method to return the bit value associated with this PortCharacteristic.	 * @return the bit value associated with this PortCharacteristic.	 */	public int getBits() { return bits; }	/**	 * Method to return the ordering of this PortCharacteristic.	 * @return the order number of this PortCharacteristic.	 */	public int getOrder() { return ordinal(); }	/**	 * Method to return the full name of this PortCharacteristic.	 * @return the full name of this PortCharacteristic.	 */	public String getFullName() { return fullName; }	/**	 * Method to return the short name of this PortCharacteristic.	 * The short name is one or two characters, used in JELIB files.	 * @return the short name of this PortCharacteristic.	 */	public String getShortName() { return shortName; }	/**	 * Method to return the short name of this PortCharacteristic.	 * @return the short name of this PortCharacteristic.	 */	public String getName() { return name; }	/**	 * Method to tell whether this PortCharacteristic is "reference".	 * Reference exports have an extra name that identifies the reference export.	 * @return true if this PortCharacteristic is "reference".	 */	public boolean isReference()	{		if (this == REFIN || this == REFOUT || this == REFBASE) return true;		return false;	}	/**	 * Method to tell whether this PortCharacteristic is a "clock".	 * @return true if this PortCharacteristic is a "clock".	 */	public boolean isClock()	{		if (this == CLK || this == C1 || this == C2 || this == C3 || this == C4 || this == C5 || this == C6) return true;		return false;	}	/**	 * Method to find the characteristic associated with the given bit value.	 * @param bits the bit value associated with a PortCharacteristic.	 * @return the desired PortCharacteristic (null if not found).	 */	public static PortCharacteristic findCharacteristic(int bits)	{        if ((bits & 1) != 0) return null;        int index = bits >>> 1;        PortCharacteristic[] allCharacteristics = PortCharacteristic.class.getEnumConstants();        return index < allCharacteristics.length ? allCharacteristics[index] : null;	}	/**	 * Method to find the characteristic associated with the given name.	 * @param wantName the name of a PortCharacteristic.	 * @return the desired PortCharacteristic (null if not found).	 */	public static PortCharacteristic findCharacteristic(String wantName)	{		for(PortCharacteristic ch : PortCharacteristic.class.getEnumConstants())		{			if (ch.name.equals(wantName)) return ch;		}		return null;	}	/**	 * Method to find the characteristic associated with the given short name.	 * The short name is one or two characters, used in JELIB files.	 * @param shortName the short name of a PortCharacteristic.	 * @return the desired PortCharacteristic (null if not found).	 */	public static PortCharacteristic findCharacteristicShort(String shortName)	{		for(PortCharacteristic ch : PortCharacteristic.class.getEnumConstants())		{			if (ch.shortName.equals(shortName)) return ch;		}		return null;	}	/**	 * Method to return an iterator over all of the PortCharacteristics.	 * @return an iterator over all of the PortCharacteristics.	 */	public static List<PortCharacteristic> getOrderedCharacteristics()	{		List<PortCharacteristic> orderedList = new ArrayList<PortCharacteristic>();		for(PortCharacteristic ch : PortCharacteristic.class.getEnumConstants())			orderedList.add(ch);		Collections.sort(orderedList, new CharacteristicOrder());		return orderedList;	}	static class CharacteristicOrder implements Comparator<PortCharacteristic>	{		public int compare(PortCharacteristic c1, PortCharacteristic c2)		{			return c1.ordinal() - c2.ordinal();		}	}	/**	 * Returns a printable version of this PortCharacteristic.	 * @return a printable version of this PortCharacteristic.	 */	public String toString() { return name; }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -