aboutsummaryrefslogtreecommitdiff
path: root/noao/digiphot/photcal/parser/prconv.x
blob: 358165a6753cf96ff866ec1af0ec01703542b797 (plain) (blame)
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
.help prconv
Parser symbol conversion

These procedures convert SYMTAB pointers into symbol offsets and viceversa,
and string offsets into character pointers (when applicable).
These procedures are called by the prget and prput procedures in order to
perform the appropiate type conversions.

.nf
Entry points:

int	= pr_offset (sym)	Convert SYMTAB pointer into symbol offset
pointer	= pr_pointer (offset)	Convert symbol offset into SYMTAB pointer
pointer	= pr_charp (offset)	Convert string offset into character pointer
.fi
.endhelp

include	"../lib/parser.h"


# PR_OFFSET - Convert SYMTAB pointer into an offset

int procedure pr_offset (sym)

pointer	sym		# symbol pointer

pointer	strefstab()
pointer	pr_getp()

begin
	# Check pointer
	if (sym == NULL)
	    return (INDEFI)
	else
	    return (sym - strefstab (pr_getp (SYMTABLE), 0))
end


# PR_POINTER - Convert an offset into a SYMTAB pointer

pointer procedure pr_pointer (offset)

int	offset			# symbol offset

pointer	strefstab()
pointer	pr_getp()

begin
	# Check offset
	if (IS_INDEFI (offset))
	    return (NULL)
	else
	    return (strefstab (pr_getp (SYMTABLE), offset))
end


# PR_CHARP - Convert string offset into character pointer

pointer procedure pr_charp (offset)

int	offset			# string offset

pointer	strefsbuf()
pointer	pr_getp()

begin
	# Check offset
	if (IS_INDEFI (offset))
	    return (NULL)
	else
	    return (strefsbuf (pr_getp (SYMTABLE), offset))
end