/usr/lib/iraf/lib/plio.h is in iraf-dev 2.16.1+2018.03.10-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | # PLIO.H -- Package internal global defines for the Pixel List package.
# Size limiting definitons
define PL_MAXDIM 7 # maximum mask dimensionality
define PL_MAGICVAL 2014 # identifies mask and version no.
define PL_LLBUFLEN 512 # initial llbuf size
define PL_STARTINC 512 # starting llbuf increment on overflow
define PL_MAXINC 4096 # maximum increment per resize
define PL_MAXFREE 40 # max percent free (wasted) space
define PL_MAXDEPTH 27 # max mask depth, bits
define PL_DEFMAXLINE 1024 # default max elements per [lr]list
# Main PL descriptor.
define LEN_PLDES 28
define MLO 3 # must update PLSET.H too if changed
define PL_MAGIC Memi[$1] # magic / version no.
define PL_PRIVATE1 Memi[$1+1] # private data for client
define PL_PRIVATE2 Memi[$1+2] # more private data for client
define PL_MAXLINE Memi[$1+MLO] # max elements per [lr]list [PLSET.H]
define PL_MAXVAL Memi[$1+4] # max pixel value (2**N - 1)
define PL_NAXES Memi[$1+5] # dimensionality
define PL_AXLEN Memi[$1+6+$2-1] # length of each axis
define PL_PLANE Memi[$1+13+$2-1] # active plane (pl_setplane)
define PL_LLBP Memi[$1+20] # line list bufptr
define PL_LLOP Memi[$1+21] # next location in llbuf
define PL_LLLEN Memi[$1+22] # current llbuf length
define PL_LLFREE Memi[$1+23] # amount of free space in list
define PL_LLNUPDATES Memi[$1+24] # number of list modifications
define PL_LLINC Memi[$1+25] # current llbuf increment on overflow
define PL_NLP Memi[$1+26] # number of line pointers
define PL_LPP Memi[$1+27] # ptr to array of LL offsets
define PM_REFIM PL_PRIVATE1($1) # reference image
define PM_MAPXY PL_PRIVATE2($1) # need to transform coords
# Handy macros.
define Ref (PL_LLBP($1)+$2)# llbuf offset -> pointer
define LL Mems[Ref($1,$2)]# pointer -> array reference
define PL_LP Memi[PL_LPP($1)+$2-1]
define PL_EMPTYLINE 0 # llbuf offset of the empty line
define PL_NEEDCOMPRESS ((PL_LLFREE($1)*100/PL_LLOP($1))>PL_MAXFREE)
define LL_MAXLEN PL_MAXLINE($1)
define RL_MAXLEN (PL_MAXLINE($1)*3)
define MV ((2**min($1,27))-1)
# Handy rasterop decoding macros.
define R_OPCODE and($1,17B)
define R_DATA ($1/100B)
define R_NEED_DST (and(xor(($1)/2,($1)),5)!=0)
define R_NEED_SRC (and(xor(($1)/4,($1)),3)!=0)
define R_NOTDST (and($1,6)==4)
define R_NOTSRC (and($1,6)==2)
# Internal rasterop definitions (PIX_SRC=14B, PIX_DST=12B, CLR=0B, SET=17B).
define PIX_NOTSRC 03B
define PIX_NOTDST 05B
define PIX_SRC_AND_DST 10B
define PIX_SRC_OR_DST 16B
define PIX_SRC_XOR_DST 06B
define PIX_SRC_AND_NOTDST 04B
define PIX_SRC_OR_NOTDST 15B
define PIX_NOTSRC_AND_DST 02B
define PIX_NOTSRC_OR_DST 13B
define PIX_NOT_SRC_AND_DST 07B
define PIX_NOT_SRC_OR_DST 01B
define PIX_NOT_SRC_XOR_DST 11B
# Macro defines for the line list data format.
# ----- Old/original line list header definitions. This version uses a
# ----- three element header, but the maximum values are limited to 32K by
# ----- the use of type short.
# Line list definitions (accessed as a short integer array).
define OLL_NREF $1[1] # number of references
define OLL_BLEN $1[2] # length of buffer containing LL
define OLL_LEN $1[3] # length of encoded line list
define OLL_FIRST 4 # first data range entry in list
# Line list definitions (accessed via a short integer pointer).
define OLP_NREF Mems[$1] # number of references
define OLP_BLEN Mems[$1+1] # length of buffer containing LL
define OLP_LEN Mems[$1+2] # length of encoded line list
define OLP_FIRST 3 # first data range entry in list
# ----- New format line list header definitions. This version uses a
# ----- variable length header and a version number to allow new encodings
# ----- while retaining backwards compatibility.
define LL_CURVERSION (-100) # LL version code (must be negative)
define LL_OLDFORMAT (LL_VERSION($1) > 0)
define LL_CURHDRLEN 7
# Line list definitions (accessed as a short integer array).
define LL_NREFS $1[1] # number of references
define LL_HDRLEN $1[2] # length of encoded line list
define LL_VERSION $1[3] # version number (negative)
define LL_LENLO $1[4] # length of encoded line list
define LL_LENHI $1[5] # length of encoded line list
define LL_BLENLO $1[6] # length of LL buffer
define LL_BLENHI $1[7] # length of LL buffer
# Handy line list macros.
define LL_NREF (int(LL_NREFS($1)))
define LL_BLEN ((int(LL_BLENHI($1)))*32768+(int(LL_BLENLO($1))))
define LL_SETBLEN LL_BLENLO($1)=mod($2,32768); LL_BLENHI($1)=($2)/32768
define LL_LEN ((int(LL_LENHI($1)))*32768+(int(LL_LENLO($1))))
define LL_SETLEN LL_LENLO($1)=mod($2,32768); LL_LENHI($1)=($2)/32768
define LL_FIRST (LL_HDRLEN($1)+1)
# Line list definitions (accessed as a short integer pointer).
define LP_NREFS Mems[$1] # number of references
define LP_HDRLEN Mems[$1+1] # length of encoded line list
define LP_VERSION Mems[$1+2] # version number (negative)
define LP_LENLO Mems[$1+3] # length of encoded line list
define LP_LENHI Mems[$1+4] # length of encoded line list
define LP_BLENLO Mems[$1+5] # length of LL buffer
define LP_BLENHI Mems[$1+6] # length of LL buffer
# Handy line list pointer macros.
define LP_NREF (int(LP_NREFS($1)))
define LP_BLEN (int(LP_BLENHI($1))*32768+int(LP_BLENLO($1)))
define LP_SETBLEN LP_BLENLO($1)=mod($2,32768); LP_BLENHI($1)=($2)/32768
define LP_LEN (int(LP_LENHI($1))*32768+int(LP_LENLO($1)))
define LP_SETLEN LP_LENLO($1)=mod($2,32768); LP_LENHI($1)=($2)/32768
define LP_FIRST (($1)+LP_HDRLEN($1))
# Packed instruction decoding.
define I_SHIFT 10000B # shift to encode/decode data bits
define I_DATA and(int($1),7777B) # extract data
define I_OPCODE (($1)/10000B) # extract opcode value
define I_OPCODEMASK and(int($1),70000B) # extract opcode mask
define I_DATAMAX 7777B # max data field value
define I_PVMAX 777777777B # max mask pixel value (27 bits)
# LL instruction opcodes.
define I_ZN 0 # N zeros
define I_HN 4 # N high values
define I_PN 5 # N-1 zeros and 1 high value
define I_SH 1 # set high value (2 words)
define I_IH 2 # increment high value
define I_DH 3 # decrement high value
define I_IS 6 # increment and output 1 high value
define I_DS 7 # decrement and output 1 high value
# The LL instruction opcodes again, but as bitmasks this time.
define M_ZN 00000B
define M_HN 40000B
define M_PN 50000B
define M_SH 10000B
define M_IH 20000B
define M_DH 30000B
define M_IS 60000B
define M_DS 70000B
# The following bit is set if the instruction changes the current position.
define M_MOVE 40000B
# PL external format descriptor (with some extra space).
define LEN_PLEXTERN 20
define PLE_MAGIC Memi[$1] # usual magic value
define PLE_NAXES Memi[$1+1] # number of axes
define PLE_AXLEN Memi[$1+2+$2-1] # length of each axis
define PLE_LLOP Memi[$1+9] # next location in llbuf
define PLE_LLLEN Memi[$1+10] # length of llbuf
define PLE_NLP Memi[$1+11] # number of line pointers
define PLE_NLPX Memi[$1+12] # length of compressed LP array
define PLE_EXLEN Memi[$1+13] # length of full PLEXTERN structure
define PLE_FLAGS Memi[$1+14] # flags for type of encoding
define PLE_MAXLINE Memi[$1+15] # max elements per [lr]list
define PLE_MAXVAL Memi[$1+16] # max pixel value
# PLIO mask savefile descriptor.
define PLIO_SVMAGIC 123126B # "SV"
define LEN_SVDES 3
define SV_MAGIC Memi[$1] # identifies file type
define SV_TITLELEN Memi[$1+1] # title string length, including EOS
define SV_MASKLEN Memi[$1+2] # encoded mask length, shorts
# Internal symbols.
define LOOP_DONE 1
define LOOP_AGAIN 0
|