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
|