# -*- mode: snippet -*-
# name: def_indexed_exemplar
# key: def_indexed_exemplar
# group: object oriented
# type: command
# --
(let* ((snippet-content '())
       (pragma-snippet (car (magik-yasnippet-pragma-snippet nil)))
       (dollar-count (cadr (magik-yasnippet-pragma-snippet nil)))
       (doc-string (magik-yasnippet-documentation))
       (index-exemplar-line
        (concat
         "def_indexed_exemplar(:${"
         (number-to-string (+ dollar-count 1))
         ":"
         (magik-yasnippet-filename)
         "}, ${"
         (number-to-string (+ dollar-count 2))
         ":$$(yas-completing-read \"
         Data type:
         \"
         '(:pointer :signed8 :unsigned8 :char8 :signed16 :unsigned16 :char16 :signed32 :unsigned32 :char32 :float32 :signed64 :unsigned64 :float64))})")))

  (setq snippet-content
        (delq nil
              (list pragma-snippet
                    (unless (string-empty-p doc-string) doc-string)
                    index-exemplar-line
                    "$0")))

  (yas-expand-snippet (string-join snippet-content "\n")))