;ELC   
;;; Compiled
;;; in Emacs version 29.4
;;; with all optimizations.



(byte-code "\300\301!\210\302 \303\232\204 \304\305\306\"\210\300\307!\210\300\310!\210\300\301!\210\311\312\313\"\210\311\312\314\"\207" [require org-macs org-release "9.6.15" warn "Org version mismatch.\nThis warning usually appears when a built-in Org version is loaded\nprior to the more recent Org version.\n\nVersion mismatch is commonly encountered in the following situations:\n\n1. Emacs is loaded using literate Org config and more recent Org\n   version is loaded inside the file loaded by `org-babel-load-file'.\n   `org-babel-load-file' triggers the built-in Org version clashing\n   the newer Org version attempt to be loaded later.\n\n   It is recommended to move the Org loading code before the\n   `org-babel-load-file' call.\n\n2. New Org version is loaded manually by setting `load-path', but some\n   other package depending on Org is loaded before the `load-path' is\n   configured.\n   This \"other package\" is triggering built-in Org version, again\n   causing the version mismatch.\n\n   It is recommended to set `load-path' as early in the config as\n   possible.\n\n3. New Org version is loaded using straight.el package manager and\n   other package depending on Org is loaded before straight triggers\n   loading of the newer Org version.\n\n   It is recommended to put\n\n    %s\n\n   early in the config.  Ideally, right after the straight.el\n   bootstrap.  Moving `use-package' :straight declaration may not be\n   sufficient if the corresponding `use-package' statement is\n   deferring the loading.\n\n4. A new Org version is synchronized with Emacs git repository and\n   stale .elc files are still left from the previous build.\n\n   It is recommended to remove .elc files from lisp/org directory and\n   re-compile." "(straight-use-package 'org)" cc-mode ob add-to-list org-babel-tangle-lang-exts ("C++" . "cpp") ("D" . "d")] 3)
(defvar org-babel-default-header-args:C nil)#@34 C/C++-specific header arguments.
(defconst org-babel-header-args:C '((includes . :any) (defines . :any) (main . :any) (flags . :any) (cmdline . :any) (libs . :any)) (#$ . 1996))#@32 C++-specific header arguments.
(defconst org-babel-header-args:C++ (cons '(namespaces . :any) org-babel-header-args:C) (#$ . 2179))
(byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313&	\210\300\314\302\303\315DD\316\306\307\310\311\312\313&	\210\300\317\302\303\320DD\321\306\307\310\311\312\313&	\207" [custom-declare-variable org-babel-C-compiler funcall function #[0 "\300\207" ["gcc"] 1 #1=""] "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 #[0 "\300\207" ["g++"] 1 #1#] "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 #[0 "\300\207" ["rdmd"] 1 #1#] "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 (#$ . 3356))#@98 Execute BODY according to PARAMS.
This function calls `org-babel-execute:C++'.

(fn BODY PARAMS)
(defalias 'org-babel-execute:cpp #[514 "\300\"\207" [org-babel-execute:C++] 5 (#$ . 3504)])#@96 Expand a block of C++ code with org-babel according to its header arguments.

(fn BODY PARAMS)
(defalias 'org-babel-expand-body:cpp #[514 "\300\"\207" [org-babel-expand-body:C++] 5 (#$ . 3700)])#@121 Execute a block of C++ code with org-babel.
This function is called by `org-babel-execute-src-block'.

(fn BODY PARAMS)
(defalias 'org-babel-execute:C++ #[514 "\301\302\")\207" [org-babel-c-variant cpp org-babel-C-execute] 5 (#$ . 3903)])#@96 Expand a block of C++ code with org-babel according to its header arguments.

(fn BODY PARAMS)
(defalias 'org-babel-expand-body:C++ #[514 "\301\302\")\207" [org-babel-c-variant cpp org-babel-C-expand-C++] 5 (#$ . 4150)])#@119 Execute a block of D code with org-babel.
This function is called by `org-babel-execute-src-block'.

(fn BODY PARAMS)
(defalias 'org-babel-execute:D #[514 "\301\302\")\207" [org-babel-c-variant d org-babel-C-execute] 5 (#$ . 4380)])#@94 Expand a block of D code with org-babel according to its header arguments.

(fn BODY PARAMS)
(defalias 'org-babel-expand-body:D #[514 "\301\302\")\207" [org-babel-c-variant d org-babel-C-expand-D] 5 (#$ . 4621)])#@119 Execute a block of C code with org-babel.
This function is called by `org-babel-execute-src-block'.

(fn BODY PARAMS)
(defalias 'org-babel-execute:C #[514 "\301\302\")\207" [org-babel-c-variant c org-babel-C-execute] 5 (#$ . 4843)])#@94 Expand a block of C code with org-babel according to its header arguments.

(fn BODY PARAMS)
(defalias 'org-babel-expand-body:C #[514 "\301\302\")\207" [org-babel-c-variant c org-babel-C-expand-C] 5 (#$ . 5084)])#@133 This function should only be called by `org-babel-execute:C'
or `org-babel-execute:C++' or `org-babel-execute:D'.

(fn BODY PARAMS)
(defalias 'org-babel-C-execute #[514 "\305\306\307\267\202 \310\202 \311\202 \312\202 \313\"\314\305\315	\"!\316\236A\211\203* \317P\202+ \320\321\236A\322\323<\203: \202< C\317#\324\325\236A\206L \326\313\327\330#\313\"\322\323<\203Y \202[ C\317#\331\267\202~ \332\n\n\"\202 \333\n\n\"\202 \334\n\n\"\202 \313\335\336\330\"\337\340\"\216r\211q\210c)\210r\211q\210\341\313\211\f\313\342%*\266\343\267\202\306 \344\345\346\347\267\202\266 \n\202\267 \202\267 \313\314!&\320\"\210\344\350\267\202\344 P\202\345 \345\351\f\314!%\202\345 \313\320\"\211\205\207\352!\262\353\354\f\236A\355\235?\205j\356\235\204?\357\235\204?\360\235\204?\361\235\204?\362\235\204?\363\235\204?\364\235\2049\365\235\2049\366\235\2049\367\235\203C\370\235\204C\202j\305\371!\335\336\330\"\337\372\"\216r\211q\210c)\210r\211q\210\341\313\211\313\342%*\266\373!\262\262\374\375\236A\376\236A\"\374\377\236A\201@ \236A\"#\207" [org-babel-c-variant org-babel-exeext org-babel-C-compiler org-babel-C++-compiler org-babel-D-compiler org-babel-temp-file "C-src-" #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (c 8 cpp 12 d 16)) ".c" ".cpp" ".d" nil org-babel-process-file-name "C-bin-" :cmdline " " "" :flags mapconcat identity org-babel-read :libs org-entry-get "libs" t #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (c 99 cpp 108 d 117)) org-babel-C-expand-C org-babel-C-expand-C++ org-babel-C-expand-D generate-new-buffer " *temp file*" make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] write-region 0 #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (cpp 165 c 165 d 198)) org-babel-eval format "%s -o %s %s %s %s" #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (c 174 cpp 178)) #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (cpp 205 c 205 d 213)) "%s %s %s %s" org-remove-indentation org-babel-reassemble-table :result-params "discard" "scalar" "verbatim" "html" "code" "pp" "file" "output" "raw" "org" "drawer" "table" "c-" #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] org-babel-import-elisp-from-file org-babel-pick-name :colname-names :colnames :rowname-names :rownames] 22 (#$ . 5306)])#@98 Expand a block of C/C++ code with org-babel according to its header arguments.

(fn BODY PARAMS)
(defalias 'org-babel-C-expand-C++ #[514 "\300\"\207" [org-babel-C-expand-C] 5 (#$ . 7850)])#@98 Expand a block of C/C++ code with org-babel according to its header arguments.

(fn BODY PARAMS)
(defalias 'org-babel-C-expand-C #[514 "\300!\301\236A\302\236A\303\230?\304\305\236A\306\"\304\307\236A\306\"\304\310\236A\306\";\203/ \311!\262\211;\2039 \311!\262;\203m \306\312C\311!\211\203f \211@\204T \211\262\202_ \313QC\244\210\306\262A\266\202\202D \210\211A\262\266\314\315\314\316\317#\314\320<\203\202 \202\205 C\317#\314\321\317#\314\322\f\317#\314\323\317#\205\240 \324 \314\325\326\"\317#\f\203\266 \327!\202\270 \317\257	\317#\207" [org-babel--get-vars :colname-names :main "no" org-babel-read :includes nil :defines :namespaces split-string t " " mapconcat identity #[257 "\2119\203\n \300!\262\301\302\"\203 \303\304\"\207\303\305\"\207" [symbol-name string-prefix-p "<" format "#include %s" "#include \"%s\""] 4 "\n\n(fn INC)"] "\n" #[257 "\300\301\"\207" [format "#define %s"] 4 "\n\n(fn INC)"] #[257 "\300\301\"\207" [format "using namespace %s;"] 4 "\n\n(fn INC)"] org-babel-C-var-to-C org-babel-C-table-sizes-to-C org-babel-C-utility-header-to-C make-closure #[257 "\211@\300@@\232\204 \211\203 \211A\262\202 \211\262@A\301!\302\"\207" [V0 org-babel-C-val-to-base-type org-babel-C-header-to-C] 7 "\n\n(fn HEAD)"] org-babel-C-ensure-main-wrap] 20 (#$ . 8046)])#@94 Expand a block of D code with org-babel according to its header arguments.

(fn BODY PARAMS)
(defalias 'org-babel-C-expand-D #[514 "\300!\301\236A\302\236A\303\230?\304\236A\206 \305\306\307\310\311#!\211;\203& \312!\262\313\314\"\262\315\316\317\315\320\321#\315\322	\321#\315\323\n\321#\205G \324 \315\325\326\"\321#	\203] \327!\202_ \321\257\321#\207" [org-babel--get-vars :colname-names :main "no" :imports org-babel-read org-entry-get nil "imports" t split-string append ("std.stdio" "std.conv") mapconcat identity "module mmm;" #[257 "\300\301\"\207" [format "import %s;"] 4 "\n\n(fn INC)"] "\n" org-babel-C-var-to-C org-babel-C-table-sizes-to-C org-babel-C-utility-header-to-C make-closure #[257 "\211@\300@@\232\204 \211\203 \211A\262\202 \211\262@A\301!\302\"\207" [V0 org-babel-C-val-to-base-type org-babel-C-header-to-C] 7 "\n\n(fn HEAD)"] org-babel-C-ensure-main-wrap] 17 (#$ . 9396)])#@64 Wrap BODY in a "main" function call if none exists.

(fn BODY)
(defalias 'org-babel-C-ensure-main-wrap #[257 "\300\301\"\203 \207\302\303\"\207" [string-match "^[ 	]*[intvod]+[ 	\n]*main[ 	]*(.*)" format "int main() {\n%s\nreturn 0;\n}\n"] 4 (#$ . 10334)])#@107 This function does nothing as C is a compiled language with no
support for sessions.

(fn SESSION PARAMS)
(defalias 'org-babel-prep-session:C #[514 "\300\301!\207" [error "C is a compiled language -- no support for sessions"] 4 (#$ . 10601)])#@112 This function does nothing as C is a compiled language with no
support for sessions.

(fn SESSION BODY PARAMS)
(defalias 'org-babel-load-session:C #[771 "\300\301!\207" [error "C is a compiled language -- no support for sessions"] 5 (#$ . 10850)])#@71 Handle the FORMAT part of TYPE with the data from VAL.

(fn TYPE VAL)
(defalias 'org-babel-C-format-val #[514 "A@\211;\203 \300\301\"B\207\211!\207" ["" format] 7 (#$ . 11103)])#@192 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.

(fn VAL)
(defalias 'org-babel-C-val-to-C-type #[257 "\301!\211\302\267\202! \303\202% \304\202% \305=\203 \306\202 \307\310D\202% \311\312\"\250\203+ \207\313!\2032 \207<\203i @<\203i \211@\314\315\316\317\320\321\322\314\323\320\324\322\314\325\326A@\327BBE\330BB\331BBBE\332BB\333BBBEED\207<\204t \334!\203\223 \211@\314\335\316\336\320\337\322\314\340\326A@\341BBE\342BB\343BBBEED\207\207" [org-babel-c-variant org-babel-C-val-to-base-type #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (integerp 9 floatp 13 stringp 17)) ("int" "%d") ("double" "%s") d "string" "const char*" "\"%s\"" error "Unknown type %S" floatp lambda (val) cons (pcase org-babel-c-variant ((or `c `cpp) (format "[%d][%d]" (length val) (length (car val)))) (`d (format "[%d][%d]" (length (car val)) (length val)))) concat (if (eq org-babel-c-variant 'd) "[\n" "{\n") mapconcat (v) (if (eq org-babel-c-variant 'd) " [" " {") (w) format (w) (v ",") ((if (eq org-babel-c-variant 'd) "]" "}")) (val ",\n") ((if (eq org-babel-c-variant 'd) "\n]" "\n}")) vectorp (val) (format "[%d]" (length val)) (if (eq org-babel-c-variant 'd) "[" "{") (v) (v) (val ",") ((if (eq org-babel-c-variant 'd) "]" "}"))] 21 (#$ . 11292)])#@186 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.

(fn VAL)
(defalias 'org-babel-C-val-to-base-type #[257 "\211\250\203 \300\207\301!\203 \301\207\211<\204 \302!\203' \303C\304\305\306\"\"\210\211\242\207\307\207" [integerp floatp vectorp nil mapc make-closure #[257 "\301!\211\302\267\202' \300\303\240\207\300\242\203 \300\242\304=\205( \300\305\240\207\300\242?\205( \300\304\240\207\306\207" [V0 org-babel-C-val-to-base-type #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (stringp 9 floatp 13 integerp 29)) stringp integerp floatp nil] 4 "\n\n(fn V)"] stringp] 6 (#$ . 12720)])#@93 Convert an elisp val into a string of C code specifying a var of the same value.

(fn PAIR)
(defalias 'org-babel-C-var-to-C #[257 "\211@A\2119\203 \301!\262\211G\302U\203 \303!\262\304!\211@\305\"\211@A\306\267\266\202C \307\310	%\207\307\311\n%\207\266\312\207" [org-babel-c-variant symbol-name 1 string-to-char org-babel-C-val-to-C-type org-babel-C-format-val #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (cpp 47 c 47 d 56)) format "%s %s%s = %s;" "%s%s %s = %s;" nil] 14 (#$ . 13479)])#@70 Create constants of table dimensions, if PAIR is a table.

(fn PAIR)
(defalias 'org-babel-C-table-sizes-to-C #[257 "\211A<\205) \211A@<\203! \300\301@AG#\302\300\303@A@G#Q\207\300\303@AG#\207" [format "const int %s_rows = %d;" "\n" "const int %s_cols = %d;"] 7 (#$ . 14035)])#@76 Generate a utility function to convert a column name into a column number.
(defalias 'org-babel-C-utility-header-to-C #[0 "\301\267\202\n \302\207\303\207\304\207" [org-babel-c-variant #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (cpp 6 c 6 d 8)) "\n#ifndef _STRING_H\n#include <string.h>\n#endif\nint 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" "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" nil] 2 (#$ . 14322)])#@126 Convert an elisp list of header table into a C or D vector
specifying a variable with the name of the table.

(fn HEAD TYPE)
(defalias 'org-babel-C-header-to-C #[514 "\301\302\"\210@A\303\267\202) \304\202* \305\202* \306\267\202% \307\202* \310\202* \311\202* \311\312\267\202N \313\314G\315\316\317#$\202O \313\320G\315\321\317#$\202O \311\322\323\267\202q \313\324\211G\n&\202r \313\325\211\211%\202r \311Q\207" [org-babel-c-variant message "%S" #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (integerp 15 floatp 19 stringp 23)) "int" "double" #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (cpp 29 c 29 d 33)) "const char*" "string" nil #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (cpp 48 c 48 d 63)) format "const char* %s_header[%d] = {%s};" mapconcat #[257 "\300\301\"\207" [format "\"%s\""] 4 "\n\n(fn H)"] "," "string[%d] %s_header = [%s];" #[257 "\300\301\"\207" [format "\"%s\""] 4 "\n\n(fn H)"] "\n" #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (cpp 86 c 86 d 102)) "%s %s_h (int row, const char* col) { return %s[row][get_column_num(%d,%s_header,col)]; }" "%s %s_h (size_t row, string col) { return %s[row][get_column_num(%s_header,col)]; }"] 14 (#$ . 15025)])
(provide 'ob-C)
