Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Info |  Source |  Call Graph |  Caller Graph |  Entry Points |  External References |  Label References |  Local Variables  | All
Print Page as PDF
Routine: XLFJSOND

Package: Kernel

Routine: XLFJSOND


Information

XLFJSOND ;SLC/KCM/TJB - Decode JSON ;26 Oct 2016

Source Information

Source file <XLFJSOND.m>

Call Graph

Call Graph

Call Graph Total: 2

Package Total Call Graph
Kernel 2 ERRX^XLFJSON  $$DEC^XLFUTL  

Caller Graph

Legends:

Legend of Colors

Package Component Superscript legend

action A extended action Ea event driver Ed subscriber Su protocol O limited protocol LP run routine RR broker B edit E server Se print P screenman SM inquire I

Caller Graph

Caller Graph Total: 1

Package Total Caller Graph
Kernel 1 XLFJSON  

Entry Points

Name Comments DBIA/ICR reference
DECODE(XUJSON,XUROOT,XUERR) ; Set JSON object into closed array ref XUROOT
DIRECT ; TAG for use by DECODE^XLFJSON
NXTKN() ; Move the pointers to the beginning of the next token
ADDSTR ; Add string value to current node, escaping text along the way
; Expects XULINE,XUIDX to reference that starting point of the index
; TODO: add a mechanism to specify names that should not be escaped
; just store as ":")= and ":",n)=
SETSTR ; Set simple string value from within same line
; expects XUJSON, XULINE, XUINX, XUEND
UESEXT ; unescape from XULINE,XUIDX to XUTLINE,XUEND & extend (\) if necessary
; expects XULINE,XUIDX,XUTLINE,XUEND
ADDBUF(XUX) ; add buffer of characters to destination
; expects XUBUF,XUMAX,XUNODE,XUMORE to be defined
; used directly by ADDSTR
SAVEBUF ; write out buffer to destination
; expects XUBUF,XUMAX,XUNODE,XUMORE to be defined
; used directly by ADDSTR,ADDBUF
ISCLOSEQ(XUBLINE) ; return true if this is a closing, rather than escaped, quote
; expects
; XUJSON: lines of the JSON encoded string
; XUIDX: points to 1st character of the segment
; XULINE: points to the line in which the segment starts
; XUEND: points to 1st character after the " (may be past the end of the line)
; used directly by ADDSTR
NAMPARS() ; Return parsed name, advancing index past the close quote
; -- This assumes no embedded quotes are in the name itself --
SETNUM(XUDIGIT) ; Set numeric along with any necessary modifier
NUMPARS(XUDIGIT) ; Return parsed number, advancing index past end of number
; XUIDX intially references the second digit
SETBOOL(XULTR) ; Parse and set boolean value, advancing index past end of value
OSETBOOL(XUX) ; set a value and increment XUIDX
CURNODE() ; Return a global/local variable name based on XUSTACK
; Expects XUSTACK to be defined already
UES(X) ; Unescape JSON string
; copy segments from START to POS-2 (right before \)
; translate target character (which is at $F position)
REALCHAR(C) ; Return actual character from escaped
ERRX(ID,VAL) ; Set the appropriate error message

External References

Name Field # of Occurrence
ERRX^XLFJSON ERRX+1
$$DEC^XLFUTL UESEXT+18, UES+11

Label References

Name Line Occurrences
$$CURNODE SETSTR+4, SETSTR+7, SETSTR+8, UESEXT+3, SETNUM+3, SETNUM+5, SETBOOL+11, OSETBOOL+1
$$ISCLOSEQ ADDSTR+9, ADDSTR+20
$$NAMPARS DIRECT+34
$$NUMPARS SETNUM+2
$$NXTKN DIRECT+21
$$REALCHAR UESEXT+19, UES+12
$$UES SETSTR+4
ADDBUF UESEXT+10, UESEXT+18, UESEXT+19
ADDSTR DIRECT+35
ERRX DIRECT+22, DIRECT+23, DIRECT+25, DIRECT+26, DIRECT+27, DIRECT+28, DIRECT+32, DIRECT+41, DIRECT+42, ADDSTR+16
UESEXT+13, ISCLOSEQ+12, NAMPARS+8, NUMPARS+7, SETBOOL+7, SETBOOL+8, SETBOOL+9, SETBOOL+10, OSETBOOL+4, REALCHAR+11
SAVEBUF UESEXT+23, ADDBUF+3
SETBOOL DIRECT+37, DIRECT+38, DIRECT+39
SETNUM DIRECT+40
SETSTR ADDSTR+8, ADDSTR+9
UESEXT ADDSTR+23

Local Variables

Legend:

>> Not killed explicitly
* Changed
! Killed
~ Newed

