aboutsummaryrefslogtreecommitdiff
path: root/noao/digiphot/photcal/parser/prconv.x
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /noao/digiphot/photcal/parser/prconv.x
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'noao/digiphot/photcal/parser/prconv.x')
-rw-r--r--noao/digiphot/photcal/parser/prconv.x72
1 files changed, 72 insertions, 0 deletions
diff --git a/noao/digiphot/photcal/parser/prconv.x b/noao/digiphot/photcal/parser/prconv.x
new file mode 100644
index 00000000..358165a6
--- /dev/null
+++ b/noao/digiphot/photcal/parser/prconv.x
@@ -0,0 +1,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