• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
        • Primitives
        • Use-set
        • Syntax
        • Getting-started
        • Utilities
        • Loader
        • Transforms
        • Lint
        • Mlib
        • Server
        • Kit
        • Printer
          • Ps
          • Basic-printing
          • Verilog-printing
          • Printing-locally
          • Formatted-printing
          • Accessing-printed-output
          • Vl-printedlist
          • Json-printing
            • Json-encoders
              • Vl-jp-module
              • Vl-jp-warning
              • Vl-jp-constint
              • Vl-jp-vardecl
              • Jp-sym-main
              • Vl-jp-fundecl
              • Vl-jp-taskdecl
              • Vl-jp-modinst
              • Vl-jp-gateinst
              • Vl-jp-portdecl
              • Vl-jp-modport-port
              • Vl-jp-interfaceport
              • Vl-jp-expr
              • Vl-jp-assign
              • Jp-str
                • Jp-col-after-printing-string-aux
              • Vl-jp-warninglist
              • Vl-jp-vardecllist
              • Vl-jp-taskdecllist
              • Vl-jp-regularportlist
              • Vl-jp-portdecllist
              • Vl-jp-plainarglist
              • Vl-jp-paramvaluelist
              • Vl-jp-paramdecllist
              • Vl-jp-paramdecl
              • Vl-jp-packeddimensionlist
              • Vl-jp-namedparamvaluelist
              • Vl-jp-namedarglist
              • Vl-jp-modport-portlist
              • Vl-jp-modinstlist
              • Vl-jp-modelementlist
              • Vl-jp-interfaceportlist
              • Vl-jp-initiallist
              • Vl-jp-genelementlist
              • Vl-jp-gateinstlist
              • Vl-jp-fwdtypedef
              • Vl-jp-fundecllist
              • Vl-jp-enumitemlist
              • Jp-nat
              • Vl-jp-weirdint
              • Vl-jp-repeateventcontrol
              • Vl-jp-regularport
              • Vl-jp-rangelist
              • Vl-jp-portlist
              • Vl-jp-plainarg
              • Vl-jp-namedparamvalue
              • Vl-jp-namedarg
              • Vl-jp-modulelist
              • Vl-jp-modport
              • Vl-jp-location
              • Vl-jp-initial
              • Vl-jp-importlist
              • Vl-jp-import
              • Vl-jp-genvarlist
              • Vl-jp-genvar
              • Vl-jp-gatestrength
              • Vl-jp-gatedelay
              • Vl-jp-eventcontrol
              • Vl-jp-evatomlist
              • Vl-jp-enumitem
              • Vl-jp-enumbasetype
              • Vl-jp-assignlist
              • Vl-jp-alwayslist
              • Vl-jp-always
              • Vl-jp-aliaslist
              • Vl-jp-alias
              • Jp-object
              • Vl-jp-time
              • Vl-jp-sysfunname
              • Vl-jp-range
              • Vl-jp-evatom
              • Vl-jp-delaycontrol
              • Vl-jp-basictype
              • Vl-jp-typename
              • Vl-jp-tagname
              • Vl-jp-string
              • Vl-jp-real
              • Vl-jp-keyguts
              • Vl-jp-id
              • Vl-jp-hidpiece
              • Vl-jp-funname
              • Vl-jp-extint
              • Vl-jp-arguments
              • Vl-jp-paramvalue
              • Vl-jp-packeddimension
              • Vl-jp-maybe-packeddimension
              • Vl-jp-maybe-nettypename
              • Vl-jp-maybe-direction
              • Vl-jp-maybe-cstrength
              • Jp-timeunit
              • Jp-keygutstype
              • Jp-bool
              • Jp-bitlist
              • Jp-bit
              • Jp-bignat
              • Jp-basictypekind
              • Vl-jp-randomqualifier
              • Vl-jp-port
              • Vl-jp-nettypename
              • Vl-jp-maybe-gatedelay
              • Vl-jp-maybe-exprtype
              • Vl-jp-lifetime
              • Vl-jp-gatetype
              • Vl-jp-exprtype
              • Vl-jp-evatomtype
              • Vl-jp-dstrength
              • Vl-jp-direction
              • Vl-jp-deassign-type
              • Vl-jp-cstrength
              • Vl-jp-coretypename
              • Vl-jp-casetype
              • Vl-jp-casecheck
              • Vl-jp-assign-type
              • Vl-jp-alwaystype
              • Jp-maybe-string
              • Jp-maybe-nat
              • Jp-sym
        • Esim-vl
        • Well-formedness
      • Sv
      • Fgl
      • Vwsim
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Json-encoders

Jp-str

Print the JSON encoding of a string, handling all escaping correctly and including the surrounding quotes.

Signature
(jp-str x &key (ps 'ps)) → ps

We go to some effort to make this fast.

Definitions and Theorems

Function: jp-str-fn

(defun jp-str-fn (x ps)
 (declare (xargs :stobjs (ps)))
 (declare (type string x))
 (let ((__function__ 'jp-str))
  (declare (ignorable __function__))
  (b*
   ((rchars (vl-ps->rchars))
    (col (vl-ps->col))
    (xl (length x))
    (rchars
      (cons #\"
            (bridge::json-encode-str-aux x 0 xl (cons #\" rchars))))
    (col (+ 2
            (jp-col-after-printing-string-aux col x 0 xl))))
   (vl-ps-seq (vl-ps-update-rchars rchars)
              (vl-ps-update-col col)))))

Subtopics

Jp-col-after-printing-string-aux
Fast way to figure out the new column after printing a JSON string with proper encoding.