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

📄 elibconstants.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: ELIBConstants.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.tool.io;import com.sun.electric.database.id.ArcProtoId;import com.sun.electric.database.id.CellId;import com.sun.electric.database.id.ExportId;import com.sun.electric.database.id.LibId;import com.sun.electric.database.id.PrimitiveNodeId;import com.sun.electric.database.id.TechId;import com.sun.electric.database.variable.CodeExpression;import com.sun.electric.tool.Tool;import java.util.Date;import java.util.Calendar;import java.util.GregorianCalendar;/** * This class has constants for reading and writing binary (.elib) files. */public class ELIBConstants{	// ".elib" file version numbers	/** current magic number: version 13 */		public static final int MAGIC13 = -1597;	/** older magic number: version 12 */		public static final int MAGIC12 = -1595;	/** older magic number: version 11 */		public static final int MAGIC11 = -1593;	/** older magic number: version 10 */		public static final int MAGIC10 = -1591;	/** older magic number: version 9 */		public static final int MAGIC9 =  -1589;	/** older magic number: version 8 */		public static final int MAGIC8 =  -1587;	/** older magic number: version 7 */		public static final int MAGIC7 =  -1585;	/** older magic number: version 6 */		public static final int MAGIC6 =  -1583;	/** older magic number: version 5 */		public static final int MAGIC5 =  -1581;	/** older magic number: version 4 */		public static final int MAGIC4 =  -1579;	/** older magic number: version 3 */		public static final int MAGIC3 =  -1577;	/** older magic number: version 2 */		public static final int MAGIC2 =  -1575;	/** oldest magic number: version 1 */		public static final int MAGIC1 =  -1573;	// bits found in the "type" field of a Variable:	/** Defines an undefined variable. */										public static final int VUNKNOWN =                  0;	/** Defines a 32-bit integer variable. */									public static final int VINTEGER =                 01;	/** Defines an unsigned address. */											public static final int VADDRESS =                 02;	/** Defines a character variable. */										public static final int VCHAR =                    03;	/** Defines a string variable. */											public static final int VSTRING =                  04;	/** Defines a floating point variable. */									public static final int VFLOAT =                   05;	/** Defines a double-precision floating point. */							public static final int VDOUBLE =                  06;	/** Defines a nodeinst pointer. */											public static final int VNODEINST =                07;	/** Defines a nodeproto pointer. */											public static final int VNODEPROTO =              010;	/** Defines a portarcinst pointer. */										public static final int VPORTARCINST =            011;	/** Defines a portexpinst pointer. */										public static final int VPORTEXPINST =            012;	/** Defines a portproto pointer. */											public static final int VPORTPROTO =              013;	/** Defines an arcinst pointer. */											public static final int VARCINST =                014;	/** Defines an arcproto pointer. */											public static final int VARCPROTO =               015;	/** Defines a geometry pointer. */											public static final int VGEOM =                   016;	/** Defines a library pointer. */											public static final int VLIBRARY =                017;	/** Defines a technology pointer. */										public static final int VTECHNOLOGY =             020;	/** Defines a tool pointer. */												public static final int VTOOL =                   021;	/** Defines an R-tree pointer. */											public static final int VRTNODE =                 022;	/** Defines a fractional integer (scaled by WHOLE). */						public static final int VFRACT =                  023;	/** Defines a network pointer. */											public static final int VNETWORK =                024;	/** Defines a view pointer. */												public static final int VVIEW =                   026;	/** Defines a window partition pointer. */									public static final int VWINDOWPART =             027;	/** Defines a graphics object pointer. */									public static final int VGRAPHICS =               030;	/** Defines a 16-bit integer. */											public static final int VSHORT =                  031;	/** Defines a constraint solver. */											public static final int VCONSTRAINT =             032;	/** Defines a general address/type pairs (only in fixed-length arrays). */	public static final int VGENERAL =                033;	/** Defines a window frame pointer. */										public static final int VWINDOWFRAME =            034;	/** Defines a polygon pointer. */											public static final int VPOLYGON =                035;	/** Defines a boolean variable. */											public static final int VBOOLEAN =                036;	/** Defines all above type fields. */										public static final int VTYPE =                   037;	/** Defines whether the variable is interpreted code (with VCODE2). */		public static final int VCODE1 =                  040;	/** Set if the variable is displayable (uses textdescript field). */		public static final int VDISPLAY =               0100;	/** Set if variable is an array of objects. */								public static final int VISARRAY =               0200;	/** Defines the array length (0: array is -1 terminated). */				public static final int VLENGTH =         03777777000;	/** Defines the right shift for VLENGTH. */									public static final int VLENGTHSH =                 9;	/** Defines whether the variable is interpreted code (with VCODE1). */		public static final int VCODE2 =          04000000000;	// some bits of TextDescriptor of a Variable:	/** Face of text bits in descriptor 1. */									public static final int VTFACE =            017700000;	/** Right shift of VTFACE. */												public static final int VTFACESH =                 15;	// Cell userbits	/** set if instances should be expanded */						private static final int WANTNEXPAND   =           02;	/** set if everything in cell is locked */						private static final int NPLOCKED      =     04000000;	/** set if instances in cell are locked */						private static final int NPILOCKED     =    010000000;	/** set if cell is part of a "cell library" */					private static final int INCELLLIBRARY =    020000000;	/** set if cell is from a technology-library */					private static final int TECEDITCELL   =    040000000;//	/** set if cell is a multi-page schematic */					private static final int MULTIPAGE     = 017600000000;	public static final int CELL_BITS = WANTNEXPAND | NPLOCKED | NPILOCKED | INCELLLIBRARY | TECEDITCELL /* | MULTIPAGE*/;	/**	 * Method to convert an integer date read from disk to a Java Date object.	 * The Electric library disk format for dates is in seconds since the epoch.	 * @param secondsSinceEpoch the number of seconds since the epoch (Jan 1, 1970).	 * @return a Java Date object.	 */	public static Date secondsToDate(int secondsSinceEpoch)	{		GregorianCalendar creation = new GregorianCalendar();		creation.setTimeInMillis(0);		creation.setLenient(true);		creation.add(Calendar.SECOND, secondsSinceEpoch);		return creation.getTime();	}	/**	 * Method to convert a Java Date object to an integer (seconds since the epoch).	 * The Electric library disk format for dates is in seconds since the epoch.	 * @param date a Java Date object.	 * @return the number of seconds since the epoch (Jan 1, 1970);	 */	public static long dateToSeconds(Date date)	{//	the easy way?	return date.getTime();		GregorianCalendar creation = new GregorianCalendar();		creation.setTime(date);		return creation.getTimeInMillis() / 1000;	}	/**	 * Method to convert from Java types to "elib" types.	 * The "elib" types are used when saving libraries to disk.	 * They were the constants used in the C Electric's object implementation,	 * and are still used in both the "elib" and Readable Dump files.	 * @param obj an Object of any class in the Electric world.	 * @return the "elib" integer type number for that class of object.	 */	public static int getVarType(Object obj)	{		if (obj instanceof String) return ELIBConstants.VSTRING;		if (obj instanceof CodeExpression)            return ELIBConstants.VSTRING | ((CodeExpression)obj).getCode().getCFlags();		if (obj instanceof Double) return ELIBConstants.VDOUBLE;		if (obj instanceof Float) return ELIBConstants.VFLOAT;		if (obj instanceof Long) return ELIBConstants.VINTEGER;		if (obj instanceof Integer) return ELIBConstants.VINTEGER;		if (obj instanceof Short) return ELIBConstants.VSHORT;		if (obj instanceof Byte) return ELIBConstants.VCHAR;        if (obj instanceof Boolean) return ELIBConstants.VCHAR;		if (obj instanceof Tool) return ELIBConstants.VTOOL;		if (obj instanceof TechId) return ELIBConstants.VTECHNOLOGY;		if (obj instanceof PrimitiveNodeId) return ELIBConstants.VNODEPROTO;		if (obj instanceof ArcProtoId) return ELIBConstants.VARCPROTO;        if (obj instanceof LibId) return ELIBConstants.VLIBRARY;        if (obj instanceof CellId) return ELIBConstants.VNODEPROTO;        if (obj instanceof ExportId) return ELIBConstants.VPORTPROTO;        		if (obj instanceof String[]) return ELIBConstants.VSTRING;//		if (obj instanceof CodeExpression[]) return ELIBConstants.VSTRING;		if (obj instanceof Double[]) return ELIBConstants.VDOUBLE;		if (obj instanceof Float[]) return ELIBConstants.VFLOAT;		if (obj instanceof Long[]) return ELIBConstants.VINTEGER;		if (obj instanceof Integer[]) return ELIBConstants.VINTEGER;		if (obj instanceof Short[]) return ELIBConstants.VSHORT;		if (obj instanceof Byte[]) return ELIBConstants.VCHAR;        if (obj instanceof Boolean[]) return ELIBConstants.VCHAR;		if (obj instanceof Tool[]) return ELIBConstants.VTOOL;		if (obj instanceof TechId[]) return ELIBConstants.VTECHNOLOGY;		if (obj instanceof PrimitiveNodeId[]) return ELIBConstants.VNODEPROTO;		if (obj instanceof ArcProtoId[]) return ELIBConstants.VARCPROTO;        if (obj instanceof LibId[]) return ELIBConstants.VLIBRARY;        if (obj instanceof CellId[]) return ELIBConstants.VNODEPROTO;        if (obj instanceof ExportId[]) return ELIBConstants.VPORTPROTO;		throw new AssertionError();	}}

⌨️ 快捷键说明

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