Function: org-babel-C-expand-D

org-babel-C-expand-D is a byte-compiled function defined in ob-C.el.gz.

Signature

(org-babel-C-expand-D BODY PARAMS)

Documentation

Expand D BODY according to its header arguments PARAMS.

Source Code

;; Defined in /usr/src/emacs/lisp/org/ob-C.el.gz
(defun org-babel-C-expand-D (body params)
  "Expand D BODY according to its header arguments PARAMS."
  (let ((vars (org-babel--get-vars params))
	(colnames (cdr (assq :colname-names params)))
	(main-p (not (string= (cdr (assq :main params)) "no")))
	(imports (or (cdr (assq :imports params))
		     (org-babel-read (org-entry-get nil "imports" t)))))
    (when (stringp imports)
      (setq imports (split-string imports)))
    (setq imports (append imports '("std.stdio" "std.conv")))
    (mapconcat 'identity
	       (list
		"module mmm;"
		;; imports
		(mapconcat
		 (lambda (inc) (format "import %s;" inc))
		 imports "\n")
		;; variables
		(mapconcat 'org-babel-C-var-to-C vars "\n")
		;; table sizes
		(mapconcat 'org-babel-C-table-sizes-to-C vars "\n")
		;; tables headers utility
		(when colnames
		  (org-babel-C-utility-header-to-C))
		;; tables headers
		(mapconcat (lambda (head)
                             (let* ((tblnm (car head))
                                    (tbl (cdr (car (let* ((el vars))
                                                     (while (not (or (equal tblnm (caar el)) (not el)))
                                                       (setq el (cdr el)))
                                                     el))))
                                    (type (org-babel-C-val-to-base-type tbl)))
                               (org-babel-C-header-to-C head type))) colnames "\n")
		;; body
		(if main-p
		    (org-babel-C-ensure-main-wrap body)
		  body) "\n") "\n")))