;ELC   
;;; Compiled
;;; in Emacs version 24.5.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\300\301!\210\300\302!\210\303\304\305\"\210\303\304\306\"\207" [require ob cc-mode add-to-list org-babel-tangle-lang-exts ("C++" . "cpp") ("D" . "d")] 3)
(defvar org-babel-default-header-args:C nil)
(byte-code "\300\301\302\303\304\305\306\307\310\311&	\210\300\312\313\314\304\305\306\307\310\311&	\210\300\315\316\317\304\305\306\307\310\311&	\207" [custom-declare-variable org-babel-C-compiler "gcc" "Command used to compile a C source code file into an executable.\nMay be either a command in the path, like gcc\nor an absolute path name, like /usr/local/bin/gcc\nparameter may be used, like gcc -v" :group org-babel :version "24.3" :type string org-babel-C++-compiler "g++" "Command used to compile a C++ source code file into an executable.\nMay be either a command in the path, like g++\nor an absolute path name, like /usr/local/bin/g++\nparameter may be used, like g++ -v" org-babel-D-compiler "rdmd" "Command used to compile and execute a D source code file.\nMay be either a command in the path, like rdmd\nor an absolute path name, like /usr/local/bin/rdmd\nparameter may be used, like rdmd --chatty"] 10)
#@99 Internal variable used to hold which type of C (e.g. C or C++ or D)
is currently being evaluated.
(defvar org-babel-c-variant nil (#$ . 1541))
#@80 Execute BODY according to PARAMS.
This function calls `org-babel-execute:C++'.
(defalias 'org-babel-execute:cpp #[(body params) "\302	\"\207" [body params org-babel-execute:C++] 3 (#$ . 1690)])
#@79 Expand a block of C++ code with org-babel according to it's
header arguments.
(defalias 'org-babel-expand-body:cpp #[(body params) "\302	\"\207" [body params org-babel-expand-body:C++] 3 (#$ . 1891)])
#@103 Execute a block of C++ code with org-babel.
This function is called by `org-babel-execute-src-block'.
(defalias 'org-babel-execute:C++ #[(body params) "\303\304	\n\")\207" [org-babel-c-variant body params cpp org-babel-C-execute] 3 (#$ . 2100)])
#@79 Expand a block of C++ code with org-babel according to it's
header arguments.
(defalias 'org-babel-expand-body:C++ #[(body params) "\303\304	\n\")\207" [org-babel-c-variant body params cpp org-babel-C-expand-C++] 3 (#$ . 2353)])
#@101 Execute a block of D code with org-babel.
This function is called by `org-babel-execute-src-block'.
(defalias 'org-babel-execute:D #[(body params) "\303\304	\n\")\207" [org-babel-c-variant body params d org-babel-C-execute] 3 (#$ . 2590)])
#@77 Expand a block of D code with org-babel according to it's
header arguments.
(defalias 'org-babel-expand-body:D #[(body params) "\303\304	\n\")\207" [org-babel-c-variant body params d org-babel-C-expand-D] 3 (#$ . 2837)])
#@101 Execute a block of C code with org-babel.
This function is called by `org-babel-execute-src-block'.
(defalias 'org-babel-execute:C #[(body params) "\303\304	\n\")\207" [org-babel-c-variant body params c org-babel-C-execute] 3 (#$ . 3066)])
#@77 Expand a block of C code with org-babel according to it's
header arguments.
(defalias 'org-babel-expand-body:C #[(body params) "\303\304	\n\")\207" [org-babel-c-variant body params c org-babel-C-expand-C] 3 (#$ . 3313)])
#@115 This function should only be called by `org-babel-execute:C'
or `org-babel-execute:C++' or `org-babel-execute:D'.
(defalias 'org-babel-C-execute #[(body params) "\306\307\310\311\"\203 \312\202  \310\313\"\203 \314\202  \310\315\"\205  \316\"\306\317\n\"\320\321\f\"A\211\2037 \322P\2028 \323\320\324\f\"A@\325\326@<\203M @\202P @C\322#@\310\311\"\203c \327A\f\"\202~ \310\313\"\203r \330A\f\"\202~ \310\315\"\205~ \331A\f\"B	\332\333\334!!CD\335\216rCq\210Bc\210)rCq\210\336\337\211D\337\340%\210,\341\342\"\203\323 \343\344\345\310\311\"\203\273 E\202\304 \310\313\"\205\304 F\346!@\346	!%\323\"\210\202\330 \310\315\"\210\343\341\347\"\203\346 P\202\370 \310\315\"\205\370 \344\350G@\346	!%\323\"\211H\205\274\351\352H!!H\353\320\354\f\"AI\355I\235?\205\234\356I\235\204e\357I\235\204e\360I\235\204e\361I\235\204e\362I\235\204e\363I\235\204e\364I\235\204^\365I\235\204^\366I\235\204^\367I\235\203m\370I\235\204m\371H\372\"\202\234\306\373!\211J\332\333\334!!KL\374\216rKq\210Hc\210)rKq\210\336\337\211L\337\340%\210,\375J!))\376\320\377\f\"A\320\201M \f\"A\"\376\320\201N \f\"A\320\201O \f\"A\"#.\207" [org-babel-c-variant tmp-src-file org-babel-exeext tmp-bin-file params cmdline org-babel-temp-file "C-src-" eql c ".c" cpp ".cpp" d ".d" "C-bin-" assoc :cmdline " " "" :flags mapconcat identity org-babel-C-expand-C org-babel-C-expand-C++ org-babel-C-expand-D get-buffer-create generate-new-buffer-name " *temp file*" ((byte-code "\301!\203\n \302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) write-region nil 0 memql (c cpp) org-babel-eval format "%s -o %s %s %s" org-babel-process-file-name (c cpp) "%s %s %s %s" org-babel-trim org-remove-indentation org-babel-reassemble-table :result-params "none" "scalar" "verbatim" "html" "code" "pp" "file" "output" "raw" "org" "drawer" "table" org-babel-read t "c-" ((byte-code "\301!\203\n \302!\210\301\207" [#2=#:temp-buffer buffer-name kill-buffer] 2)) org-babel-import-elisp-from-file org-babel-pick-name :colname-names flags body full-body #1# #3=#:temp-file org-babel-C-compiler org-babel-C++-compiler org-babel-D-compiler results #4=#:--params tmp-file #2# #5=#:temp-file :colnames :rowname-names :rownames] 9 (#$ . 3542)])
#@84 Expand a block of C or C++ code with org-babel according to
it's header arguments.
(defalias 'org-babel-C-expand-C++ #[(body params) "\302	\"\207" [body params org-babel-C-expand-C] 3 (#$ . 5829)])
#@84 Expand a block of C or C++ code with org-babel according to
it's header arguments.
(defalias 'org-babel-C-expand-C #[(body params) "\306\307\310\311\"\"\310\312\"\211@A\262\313\314\"A\315\230?\316\313\317\"A\206& \320\321\322\323#\321\"\316\313\324\"A\2066 \320\321\325\323#\321\"\n;\203F \326\n!	;\203\214 \321\323C\"#\326	!\321$\211%\203\206 %@$#\204o $#\202} \"#\327$QC\244\210\321#%A\211%\204^ *\"A*\330\331\330\332\n\333#\330\334	<\203\236 	\202\240 	C\333#\330\335\333#\330\336\333#\f\205\262 \337 \330\340\f\333#\203\302 \341&!\202\304 &\333\257\333#-\207" [params defines includes main-p colnames vars mapcar cdr org-babel-get-header :var :colname-names assoc :main "no" org-babel-read :includes org-entry-get nil "includes" t :defines "defines" split-string " " mapconcat identity #[(inc) "\301\302\"\207" [inc format "#include %s"] 3] "\n" #[(inc) "\301\302\"\207" [inc format "#define %s"] 3] org-babel-C-var-to-C org-babel-C-table-sizes-to-C org-babel-C-utility-header-to-C org-babel-C-header-to-C org-babel-C-ensure-main-wrap result y x --dolist-tail-- body] 12 (#$ . 6034)])
#@77 Expand a block of D code with org-babel according to
it's header arguments.
(defalias 'org-babel-C-expand-D #[(body params) "\306\307\310\311\"\"\310\312\"\211@A\262\313\314\"A\315\230?\313\316\"A\206' \317\320\321\322\323#!	;\2034 \324	!\325	\326\"\327\330\331\327\332	\333#\327\334\f\333#\327\335\f\333#\205Q \336 \327\337\333#\n\203` \340!\202a \333\257\333#,\207" [params imports main-p colnames vars body mapcar cdr org-babel-get-header :var :colname-names assoc :main "no" :imports org-babel-read org-entry-get nil "imports" t split-string append ("std.stdio" "std.conv") mapconcat identity "module mmm;" #[(inc) "\301\302\"\207" [inc format "import %s;"] 3] "\n" org-babel-C-var-to-C org-babel-C-table-sizes-to-C org-babel-C-utility-header-to-C org-babel-C-header-to-C org-babel-C-ensure-main-wrap] 11 (#$ . 7166)])
#@53 Wrap BODY in a "main" function call if none exists.
(defalias 'org-babel-C-ensure-main-wrap #[(body) "\301\302\"\203	 \207\303\304\"\207" [body string-match "^[ 	]*[intvod]+[ 	\n]*main[ 	]*(.*)" format "int main() {\n%s\nreturn 0;\n}\n"] 3 (#$ . 8012)])
#@85 This function does nothing as C is a compiled language with no
support for sessions
(defalias 'org-babel-prep-session:C #[(session params) "\300\301!\207" [error "C is a compiled languages -- no support for sessions"] 2 (#$ . 8276)])
#@85 This function does nothing as C is a compiled language with no
support for sessions
(defalias 'org-babel-load-session:C #[(session body params) "\300\301!\207" [error "C is a compiled languages -- no support for sessions"] 2 (#$ . 8516)])
#@56 Handle the FORMAT part of TYPE with the data from VAL.
(defalias 'org-babel-C-format-val #[(type val) "\211A@\262\211;\203 \303\304	\n\"B\202 	\n!)\207" [type format-data val "" format] 5 (#$ . 8761)])
#@182 Determine the type of VAL.
Return a list (TYPE-NAME FORMAT).  TYPE-NAME should be the name of the type.
FORMAT can be either a format string or a function which is called with VAL.
(defalias 'org-babel-C-val-to-C-type #[(val) "\304!\305	\306\"\203 \307\2025 \305	\310\"\203 \311\2025 \305	\312\"\2031 \n\313\232\203+ \314\202, \315\316D\2025 \317\320	\"\250\203? \202\263 \310!\203I \202\263 <\203\204 @<\203\204 @\321\322\323\324\325\326\327\321\330\325\331\327\321\332\333\211A@\262\334BBE\335BB\336BBBE\337BB\340BBBEED\202\263 <\204\217 \341!\203\262 @\321\342\323\343\325\344\327\321\345\333\211A@\262\346BBE\347BB\350BBBEED\202\263 *\207" [val basetype org-babel-c-variant type org-babel-C-val-to-base-type eql integerp ("int" "%d") floatp ("double" "%f") stringp d "string" "const char*" "\"%s\"" error "unknown type %S" lambda (val) cons (format "[%d][%d]" (length val) (length (car val))) concat (if (equal org-babel-c-variant 'd) "[\n" "{\n") mapconcat (v) (if (equal org-babel-c-variant 'd) " [" " {") (w) format (w) (v ",") ((if (equal org-babel-c-variant 'd) "]" "}")) (val ",\n") ((if (equal org-babel-c-variant 'd) "\n]" "\n}")) vectorp (val) (format "[%d]" (length val)) (if (equal org-babel-c-variant 'd) "[" "{") (v) (v) (val ",") ((if (equal org-babel-c-variant 'd) "]" "}"))] 18 (#$ . 8975)])
#@173 Determine the base type of VAL which may be
'integerp if all base values are integers
'floatp if all base values are either floating points or integers
'stringp otherwise.
(defalias 'org-babel-C-val-to-base-type #[(val) "\250\203 \302\207\303!\203 \303\207<\204 \304!\203$ \305\306\307\"\210	)\207\310\207" [val type integerp floatp vectorp nil mapc #[(v) "\303!\304	\305\"\203 \305\211\2027 \304	\306\"\203( \n\203\" \n\307=\2057 \306\211\2027 \304	\307\"\2057 \n?\2057 \307\211)\207" [v #1=#:--cl-var-- type org-babel-C-val-to-base-type eql stringp floatp integerp] 3] stringp] 3 (#$ . 10314)])
#@82 Convert an elisp val into a string of C code specifying a var
of the same value.
(defalias 'org-babel-C-var-to-C #[(pair) "@A	9\203 \306	!\211G\307U\203 \310	!\311	!\211@\312	\"\211@A\313\314\f\n%.\207" [pair val var type-data type formated symbol-name 1 string-to-char org-babel-C-val-to-C-type org-babel-C-format-val format "%s %s%s = %s;" suffix data] 7 (#$ . 10932)])
#@59 Create constants of table dimensions, if PAIR is a table.
(defalias 'org-babel-C-table-sizes-to-C #[(pair) "A<\205/ \211A@\262<\203' \301\302@AG#\303\301\304@\211A@\262G#Q\207\301\304@AG#\207" [pair format "const int %s_rows = %d;" "\n" "const int %s_cols = %d;"] 7 (#$ . 11332)])
#@76 Generate a utility function to convert a column name
into a column number.
(defalias 'org-babel-C-utility-header-to-C #[nil "\301\302\"\203	 \303\207\304\305\"\205 \306\207" [org-babel-c-variant memql (c cpp) "int get_column_num (int nbcols, const char** header, const char* column)\n{\n  int c;\n  for (c=0; c<nbcols; c++)\n    if (strcmp(header[c],column)==0)\n      return c;\n  return -1;\n}\n" eql d "int get_column_num (string[] header, string column)\n{\n  foreach (c, h; header)\n    if (h==column)\n      return to!int(c);\n  return -1;\n}\n"] 3 (#$ . 11629)])
#@110 Convert an elisp list of header table into a C or D vector
specifying a variable with the name of the table.
(defalias 'org-babel-C-header-to-C #[(head) "@A\304\305\306\"\203 \307\202 \310\311\"\205 \312\n	G\313\314	\315#$\316\305\317\"\2036 \304\320\n\211	G\n%\202C \310\311\"\205C \304\321\n\211\211$Q*\207" [head headers table org-babel-c-variant format memql (c cpp) "const char* %s_header[%d] = {%s};" eql d "string %s_header[%d] = [%s];" mapconcat #[(h) "\301\302\"\207" [h format "%S"] 3] "," "\n" (c cpp) "const char* %s_h (int row, const char* col) { return %s[row][get_column_num(%d,%s_header,col)]; }" "string %s_h (ulong row, string col) { return %s[row][get_column_num(%s_header,col)]; }"] 8 (#$ . 12209)])
(provide 'ob-C)
