241 lines
6.7 KiB
C
241 lines
6.7 KiB
C
/*
|
|
* calma.h --
|
|
*
|
|
* This file defines constants used internally by the calma
|
|
* module, but not exported to the rest of the world.
|
|
*
|
|
* *********************************************************************
|
|
* * Copyright (C) 1985, 1990 Regents of the University of California. *
|
|
* * Permission to use, copy, modify, and distribute this *
|
|
* * software and its documentation for any purpose and without *
|
|
* * fee is hereby granted, provided that the above copyright *
|
|
* * notice appear in all copies. The University of California *
|
|
* * makes no representations about the suitability of this *
|
|
* * software for any purpose. It is provided "as is" without *
|
|
* * express or implied warranty. Export of this software outside *
|
|
* * of the United States of America may require an export license. *
|
|
* *********************************************************************
|
|
*
|
|
* rcsid $Header: /usr/cvsroot/magic-8.0/calma/calmaInt.h,v 1.2 2010/06/24 12:37:15 tim Exp $
|
|
*/
|
|
|
|
#ifndef _CALMAINT_H
|
|
#define _CALMAINT_H
|
|
|
|
#include "utils/magic.h"
|
|
#include "database/database.h"
|
|
|
|
/* Record data types */
|
|
#define CALMA_NODATA 0 /* No data present */
|
|
#define CALMA_BITARRAY 1 /* Bit array */
|
|
#define CALMA_I2 2 /* 2 byte integer */
|
|
#define CALMA_I4 3 /* 4 byte integer */
|
|
#define CALMA_R4 4 /* 4 byte real */
|
|
#define CALMA_R8 5 /* 8 byte real */
|
|
#define CALMA_ASCII 6 /* ASCII string */
|
|
|
|
/* Record types */
|
|
#define CALMA_HEADER 0
|
|
#define CALMA_BGNLIB 1
|
|
#define CALMA_LIBNAME 2
|
|
#define CALMA_UNITS 3
|
|
#define CALMA_ENDLIB 4
|
|
#define CALMA_BGNSTR 5
|
|
#define CALMA_STRNAME 6
|
|
#define CALMA_ENDSTR 7
|
|
#define CALMA_BOUNDARY 8
|
|
#define CALMA_PATH 9
|
|
#define CALMA_SREF 10
|
|
#define CALMA_AREF 11
|
|
#define CALMA_TEXT 12
|
|
#define CALMA_LAYER 13
|
|
#define CALMA_DATATYPE 14
|
|
#define CALMA_WIDTH 15
|
|
#define CALMA_XY 16
|
|
#define CALMA_ENDEL 17
|
|
#define CALMA_SNAME 18
|
|
#define CALMA_COLROW 19
|
|
#define CALMA_TEXTNODE 20
|
|
#define CALMA_NODE 21
|
|
#define CALMA_TEXTTYPE 22
|
|
#define CALMA_PRESENTATION 23
|
|
#define CALMA_SPACING 24
|
|
#define CALMA_STRING 25
|
|
#define CALMA_STRANS 26
|
|
#define CALMA_MAG 27
|
|
#define CALMA_ANGLE 28
|
|
#define CALMA_UINTEGER 29
|
|
#define CALMA_USTRING 30
|
|
#define CALMA_REFLIBS 31
|
|
#define CALMA_FONTS 32
|
|
#define CALMA_PATHTYPE 33
|
|
#define CALMA_GENERATIONS 34
|
|
#define CALMA_ATTRTABLE 35
|
|
#define CALMA_STYPTABLE 36
|
|
#define CALMA_STRTYPE 37
|
|
#define CALMA_ELFLAGS 38
|
|
#define CALMA_ELKEY 39
|
|
#define CALMA_LINKTYPE 40
|
|
#define CALMA_LINKKEYS 41
|
|
#define CALMA_NODETYPE 42
|
|
#define CALMA_PROPATTR 43
|
|
#define CALMA_PROPVALUE 44
|
|
#define CALMA_BOX 45
|
|
#define CALMA_BOXTYPE 46
|
|
#define CALMA_PLEX 47
|
|
#define CALMA_BGNEXTN 48
|
|
#define CALMA_ENDEXTN 49
|
|
#define CALMA_TAPENUM 50
|
|
#define CALMA_TAPECODE 51
|
|
#define CALMA_STRCLASS 52
|
|
#define CALMA_RESERVED 53
|
|
#define CALMA_FORMAT 54
|
|
#define CALMA_MASK 55
|
|
#define CALMA_ENDMASKS 56
|
|
#define CALMA_LIBDIRSIZE 57
|
|
#define CALMA_SRFNAME 58
|
|
#define CALMA_LIBSECUR 59
|
|
|
|
#define CALMA_NUMRECORDTYPES 60 /* Number of above types */
|
|
|
|
/* Property types defined for magic */
|
|
#define CALMA_PROP_USENAME_STD 61 /* To record non-default cell use ids */
|
|
#define CALMA_PROP_USENAME 98 /* To record non-default cell use ids */
|
|
#define CALMA_PROP_ARRAY_LIMITS 99 /* To record non-default array limits */
|
|
|
|
/* Flags for transforms */
|
|
#define CALMA_STRANS_UPSIDEDOWN 0x8000 /* Mirror about X axis before rot */
|
|
#define CALMA_STRANS_ROTATE 0x0002 /* Rotate by absolute angle */
|
|
|
|
/* Path types */
|
|
#define CALMAPATH_SQUAREFLUSH 0 /* Square end flush with endpoint */
|
|
#define CALMAPATH_ROUND 1 /* Round end */
|
|
#define CALMAPATH_SQUAREPLUS 2 /* Square end plus half-width extent */
|
|
#define CALMAPATH_CUSTOM 4 /* Endcaps at specified lengths */
|
|
|
|
/* Largest calma layer or data type numbers */
|
|
#define CALMA_LAYER_MAX 255
|
|
|
|
#define CalmaIsValidLayer(n) ((n) >= 0 && (n) <= CALMA_LAYER_MAX)
|
|
|
|
/* Used to index hash tables of (layer, datatype) pairs */
|
|
typedef struct
|
|
{
|
|
int clt_layer;
|
|
int clt_type;
|
|
} CalmaLayerType;
|
|
|
|
/* Biggest calma string */
|
|
#define CALMANAMELENGTH 32
|
|
|
|
/* Length of record header */
|
|
#define CALMAHEADERLENGTH 4
|
|
|
|
/* Label types */
|
|
typedef enum { LABEL_TYPE_NONE, LABEL_TYPE_TEXT, LABEL_TYPE_PORT, LABEL_TYPE_CELLID } labelType;
|
|
|
|
/* ------------------------- Input macros ----------------------------- */
|
|
|
|
/* Globals for Calma reading */
|
|
extern FILE *calmaInputFile;
|
|
extern char *calmaFilename;
|
|
extern int calmaReadScale1;
|
|
extern int calmaReadScale2;
|
|
extern bool calmaLApresent;
|
|
extern int calmaLAnbytes;
|
|
extern int calmaLArtype;
|
|
|
|
/*
|
|
* Macros for number representation conversion.
|
|
*/
|
|
#ifdef ibm032
|
|
#include <netinet/in.h> /* as macros in in.h and don't exist as routines */
|
|
#endif
|
|
|
|
#ifndef ntohl
|
|
# ifdef WORDS_BIGENDIAN
|
|
# define ntohl(x) (x)
|
|
# define ntohs(x) (x)
|
|
# define htonl(x) (x)
|
|
# define htons(x) (x)
|
|
# endif
|
|
#endif
|
|
|
|
typedef union { char uc[2]; unsigned short us; } TwoByteInt;
|
|
typedef union { char uc[4]; unsigned int ul; } FourByteInt;
|
|
|
|
/* Macro to read a 2-byte integer */
|
|
#define READI2(z) \
|
|
{ \
|
|
TwoByteInt u; \
|
|
u.uc[0] = getc(calmaInputFile); \
|
|
u.uc[1] = getc(calmaInputFile); \
|
|
(z) = (int) ntohs(u.us); \
|
|
}
|
|
|
|
/* Macro to read a 4-byte integer */
|
|
#define READI4(z) \
|
|
{ \
|
|
FourByteInt u; \
|
|
u.uc[0] = getc(calmaInputFile); \
|
|
u.uc[1] = getc(calmaInputFile); \
|
|
u.uc[2] = getc(calmaInputFile); \
|
|
u.uc[3] = getc(calmaInputFile); \
|
|
(z) = (int) ntohl(u.ul); \
|
|
}
|
|
|
|
/* Macros for reading and unreading record headers */
|
|
#define READRH(nb, rt) \
|
|
{ \
|
|
if (calmaLApresent) { \
|
|
(nb) = calmaLAnbytes; \
|
|
(rt) = calmaLArtype; \
|
|
calmaLApresent = FALSE; \
|
|
} else { \
|
|
READI2(nb); \
|
|
if (feof(calmaInputFile)) nb = -1; \
|
|
else { \
|
|
(rt) = getc(calmaInputFile); \
|
|
(void) getc(calmaInputFile); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define UNREADRH(nb, rt) \
|
|
{ \
|
|
ASSERT(!calmaLApresent, "UNREADRH"); \
|
|
calmaLApresent = TRUE; \
|
|
calmaLAnbytes = (nb); \
|
|
calmaLArtype = (rt); \
|
|
}
|
|
|
|
#define PEEKRH(nb, rt) \
|
|
{ \
|
|
READRH(nb, rt); \
|
|
UNREADRH(nb, rt); \
|
|
}
|
|
|
|
/* Other commonly used globals */
|
|
extern HashTable calmaLayerHash;
|
|
extern int calmaElementIgnore[];
|
|
extern CellDef *calmaFindCell();
|
|
|
|
/* (Added by Nishit, 8/18/2004--8/24/2004) */
|
|
extern CellDef *calmaLookCell();
|
|
extern void calmaWriteContact();
|
|
extern CellDef *calmaGetContactCell();
|
|
extern bool calmaIsContactCell;
|
|
|
|
extern char *calmaRecordName();
|
|
extern void calmaSkipSet();
|
|
|
|
/* ------------------- Imports from CIF reading ----------------------- */
|
|
|
|
extern CellDef *cifReadCellDef;
|
|
extern Plane *cifSubcellPlanes[];
|
|
extern Plane **cifCurReadPlanes;
|
|
extern HashTable CifCellTable;
|
|
extern Plane *cifEditCellPlanes[];
|
|
|
|
#endif /* _CALMAINT_H */
|