shithub: femtolisp

ref: 8cb08f4c2751dab26235520448307fcdbfc257bd
dir: /docs_extra.lsp/

View raw version
(define-macro (doc-for term (doc #f))
  (let* ((sym     (or (and (cons? term) (car term)) term))
         (val     (top-level-value sym))
         (funvars (and (cons? term) (cdr term))))
    (if (not funvars)
        (when (function? val)
          (error "docs: " sym ": no funvars specified"))
        (unless (function? val)
          (error "docs: " sym ": funvars set but isn't a function")))
    `(symbol-set-doc ',sym ',doc ',funvars)))

(doc-for (vm-stats)
  "Print various VM-related information, such as the number of GC calls
so far, heap and stack size, etc.")

(doc-for (lz-pack data (level 0))
  "Return data compressed using Lempel-Ziv.
The data must be an array, returned value will have the same type.
The optional level is between 0 and 10.  With level 0 a simple LZSS
using hashing will be performed.  Levels between 1 and 9 offer a
trade-off between time/space and ratio.  Level 10 is optimal but very
slow.")

(doc-for (lz-unpack data :to destination))
(doc-for (lz-unpack data :size decompressed-bytes)
  "Return decompressed data previously compressed using lz-pack.
Either destination for the decompressed data or the expected size of
the decompressed data must be specified.  In the latter case a new
array is allocated.")

(del! *syntax-environment* 'doc-for)