Name Field # of Occurrence
C REALCHAR~, REALCHAR+1, REALCHAR+2, REALCHAR+3, REALCHAR+4, REALCHAR+5, REALCHAR+6, REALCHAR+7, REALCHAR+8, REALCHAR+9
, REALCHAR+11, REALCHAR+12
ID ERRX~, ERRX+1
POS UES+3~, UES+4*, UES+5, UES+6*, UES+7*, UES+10, UES+11*
START UES+3~, UES+5*, UES+6, UES+7, UES+10
TGT UES+9~, UES+10*, UES+11, UES+12
VAL ERRX~, ERRX+1
X UES~, UES+5, UES+6, UES+7, UES+10, UES+11
XUBDONE ISCLOSEQ+7~, ISCLOSEQ+8*, ISCLOSEQ+10, ISCLOSEQ+14*
XUBIDX ISCLOSEQ+7~, ISCLOSEQ+8*, ISCLOSEQ+11, ISCLOSEQ+13*, ISCLOSEQ+14, ISCLOSEQ+15*
XUBLINE ISCLOSEQ~, ISCLOSEQ+12*, ISCLOSEQ+13, ISCLOSEQ+14
XUBOOL SETBOOL+1~, SETBOOL+2*, SETBOOL+6*, SETBOOL+8, SETBOOL+9, SETBOOL+10, SETBOOL+11
XUBS ISCLOSEQ+7~, ISCLOSEQ+8*, ISCLOSEQ+15*, ISCLOSEQ+16
XUBUF UESEXT+2~, UESEXT+3*, ADDBUF+3, ADDBUF+4*, SAVEBUF+3, SAVEBUF+4, SAVEBUF+5*
XUDIFF OSETBOOL+3~*, OSETBOOL+4
XUDIGIT SETNUM~, SETNUM+2, NUMPARS~, NUMPARS+3
XUDONE NXTKN+1~, NXTKN+2*, NXTKN+4*, ADDSTR+12~, ADDSTR+13*, ADDSTR+14, ADDSTR+19*, ADDSTR+20*, UESEXT+2~, UESEXT+4*
UESEXT+5, UESEXT+11*, UESEXT+21*, NAMPARS+2~, NAMPARS+3*, NAMPARS+4, NAMPARS+6*, NUMPARS+2~, NUMPARS+3*, NUMPARS+4
, NUMPARS+5*, SETBOOL+1~, SETBOOL+2*, SETBOOL+3, SETBOOL+5*
XUEND ADDSTR+6~, ADDSTR+7*, ADDSTR+8, ADDSTR+9, ADDSTR+16*, ADDSTR+17*, ADDSTR+18, ADDSTR+19, ADDSTR+25, SETSTR+3
UESEXT+3, ISCLOSEQ+8, NAMPARS+2~, NAMPARS+5*, NAMPARS+6, NAMPARS+7, NAMPARS+8
XUEOF NXTKN+1~, NXTKN+2*, NXTKN+3*, NXTKN+6
XUERR DECODE~, DIRECT+14*, REALCHAR+11
XUERRORS DIRECT+19~, DIRECT+20*, DIRECT+21, ADDSTR+14, ADDSTR+21, UESEXT+5, UESEXT+22, ISCLOSEQ+10, NAMPARS+4, NUMPARS+4
, SETBOOL+3
XUI UESEXT+2~, UESEXT+4*, UESEXT+6*, UESEXT+8, UESEXT+9, UESEXT+11, UESEXT+12*, UESEXT+13*, UESEXT+14, UESEXT+16*
UESEXT+17*, UESEXT+20*, UESEXT+21, CURNODE+2~, CURNODE+4*, CURNODE+5, CURNODE+6
XUIDX DIRECT+19~, DIRECT+20*, NXTKN+3*, NXTKN+4, NXTKN+5*, NXTKN+7*, ADDSTR+7, ADDSTR+25*, SETSTR+3*, SETSTR+9*
UESEXT+4, NAMPARS+5, NAMPARS+6*, NAMPARS+7, NAMPARS+8*, NUMPARS+5, NUMPARS+6, NUMPARS+7*, SETBOOL+4, SETBOOL+7*
, OSETBOOL+2*, OSETBOOL+3, OSETBOOL+4*
XUINPUT DIRECT+17~
XUINPUT(1 DIRECT+17*
XUJSON DECODE~, DIRECT+17*, DIRECT+20, NXTKN+3, NXTKN+4, NXTKN+7, ADDSTR+7, ADDSTR+8, ADDSTR+16, ADDSTR+17
ADDSTR+19, SETSTR+3, SETSTR+9, UESEXT+6, UESEXT+10, UESEXT+13, UESEXT+14, UESEXT+16, UESEXT+17, ISCLOSEQ+13
, ISCLOSEQ+14, NAMPARS+5, NAMPARS+6, NAMPARS+7, NAMPARS+8, NUMPARS+5, NUMPARS+6, NUMPARS+7, SETBOOL+4, SETBOOL+7
, OSETBOOL+3, OSETBOOL+4
XULINE DIRECT+19~, DIRECT+20*, NXTKN+3*, NXTKN+4, NXTKN+7, ADDSTR+7, ADDSTR+8, ADDSTR+9, ADDSTR+13, ADDSTR+25*
SETSTR+3, SETSTR+9*, UESEXT+4, ISCLOSEQ+12, NAMPARS+5, NAMPARS+6, NAMPARS+7, NAMPARS+8*, NUMPARS+5, NUMPARS+6
, NUMPARS+7*, SETBOOL+4, SETBOOL+7*, OSETBOOL+3, OSETBOOL+4*
XULTR SETBOOL~, SETBOOL+2, SETBOOL+8, SETBOOL+9, SETBOOL+10
XUMAX DIRECT+13~*, ADDBUF+3
XUMORE UESEXT+2~, UESEXT+3*, SAVEBUF+3, SAVEBUF+4, SAVEBUF+5*
XUNAME NAMPARS+2~, NAMPARS+3*, NAMPARS+6*, NAMPARS+7*, NAMPARS+10*, NAMPARS+11
XUNODE UESEXT+2~, UESEXT+3*, SAVEBUF+3, SAVEBUF+4
XUNUM NUMPARS+2~, NUMPARS+3*, NUMPARS+6*, NUMPARS+8
XUPROP DIRECT+19~, DIRECT+20*, DIRECT+23*, DIRECT+31*, DIRECT+32*, DIRECT+34
XUROOT DECODE~, DIRECT+18*, CURNODE+7
XUSTACK DIRECT+19~, DIRECT+20*, DIRECT+23*, DIRECT+25, DIRECT+26*, DIRECT+27*, DIRECT+28*, DIRECT+30, DIRECT+32, DIRECT+34
DIRECT+42, CURNODE+4
XUSTACK( DIRECT+23*, DIRECT+25, DIRECT+27*, DIRECT+28, DIRECT+30*, DIRECT+32, DIRECT+34*, CURNODE+5, CURNODE+6
XUSTART UESEXT+2~, UESEXT+6*, UESEXT+10
XUSTOP UESEXT+2~, UESEXT+3*, UESEXT+8, UESEXT+11, UESEXT+21
XUSUBS CURNODE+2~, CURNODE+3*, CURNODE+4*, CURNODE+5*, CURNODE+6*, CURNODE+7
XUTGT UESEXT+14~*, UESEXT+15, UESEXT+19
XUTGTC UESEXT+16~*, UESEXT+17*, UESEXT+18
XUTLINE ADDSTR+12~, ADDSTR+13*, ADDSTR+16*, ADDSTR+17, ADDSTR+19, ADDSTR+20, ADDSTR+25, UESEXT+8, UESEXT+11, UESEXT+21
XUTO UESEXT+2~, UESEXT+8*, UESEXT+9*, UESEXT+10
XUTOKEN NXTKN+1~, NXTKN+7*, NXTKN+8
XUTYPE DIRECT+19~, DIRECT+21*, DIRECT+22, DIRECT+23, DIRECT+24, DIRECT+27, DIRECT+28, DIRECT+29, DIRECT+32, DIRECT+33
DIRECT+36*, DIRECT+37, DIRECT+38, DIRECT+39, DIRECT+40, DIRECT+41, SETBOOL+8, SETBOOL+9, SETBOOL+10
XUVAL DIRECT+19~, DIRECT+20*, DIRECT+22*, DIRECT+32*
XUX ADDSTR+6~, SETSTR+2~, SETSTR+3*, SETSTR+4, SETSTR+7, SETSTR+8, ADDBUF~, ADDBUF+3, ADDBUF+4, SETNUM+1~
, SETNUM+2*, SETNUM+3, SETNUM+5, SETBOOL+1~, SETBOOL+4*, SETBOOL+5, SETBOOL+6, OSETBOOL~, OSETBOOL+1, OSETBOOL+2
XUY UESEXT+2~, UESEXT+4*, UESEXT+6, UESEXT+8, UESEXT+10, UESEXT+11, UESEXT+12*, UESEXT+13*, UESEXT+14, UESEXT+16
UESEXT+17*, UESEXT+21
Y UES+3~, UES+4*, UES+7*, UES+10*, UES+11*, UES+12*, UES+13
Info |  Source |  Call Graph |  Caller Graph |  Entry Points |  External References |  Label References |  Local Variables  | All