From 0f207e5f43c875f34bc04b87119e7bcfeb266c02 Mon Sep 17 00:00:00 2001 From: Abdalla1423 Date: Thu, 6 Jun 2024 12:56:42 +0000 Subject: [PATCH] deploy: b0e8bf79f014bdb65455c3af57f4550bb49f7d64 --- .nojekyll | 0 doctrees/environment.pickle | Bin 0 -> 1777153 bytes doctrees/index.doctree | Bin 0 -> 5033 bytes doctrees/modules.doctree | Bin 0 -> 1231889 bytes html/.buildinfo | 4 + html/_sources/index.rst.txt | 22 + html/_sources/modules.rst.txt | 187 ++ html/_static/alabaster.css | 708 +++++ html/_static/basic.css | 925 ++++++ html/_static/custom.css | 1 + html/_static/doctools.js | 156 + html/_static/documentation_options.js | 13 + html/_static/file.png | Bin 0 -> 286 bytes html/_static/language_data.js | 199 ++ html/_static/minus.png | Bin 0 -> 90 bytes html/_static/plus.png | Bin 0 -> 90 bytes html/_static/pygments.css | 84 + html/_static/searchtools.js | 619 ++++ html/_static/sphinx_highlight.js | 154 + html/genindex.html | 950 +++++++ html/index.html | 125 + html/modules.html | 3778 +++++++++++++++++++++++++ html/objects.inv | Bin 0 -> 2135 bytes html/py-modindex.html | 248 ++ html/search.html | 120 + html/searchindex.js | 1 + 26 files changed, 8294 insertions(+) create mode 100644 .nojekyll create mode 100644 doctrees/environment.pickle create mode 100644 doctrees/index.doctree create mode 100644 doctrees/modules.doctree create mode 100644 html/.buildinfo create mode 100644 html/_sources/index.rst.txt create mode 100644 html/_sources/modules.rst.txt create mode 100644 html/_static/alabaster.css create mode 100644 html/_static/basic.css create mode 100644 html/_static/custom.css create mode 100644 html/_static/doctools.js create mode 100644 html/_static/documentation_options.js create mode 100644 html/_static/file.png create mode 100644 html/_static/language_data.js create mode 100644 html/_static/minus.png create mode 100644 html/_static/plus.png create mode 100644 html/_static/pygments.css create mode 100644 html/_static/searchtools.js create mode 100644 html/_static/sphinx_highlight.js create mode 100644 html/genindex.html create mode 100644 html/index.html create mode 100644 html/modules.html create mode 100644 html/objects.inv create mode 100644 html/py-modindex.html create mode 100644 html/search.html create mode 100644 html/searchindex.js diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/doctrees/environment.pickle b/doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..80899a9ca6e21dec80020b0bf8420c546e7cbba5 GIT binary patch literal 1777153 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 z„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

e-yWX1t5~V_=GU?Y*AwBEKn)rsxq#LzcnAmDn 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 z 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 vQ4isCn8-52kI=*E+?JK3Ei$)H8_b7sk*CO zRV|G!0ye?UDpUf=c1}0BNM0dN5JJF^+~xuD3?T#pAzxK@&$LEf?S|Z0FrusK@4u@4 z@B2^vVe1#ay|&>0?7GevPbb?Xj#C*^UD$3cqdcLhDV`R0KPrAuY}uY7$6DqpqJ>?6 zM8vp=6-|rBSX^`Rh6}x2DdttY32LY~35*O*aD_ndL!OTB1;g9~+yt7*T*Lt}fuK0cQY2GDcnTdfP*R#; z-^j=)O80}9D;gPoM7Impd0eobz4AVtI5U0TuJ>`_aJTJ@0Ay3J6+I+&i5R0e%m$J; zQY`XVg8;S@38FP7@!U!Qvw!Nwc{UpiNpz^_$glJ!iP+T{ab)UdifXEkXp!5FA!GMO z!Is!fwrG1{O_c(pcFn&B111wXhz9RaeQ0Dha2kk;*g%X15hy$uLx};^20V@FWLs%d z*eimkw0P9Yhk&i49gZ@c5}dVI+d;a8#g^el(8iK|?YmTfNYqiNrtuwpmdLM`l-RJh zKSTKMAO7Z?cxmD--1IB#Hd|zO_SoIMd`Q?AU|aSQ==CywxA6NCey=_*a`rkKK>S`Q z&bHXyM;(8iu4B2()3|Zy@;+<&XWviFGXCS(%R%&_9oWv~LC=xl6zZ^NaaNbdrMv5>>!)V3LqW5kbByILul zPIS{e8B#^#;?aU#@?dD0iWA5#Aq>q<`F#)&vYD4@b-Cu zo^A8gdw1g?<+~fUTkloOZvX3N-+s$p@tfF1ZDPwf{QhnZRVDO*+AA^5ibhBq*aL~Q9fK2tGjsY0zqc=gg2~+*+ zqTQPyIN^UhPq+rb30EM@@i}-sWl${ar8j)C{;1(fK7^jhCY$ge7rgrj-u)_g z&yq*I+6?U%rV7O6i;h+mPi)IxH;SZM_-qwsN{&%JmGxZ9NJB)Kbt@U4gmY)NOLi^F zm8%BBO4puUsb_rj-LqXyjX|JB53%90qVEYt%4dH>)Ao0W$dRJzFm2m1H(73qJvP|0 zJw$4%h>@zmAVwd6vOmc%SaxMNj*41i0^<%4GRq?%{iKHwSgMA(5*V!_%ZIMsbgMW@ z%T){~h20!MO)3p-EIzTTt`tPY5l%)@B?!7}8Wm3#RxON%!k5b#DyVB}ba>1S3+tK} z`&BPgMKH{wXeJesBR!%p=ViOZh?ovrc7skhtZ0bIbuHAgt(Xq;F}7QC(ch&z=%pmV zOb?Jn)LqG)kEgI%NK=%$kV1Ktn^FI3ea-Rw%Gt$`DkW9OKrw-G2VR4_MaU-WrR5u1 zT3$e6`<1f`b1&Pg?hfFdW-yWP4Zx}(={P523X8|ciI-6n z+H2^uq>4inlSuv8#+9IZwvFCwglobgJgy1B+IEfPMuxK~dzpi7t8t!W;gpgvte@bh zMO8|KQ@HMDyhAwjXH%J`c`QRTDv-L0>?}16n{RrSL?%4qnwOMa4`Z%f4Tg(Ur|i_O z0=HYiWi*_ltP;VRN-V4kXnWH=VH31Nu5Jc4PFoDfmr?dkhmS7V4d-uQPC5n=1y4{n zynFSIUCU?|x?%!eiok-CqjJi?cAVY0hW#QlCeyov0jBkKc4C-Jx1}1xqi#4!e*j2^ zDBA#!@%3LWVZclxuvrh`4qgp?wO92CTJlNA_?QX&d^aZ@^;dL)F9YERIlNlKP}lsp9EL(h zr0h-Xt%#w(i~xM;Z?LjAA>KaBGZbC!6Nc|JsxW}I1T#Dxfdf@s*mQwH=fgQMo;dCb zNlIsQZRTMC%Akdb;lU?30i!73PVJ2dQimZ$9VkM4ZE zj+-o>w^+gs4j#bI5ANe%ZhLOcRjfWuu;kP)p62W&*Qp+`dtQ!Zxm|6d==H9ms4Y_s z_9|zbv(|Fu1)4LCVSW~|BsbGd4K UL7uVubg~q?pjX9*vhv>kFR!nVZ~y=R literal 0 HcmV?d00001 diff --git a/doctrees/modules.doctree b/doctrees/modules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..714d721c5cefc6f66d6106425251b5abb7fc44de GIT binary patch literal 1231889 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›>%Q*_ZI6d{f!+dsSZs9#YBKzwECwtF~vH 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

2()~4Y)jTRf*WQHo!8X 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�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 .section { + text-align: left; +} + +div.footer { + width: 940px; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +p.caption { + font-family: inherit; + font-size: inherit; +} + + +div.relations { + display: none; +} + + +div.sphinxsidebar { + max-height: 100%; + overflow-y: auto; +} + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px dotted #999; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebarwrapper { + padding: 18px 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0; + margin: -10px 0 0 0px; + text-align: center; +} + +div.sphinxsidebarwrapper h1.logo { + margin-top: -10px; + text-align: center; + margin-bottom: 5px; + text-align: left; +} + +div.sphinxsidebarwrapper h1.logo-name { + margin-top: 0px; +} + +div.sphinxsidebarwrapper p.blurb { + margin-top: 0; + font-style: normal; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Georgia, serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar ul li.toctree-l1 > a { + font-size: 120%; +} + +div.sphinxsidebar ul li.toctree-l2 > a { + font-size: 110%; +} + +div.sphinxsidebar input { + border: 1px solid #CCC; + font-family: Georgia, serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width: 160px; +} + +div.sphinxsidebar .search > div { + display: table-cell; +} + +div.sphinxsidebar hr { + border: none; + height: 1px; + color: #AAA; + background: #AAA; + + text-align: left; + margin-left: 0; + width: 50%; +} + +div.sphinxsidebar .badge { + border-bottom: none; +} + +div.sphinxsidebar .badge:hover { + border-bottom: none; +} + +/* To address an issue with donation coming after search */ +div.sphinxsidebar h3.donation { + margin-top: 10px; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #004B6B; + text-decoration: underline; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Georgia, serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #DDD; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #EAEAEA; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4em; +} + +div.admonition { + margin: 20px 0px; + padding: 10px 30px; + background-color: #EEE; + border: 1px solid #CCC; +} + +div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fafafa; +} + +div.admonition p.admonition-title { + font-family: Georgia, serif; + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +div.highlight { + background-color: #fff; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.warning { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.danger { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.error { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.caution { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.attention { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.important { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.note { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.tip { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.hint { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.seealso { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.topic { + background-color: #EEE; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt, code { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +.hll { + background-color: #FFC; + margin: 0 -12px; + padding: 0 12px; + display: block; +} + +img.screenshot { +} + +tt.descname, tt.descclassname, code.descname, code.descclassname { + font-size: 0.95em; +} + +tt.descname, code.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #EEE; + background: #FDFDFD; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.field-list p { + margin-bottom: 0.8em; +} + +/* Cloned from + * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 + */ +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +table.footnote td.label { + width: .1px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + /* Matches the 30px from the narrow-screen "li > ul" selector below */ + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: #EEE; + padding: 7px 30px; + margin: 15px 0px; + line-height: 1.3em; +} + +div.viewcode-block:target { + background: #ffd; +} + +dl pre, blockquote pre, li pre { + margin-left: 0; + padding-left: 30px; +} + +tt, code { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, code.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fff; +} + +a.reference { + text-decoration: none; + border-bottom: 1px dotted #004B6B; +} + +/* Don't put an underline on images */ +a.image-reference, a.image-reference:hover { + border-bottom: none; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px dotted #004B6B; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt, a:hover code { + background: #EEE; +} + + +@media screen and (max-width: 870px) { + + div.sphinxsidebar { + display: none; + } + + div.document { + width: 100%; + + } + + div.documentwrapper { + margin-left: 0; + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + } + + div.bodywrapper { + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + margin-left: 0; + } + + ul { + margin-left: 0; + } + + li > ul { + /* Matches the 30px from the "ul, ol" selector above */ + margin-left: 30px; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .bodywrapper { + margin: 0; + } + + .footer { + width: auto; + } + + .github { + display: none; + } + + + +} + + + +@media screen and (max-width: 875px) { + + body { + margin: 0; + padding: 20px 30px; + } + + div.documentwrapper { + float: none; + background: #fff; + } + + div.sphinxsidebar { + display: block; + float: none; + width: 102.5%; + margin: 50px -30px -20px -30px; + padding: 10px 20px; + background: #333; + color: #FFF; + } + + div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, + div.sphinxsidebar h3 a { + color: #fff; + } + + div.sphinxsidebar a { + color: #AAA; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.document { + width: 100%; + margin: 0; + } + + div.footer { + display: none; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + padding: 0; + } + + .rtd_doc_footer { + display: none; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .footer { + width: auto; + } + + .github { + display: none; + } +} + + +/* misc. */ + +.revsys-inline { + display: none!important; +} + +/* Hide ugly table cell borders in ..bibliography:: directive output */ +table.docutils.citation, table.docutils.citation td, table.docutils.citation th { + border: none; + /* Below needed in some edge cases; if not applied, bottom shadows appear */ + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + + +/* relbar */ + +.related { + line-height: 30px; + width: 100%; + font-size: 0.9rem; +} + +.related.top { + border-bottom: 1px solid #EEE; + margin-bottom: 20px; +} + +.related.bottom { + border-top: 1px solid #EEE; +} + +.related ul { + padding: 0; + margin: 0; + list-style: none; +} + +.related li { + display: inline; +} + +nav#rellinks { + float: right; +} + +nav#rellinks li+li:before { + content: "|"; +} + +nav#breadcrumbs li+li:before { + content: "\00BB"; +} + +/* Hide certain items when printing */ +@media print { + div.related { + display: none; + } +} \ No newline at end of file diff --git a/html/_static/basic.css b/html/_static/basic.css new file mode 100644 index 0000000..e5179b7 --- /dev/null +++ b/html/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: inherit; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/html/_static/custom.css b/html/_static/custom.css new file mode 100644 index 0000000..2a924f1 --- /dev/null +++ b/html/_static/custom.css @@ -0,0 +1 @@ +/* This file intentionally left blank. */ diff --git a/html/_static/doctools.js b/html/_static/doctools.js new file mode 100644 index 0000000..4d67807 --- /dev/null +++ b/html/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/html/_static/documentation_options.js b/html/_static/documentation_options.js new file mode 100644 index 0000000..d1f2291 --- /dev/null +++ b/html/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '0.0.1', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/html/_static/file.png b/html/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/html/_static/language_data.js b/html/_static/language_data.js new file mode 100644 index 0000000..367b8ed --- /dev/null +++ b/html/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, if available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/html/_static/minus.png b/html/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/html/_static/plus.png b/html/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/html/_static/pygments.css b/html/_static/pygments.css new file mode 100644 index 0000000..04a4174 --- /dev/null +++ b/html/_static/pygments.css @@ -0,0 +1,84 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #8f5902; font-style: italic } /* Comment */ +.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.highlight .g { color: #000000 } /* Generic */ +.highlight .k { color: #004461; font-weight: bold } /* Keyword */ +.highlight .l { color: #000000 } /* Literal */ +.highlight .n { color: #000000 } /* Name */ +.highlight .o { color: #582800 } /* Operator */ +.highlight .x { color: #000000 } /* Other */ +.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ +.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #8f5902 } /* Comment.Preproc */ +.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #a40000 } /* Generic.Deleted */ +.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.highlight .ges { color: #000000 } /* Generic.EmphStrong */ +.highlight .gr { color: #ef2929 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #745334 } /* Generic.Prompt */ +.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #000000 } /* Literal.Date */ +.highlight .m { color: #990000 } /* Literal.Number */ +.highlight .s { color: #4e9a06 } /* Literal.String */ +.highlight .na { color: #c4a000 } /* Name.Attribute */ +.highlight .nb { color: #004461 } /* Name.Builtin */ +.highlight .nc { color: #000000 } /* Name.Class */ +.highlight .no { color: #000000 } /* Name.Constant */ +.highlight .nd { color: #888888 } /* Name.Decorator */ +.highlight .ni { color: #ce5c00 } /* Name.Entity */ +.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #000000 } /* Name.Function */ +.highlight .nl { color: #f57900 } /* Name.Label */ +.highlight .nn { color: #000000 } /* Name.Namespace */ +.highlight .nx { color: #000000 } /* Name.Other */ +.highlight .py { color: #000000 } /* Name.Property */ +.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #000000 } /* Name.Variable */ +.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ +.highlight .w { color: #f8f8f8 } /* Text.Whitespace */ +.highlight .mb { color: #990000 } /* Literal.Number.Bin */ +.highlight .mf { color: #990000 } /* Literal.Number.Float */ +.highlight .mh { color: #990000 } /* Literal.Number.Hex */ +.highlight .mi { color: #990000 } /* Literal.Number.Integer */ +.highlight .mo { color: #990000 } /* Literal.Number.Oct */ +.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ +.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ +.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ +.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ +.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ +.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ +.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ +.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ +.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ +.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #000000 } /* Name.Function.Magic */ +.highlight .vc { color: #000000 } /* Name.Variable.Class */ +.highlight .vg { color: #000000 } /* Name.Variable.Global */ +.highlight .vi { color: #000000 } /* Name.Variable.Instance */ +.highlight .vm { color: #000000 } /* Name.Variable.Magic */ +.highlight .il { color: #990000 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/html/_static/searchtools.js b/html/_static/searchtools.js new file mode 100644 index 0000000..92da3f8 --- /dev/null +++ b/html/_static/searchtools.js @@ -0,0 +1,619 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + "Search finished, found ${resultCount} page(s) matching the search query." + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlinks", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + _parseQuery: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename]. + const normalResults = []; + const nonMainIndexResults = []; + + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase().trim(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + normalResults.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } + } + } + } + + // lookup as object + objectTerms.forEach((term) => + normalResults.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/html/_static/sphinx_highlight.js b/html/_static/sphinx_highlight.js new file mode 100644 index 0000000..8a96c69 --- /dev/null +++ b/html/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '

" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/html/genindex.html b/html/genindex.html new file mode 100644 index 0000000..cb27947 --- /dev/null +++ b/html/genindex.html @@ -0,0 +1,950 @@ + + + + + + + Index — GameTime 0.0.1 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Index

+ +
+ A + | B + | C + | D + | E + | F + | G + | H + | I + | K + | L + | M + | N + | O + | P + | R + | S + | T + | U + | W + | X + | Y + +
+

A

+ + + +
+ +

B

+ + + +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + + +
+ +

F

+ + + +
+ +

G

+ + + +
    +
  • GameTime (class in gametime.src) +
  • +
  • + gametime.src + +
  • +
  • + gametime.src.analyzer + +
  • +
  • + gametime.src.backend + +
  • +
  • + gametime.src.backend.arm_backend + +
  • +
  • + gametime.src.backend.arm_backend.arm_backend + +
  • +
  • + gametime.src.backend.backend + +
  • +
  • + gametime.src.backend.flexpret_backend + +
  • +
  • + gametime.src.backend.flexpret_backend.flexpret_backend + +
  • +
  • + gametime.src.backend.x86_backend + +
  • +
  • + gametime.src.backend.x86_backend.x86_backend + +
  • +
  • + gametime.src.clang_helper + +
  • +
  • + gametime.src.defaults + +
  • +
  • + gametime.src.file_helper + +
  • +
  • + gametime.src.gametime_configuration + +
  • +
  • + gametime.src.gametime_error + +
  • +
  • + gametime.src.histogram + +
  • +
  • + gametime.src.interval + +
  • +
  • + gametime.src.logging_helper + +
  • +
  • + gametime.src.nx_helper + +
  • +
  • + gametime.src.path + +
  • +
  • + gametime.src.path_analyzer + +
  • +
  • + gametime.src.path_generator + +
  • +
+ +

H

+ + + +
+ +

I

+ + + +
+ +

K

+ + + +
+ +

L

+ + + +
+ +

M

+ + + +
+ +

N

+ + + +
+ +

O

+ + +
+ +

P

+ + + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + +
+ +

U

+ + + +
+ +

W

+ + + +
+ +

X

+ + +
+ +

Y

+ + +
+ + + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/html/index.html b/html/index.html new file mode 100644 index 0000000..0d5135c --- /dev/null +++ b/html/index.html @@ -0,0 +1,125 @@ + + + + + + + + Welcome to GameTime’s documentation! — GameTime 0.0.1 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Welcome to GameTime’s documentation!

+ +
+
+

Indices and tables

+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/html/modules.html b/html/modules.html new file mode 100644 index 0000000..9f32150 --- /dev/null +++ b/html/modules.html @@ -0,0 +1,3778 @@ + + + + + + + + GameTime src Documentation — GameTime 0.0.1 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

GameTime src Documentation

+

This document provides comprehensive documentation for all the modules in the GameTime framework.

+
+

Main Package Module

+
+
+class gametime.src.GameTime
+

Bases: object

+

Contains methods and variables that allow a user to import +GameTime as a module.

+

Methods

+ + + + + + +

analyze(project_config)

+
param project_config:
+

object that represents the configuration of a GameTime project.

+
+
+

+
+
+static analyze(project_config: ProjectConfiguration) Analyzer
+
+
Parameters:
+

project_config – object that represents the configuration of a GameTime project.

+
+
Returns:
+

configuration provided.

+
+
+
+ +
+ +
+
+class gametime.src.analyzer.Analyzer(project_config: ProjectConfiguration)
+

Bases: object

+

Maintains information about the code being analyzed, such as +the name of the file that contains the code being analyzed +and the basis paths of the code.

+
+
Parameters:
+

project_config – Object that represents the configuration of a GameTime project.

+
+
+

Methods

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

add_path_bundled_constraint(edges)

Adds the edges provided to the list of path-bundled constraints, if not already present.

add_path_exclusive_constraint(edges)

Adds the edges provided to the list of path-exclusive constraints, if not already present.

create_dag()

Creates the DAG corresponding to the code being analyzed and dumps the DAG, in DOT format, to a temporary file for further analysis.

estimate_edge_weights()

Estimates the weights on the edges of the DAG, using the values of the basis "Path" objects.

generate_basis_paths()

Generates a list of "Path" objects, each of which represents a basis path of the code being analyzed.

generate_overcomplete_basis(k)

Generates an overcomplete basis so that each feasible path can be

iteratively_find_overcomplete_basis(...)

Generates overcomplete basis such the lenth of the longest

load_dag_from_dot_file(location)

Loads the DAG that corresponds to the code being analyzed from a DOT file.

measure_basis_paths()

Measure all generated BASIS_PATHS again

measure_path(path, output_name)

Measure the Path if never measured before.

measure_paths(paths, output_name_prefix)

Measure the list of PATHS.

reset_path_bundled_constraints()

Resets the path-bundled constraints.

reset_path_exclusive_constraints()

Resets the path-exclusive constraints.

+ + + + + + +

generate_paths

+
+
+add_path_bundled_constraint(edges: List[Tuple[str, str]])
+

Adds the edges provided to the list of path-bundled +constraints, if not already present. These edges must +be taken together if at least one of them is taken along +a path through the DAG.

+
+
Parameters:
+

edges (List[Tuple[str, str]] :) – List of edges to add to the list of path-bundled constraints.

+
+
+
+ +
+
+add_path_exclusive_constraint(edges: List[Tuple[str, str]])
+

Adds the edges provided to the list of path-exclusive +constraints, if not already present. These edges must not +be taken together along any path through the DAG.

+
+
Parameters:
+

edges (List[Tuple[str, str]] :) – List of edges to add to the list of path-exclusive constraints.

+
+
+
+ +
+
+basis_matrix: ndarray | None
+

Basis matrix.

+
+ +
+
+create_dag()
+

Creates the DAG corresponding to the code being analyzed +and dumps the DAG, in DOT format, to a temporary file for further +analysis. This method also stores a local copy in a data +structure that represents the DAG.

+
+ +
+
+dag: Dag
+

Data structure for the DAG of the code being analyzed.

+
+ +
+
+estimate_edge_weights()
+

Estimates the weights on the edges of the DAG, using the values +of the basis “Path” objects. The result is stored in the instance +variable “edgeWeights”.

+

Precondition: The basis paths have been generated and have values.

+
+ +
+
+generate_basis_paths()
+

Generates a list of “Path” objects, each of which represents +a basis path of the code being analyzed. The basis “Path” objects +are regenerated each time this method is called.

+
+
Returns:
+

    +
  • List of basis paths of the code being analyzed, each

  • +
  • represented by an object of the “Path” class.

  • +
+

+
+
+
+ +
+
+generate_overcomplete_basis(k: int)
+
+
Generates an overcomplete basis so that each feasible path can be

written as a liner combination of the paths in the basis so that the +L1 norm is at most ‘k’. This method is for testing purposes +only as it exhaustively generates all_temp_files paths in the graph!. Use the +function below for a scalable version.

+
+
+
+
Parameters:
+

k (int :) – Maximum value of L1 norm.

+
+
+
+ +
+
+generate_paths(*args, **kwargs)
+
+ +
+
+iteratively_find_overcomplete_basis(initial_paths: List[List[Tuple[str, str]]], k: int)
+
+
Generates overcomplete basis such the lenth of the longest

feasible path is at most ‘k’. The basis is computed by iteratively +extending the basis with the longest path. Parameter ‘initial_paths’ +specifies the set of paths the iterative algorithm begins with. This +can be any set of paths, in practice we use the paths generated by +the standard algorithm.

+
+
+
+
Parameters:
+
    +
  • initial_paths (List[List[Tuple[str, str]]] :) – A list of initial paths to begin with.

  • +
  • k (int :) – Maximum value of L1 norm.

  • +
+
+
Return type:
+

The set of basis paths.

+
+
+
+ +
+
+load_dag_from_dot_file(location: str)
+

Loads the DAG that corresponds to the code being analyzed from a DOT file.

+
+
Parameters:
+

location (str :) – Location of the file.

+
+
+
+ +
+
+measure_basis_paths()
+

Measure all generated BASIS_PATHS again

+
+ +
+
+measure_path(path: Path, output_name: str) int
+

Measure the Path if never measured before. If no name was set, the parameter output_name is used.

+
+
Parameters:
+
    +
  • path (Path :) – The path object

  • +
  • output_name (str :) – Name for this path.

  • +
+
+
Return type:
+

Measured cycle count for PATH.

+
+
+
+ +
+
+measure_paths(paths: list[Path], output_name_prefix: str) int
+

Measure the list of PATHS. Using prefix and index as name if none is given.

+
+
Parameters:
+
    +
  • paths (list[Path] :) – List of paths to measure.

  • +
  • output_name_prefix (str :) – Prefix to use for the name of each path

  • +
+
+
Return type:
+

List of measured values for the paths.

+
+
+
+ +
+
+path_bundled_constraints: List[List[Tuple[str, str]]]
+

List whose elements are lists of edges that must be taken together, +if at least one is taken along a path through the DAG. For example, +the element [e1, e2] means “if you take e1, then you take e2”.

+
+ +
+
+path_dimension: int
+

Dimension of the vector representing each path.

+
+ +
+
+path_exclusive_constraints: List[List[Tuple[str, str]]]
+

Set whose elements are lists of edges that must not be taken +together along any path through the DAG. For example, the element +[e1, e2] means “if you take e1, you cannot take e2” and +“if you take e2, you cannot take e1”.

+
+ +
+
+project_config: ProjectConfiguration
+

ProjectConfiguration object +that represents the configuration of a GameTime project.

+
+ +
+
+reset_path_bundled_constraints()
+

Resets the path-bundled constraints.

+
+ +
+
+reset_path_exclusive_constraints()
+

Resets the path-exclusive constraints.

+
+ +
+ +

Functions to help interacting with clang on the command +line. Allows creation of dags

+
+
+gametime.src.clang_helper.bc_to_executable(bc_filepath: str, output_folder: str, output_name: str, extra_libs: List[str] = [], extra_flags: List[str] = []) str
+

Compile the LLVM bitcode program into executable in OUTPUT_FILE_FOLDER.

+
+
Parameters:
+
    +
  • bc_filepath (str :) – Path to the input bitcode program.

  • +
  • output_folder (str :) – Storage folder for generated file.

  • +
  • output_name (str :) – Name for generated executable.

  • +
  • extra_libs (List[str] :) – Extra libraries needed for compilation. (Default value = [])

  • +
  • extra_flags (List[str] :) – Extra flags needed for compilation. (Default value = [])

  • +
+
+
Returns:
+

The path to executable.

+
+
Return type:
+

str

+
+
+
+ +
+
+gametime.src.clang_helper.compile_to_llvm_for_analysis(c_filepath: str, output_file_folder: str, output_name: str, extra_libs: List[str] = [], extra_flags: List[str] = [], readable: bool = True) str
+

Compile the C program into bitcode in OUTPUT_FILE_FOLDER using -O0 option to preserve maximum structure.

+
+
Parameters:
+
    +
  • c_filepath (str :) – Path to the input C program.

  • +
  • output_file_folder (str :) – Storage folder for generated file.

  • +
  • output_name (str :) – Name for generated bc.

  • +
  • extra_libs (List[str] :) – Extra libraries needed for compilation. (Default value = [])

  • +
  • extra_flags (List[str] :) – Extra flags needed for compilation. (Default value = [])

  • +
  • readable (bool :) – If set to true, also generate readable LL file. (Default value = False)

  • +
+
+
Returns:
+

The path to bc.

+
+
Return type:
+

str

+
+
+
+ +
+
+gametime.src.clang_helper.compile_to_llvm_for_exec(c_filepath: str, output_file_folder: str, output_name: str, extra_libs: List[str] = [], extra_flags: List[str] = [], readable: bool = False) str
+

Compile the C program into bitcode in OUTPUT_FILE_FOLDER.

+
+
Parameters:
+
    +
  • c_filepath (str :) – Path to the input C program. Main function should be defined.

  • +
  • output_file_folder (str :) – Storage folder for generated file.

  • +
  • output_name (str :) – Name for generated bc.

  • +
  • extra_libs (List[str] :) – Extra libraries needed for compilation. (Default value = [])

  • +
  • extra_flags (List[str] :) – Extra flags needed for compilation. (Default value = [])

  • +
  • readable (bool :) – If set to true, also generate readable LL file. (Default value = False)

  • +
+
+
Returns:
+

The path to bc.

+
+
Return type:
+

str

+
+
+
+ +
+
+gametime.src.clang_helper.dump_object(object_filepath: str, output_folder: str, output_name: str) str
+

Dump the .o file to OUTPUT_NAME.dmp

+
+
Parameters:
+
    +
  • object_filepath (str :) – The name of the .o file to dump

  • +
  • output_folder (str :) – The folder path where .dmp files will be stored

  • +
  • output_name (str :) – Name for dumped .dmp files.

  • +
+
+
Returns:
+

Path of the output OUTPUT_NAME.dmp file

+
+
Return type:
+

str

+
+
+
+ +
+
+gametime.src.clang_helper.generate_dot_file(bc_filename: str, bc_file_folder: str, output_name: str = 'main') str
+

Create dag from .bc file using opt through executing shell commands

+
+
Parameters:
+
    +
  • bc_filename (str :) – location of the compiled llvm .bc file

  • +
  • bc_file_folder (str :) – the folder path where .bc files is stored and where .main.dot file will be stored

  • +
  • output_name (str :) – Name of the generated dot file (Default value = “main”)

  • +
+
+
Returns:
+

Path of the output .dot file

+
+
Return type:
+

str

+
+
+
+ +
+
+gametime.src.clang_helper.inline_functions(bc_filepath: str, output_file_folder: str, output_name: str) str
+

Unrolls the provided input file and output the unrolled version in +the output file using llvm’s opt utility. Could be unreliable if input_file +is not compiled with compile_to_llvm_for_analysis function. If that is the case, the +user might want to generate their own unrolled .bc/.ll file rather than +relying on this built-in function.

+
+
Parameters:
+
    +
  • bc_filepath (str :) – Input .bc/.ll function to loop unroll

  • +
  • output_file_folder (str :) – folder to write unrolled .bc file. Outputs in a +human-readable form already.

  • +
  • output_name (str :) – file to write unrolled .bc file. Outputs in a +human-readable form already.

  • +
+
+
Returns:
+

Path of the output .bc file

+
+
Return type:
+

str

+
+
+
+ +
+
+gametime.src.clang_helper.remove_temp_cil_files(project_config: ProjectConfiguration, all_temp_files=False) None
+

Removes the temporary files created by CIL during its analysis.

+
+
Parameters:
+
    +
  • project_config – ProjectConfiguration this helper is calling from.

  • +
  • all_temp_files – True if all files in temperary directory should be removed.

  • +
+
+
+
+ +
+
+gametime.src.clang_helper.unroll_loops(bc_filepath: str, output_file_folder: str, output_name: str, project_config: ProjectConfiguration) str
+

Unrolls the provided input file and output the unrolled version in +the output file using llvm’s opt utility. Could be unreliable if input_file +is not compiled with compile_to_llvm_for_analysis function. If that is the case, the +user might want to generate their own unrolled .bc/.ll file rather than +relying on this built-in function.

+
+
Parameters:
+
    +
  • input_file (str :) – Input .bc/.ll function to loop unroll

  • +
  • output_file_folder (str :) – folder to write unrolled .bc file. Outputs in a +human-readable form already.

  • +
  • output_name (str :) – file to write unrolled .bc file. Outputs in a +human-readable form already.

  • +
  • project_config (ProjectConfiguration :) – ProjectConfiguration this helper is calling from.

  • +
+
+
Returns:
+

Path of the output .bc file

+
+
Return type:
+

str

+
+
+
+ +

Initializes the various variables, used in different +submodules of GameTime, with default values.

+
+
+gametime.src.defaults.config: GametimeConfiguration = <gametime_configuration.GametimeConfiguration object>
+

Default GametimeConfiguration object +that represents the configuration of GameTime.

+
+ +
+
+gametime.src.defaults.config_file: str = '/home/c/Desktop/research/lf/code/gametime/src/config.yaml.in'
+

Default configuration YAML file.

+
+ +
+
+gametime.src.defaults.gui_dir: str = '/home/c/Desktop/research/lf/code/gametime/src/gui'
+

Default directory that contains the GameTime GUI.

+
+ +
+
+gametime.src.defaults.source_dir: str = '/home/c/Desktop/research/lf/code/gametime/src'
+

Default directory that contains the source files of GameTime.

+
+ +

Exposes miscellaneous functions to perform operations +on files and directories, such as creation, removal and movement.

+
+
+gametime.src.file_helper.create_dir(location: str) None
+

Creates the leaf directory in the path specified, along with any +intermediate-level directories needed to contain the directory. +This is a wrapper around the makedirs() function of +the os module, but does not raise an exception if +the directory is already present,

+
+
Parameters:
+

location (str :) – Location of the directory to be created

+
+
+
+ +
+
+gametime.src.file_helper.move_files(patterns: List[str], source_dir: str, dest_dir: str, overwrite: bool = True) None
+

Moves the files, whose names match any of the patterns in the list +provided, from the source directory whose location is provided to +the destination directory whose location is provided. If a file in +the destination directory has the same name as a file that is being moved +from the source directory, the former is overwritten if overwrite is +set to True; otherwise, the latter will not be moved.

+
+
Parameters:
+
    +
  • patterns (List[str] :) – List of patterns to match filenames against

  • +
  • source_dir (str :) – Location of the source directory

  • +
  • dest_dir (str :) – Location of the destination directory

  • +
  • overwrite (bool :) – Whether to overwrite a file in the destination directory that has the same name as a file that is being moved from the source directory. (Default value = True)

  • +
+
+
+
+ +
+
+gametime.src.file_helper.remove_all_except(patterns: List[str], dir_location: str) None
+

Removes all_temp_files of the files and directories from the directory whose +location is provided, except for those files whose names match any +of the patterns in the list provided.

+
+
Parameters:
+
    +
  • patterns (List[str] :) – List of patterns to match filenames against

  • +
  • dir_location (str :) – Location of the directory to remove files from

  • +
+
+
+
+ +
+
+gametime.src.file_helper.remove_file(location: str) None
+

Removes the file at the provided location. This is a wrapper around +the remove() function of the os module, but does not

+
+
Parameters:
+

location (str :) – Location of the file to be removed

+
+
+
+ +
+
+gametime.src.file_helper.remove_files(patterns: List[str], dir_location: str) None
+

Removes the files from the directory whose location is provided, +whose names match any of the patterns in the list provided.

+
+
Parameters:
+
    +
  • patterns (List[str] :) – List of patterns to match filenames against

  • +
  • dir_location (str :) – Location of the directory to remove files from

  • +
+
+
+
+ +
+
+class gametime.src.gametime_configuration.Endianness
+

Bases: object

+

This class represents the endianness of the target machine.

+
+
+BIG = 0
+
+ +
+
+LITTLE = 1
+
+ +
+ +
+
+class gametime.src.gametime_configuration.GametimeConfiguration
+

Bases: object

+

Stores information necessary to configure GameTime.

+
+ +
+
+gametime.src.gametime_configuration.read_gametime_config_yaml(yaml_config_path: str) GametimeConfiguration
+

Creates GametimeConfiguration from yaml files

+
+
Parameters:
+

yaml_config_path (str :) – path of the yaml config file that contains

+
+
Returns:
+

GametimeConfiguration object that contains information from YAML file at yaml_config_path

+
+
Return type:
+

GametimeConfiguration

+
+
+
+ +

Defines the error that GameTime can throw.

+
+
+exception gametime.src.gametime_error.GameTimeError
+

Bases: Exception

+

Error that GameTime can throw.

+
+ +
+
+exception gametime.src.gametime_error.GameTimeWarning
+

Bases: Warning

+

Warning that GameTime can throw.

+
+ +

Exposes functions to create, and interact with, a histogram +computed from the values of feasible paths generated by GameTime.

+
+
+gametime.src.histogram.compute_histogram(paths: list[Path], bins=10, path_value_range=None, measured=False)
+

Computes a histogram from the values of a list of +feasible paths generated by GameTime. This function is +a wrapper around the function histogram() from +the module numpy. Refer to the documentation of this +function for more information about the computed histogram.

+
+
Parameters:
+
    +
  • paths (list[Path] :) – List of feasible paths generated by GameTime, each represented by a ~gametime.src.path.Path object.

  • +
  • bins – Same purpose as the same-named argument of the function numpy.histogram().

  • +
  • path_value_range – Same purpose as the range argument of the function numpy.histogram(). (Default value = None)

  • +
  • measuredTrue if, and only if, the values that will be used for the histogram are the measured values of the feasible paths. (Default value = False)

  • +
+
+
Returns:
+

Tuple, whose first element is an array of the values of the histogram, and whose second element is an array of the left edges of the bins.

+
+
Return type:
+

Tuple

+
+
+
+ +
+
+gametime.src.histogram.write_histogram_to_file(location, paths, bins=10, path_value_range=None, measured=False)
+

Create a histogram and write it to location.

+
+
Parameters:
+
    +
  • location – The stored folder for histogram file

  • +
  • paths (list[Path] :) – List of feasible paths generated by GameTime, each represented by a ~gametime.src.path.Path object.

  • +
  • bins – Same purpose as the same-named argument of the function numpy.histogram().

  • +
  • path_value_range – Same purpose as the range argument of the function numpy.histogram(). (Default value = None)

  • +
  • measuredTrue if, and only if, the values that will be used for the histogram are the measured values of the feasible paths. (Default value = False)

  • +
+
+
+
+ +

Defines a class that maintains a representation of, +and information about, an interval of values.

+
+
+class gametime.src.interval.Interval(lower: int = None, upper: int = None)
+

Bases: object

+

Maintains a representation of, and information about, +an interval of values.

+
+
Attributes:
+
+
lower_bound

Returns ——- Lower bound of the interval represented by this object, or None if the interval has no finite lower bound.

+
+
upper_bound

Returns ——- Upper bound of the interval represented by this object, or None if the interval has no finite upper bound.

+
+
+
+
+

Methods

+ + + + + + + + + +

has_finite_lower_bound()

+
rtype:
+

True if, and only if, the represented interval has a finite lower bound.

+
+
+

has_finite_upper_bound()

+
rtype:
+

True if, and only if, the represented interval has a finite upper bound.

+
+
+

+
+
+has_finite_lower_bound() bool
+
+
Return type:
+

True if, and only if, the represented interval has a finite lower bound.

+
+
+
+ +
+
+has_finite_upper_bound() bool
+
+
Return type:
+

True if, and only if, the represented interval has a finite upper bound.

+
+
+
+ +
+
+property lower_bound: int
+

rtype: Lower bound of the interval represented by this object, or None if the interval has no finite lower bound.

+
+ +
+
+property upper_bound: int
+

rtype: Upper bound of the interval represented by this object, or None if the interval has no finite upper bound.

+
+ +
+ +

Exposes functions to interact with, and modify an object of, +the logging Python class.

+
+
+gametime.src.logging_helper.initialize(logger: Logger) None
+

Initializes the logger provided with +~logging.Formatter and ~logging.StreamHandler +objects appropriate for GameTime.

+
+
Parameters:
+

logger (logging.Logger :) – Logger to initialize

+
+
+
+ +

Exposes classes and functions to supplement those provided by +the NetworkX graph package.

+
+
+class gametime.src.nx_helper.Dag(*args, **kwargs)
+

Bases: DiGraph

+

Maintains information about the directed acyclic graph (DAG) +of the code being analyzed. It is a subclass of +the ~networkx.DiGraph class of the NetworkX graph package, +and stores additional information relevant to the GameTime analysis, +such as the special ‘default’ edges in the DAG.

+
+
Attributes:
+
+
adj

Graph adjacency object holding the neighbors of each node.

+

This object is a read-only dict-like structure with node keys +and neighbor-dict values. The neighbor-dict is keyed by neighbor +to the edge-data-dict. So G.adj[3][2][‘color’] = ‘blue’ sets +the color of the edge (3, 2) to “blue”.

+

Iterating over G.adj behaves like a dict. Useful idioms include +for nbr, datadict in G.adj[n].items():.

+

The neighbor information is also provided by subscripting the graph. +So for nbr, foovalue in G[node].data(‘foo’, default=1): works.

+

For directed graphs, G.adj holds outgoing (successor) info.

+
+
degree

A DegreeView for the Graph as G.degree or G.degree().

+

The node degree is the number of edges adjacent to the node. +The weighted node degree is the sum of the edge weights for +edges incident to that node.

+

This object provides an iterator for (node, degree) as well as +lookup for the degree for a single node.

+
+
nbunchsingle node, container, or all nodes (default= all nodes)

The view will only report edges incident to these nodes.

+
+
weightstring or None, optional (default=None)

The name of an edge attribute that holds the numerical value used +as a weight. If None, then each edge has weight 1. +The degree is the sum of the edge weights adjacent to the node.

+
+
+
+
DiDegreeView or int

If multiple nodes are requested (the default), returns a DiDegreeView +mapping nodes to their degree. +If a single node is requested, returns the degree of the node as an integer.

+
+
+

in_degree, out_degree

+
>>> G = nx.DiGraph()  # or MultiDiGraph
+>>> nx.add_path(G, [0, 1, 2, 3])
+>>> G.degree(0)  # node 0 with degree 1
+1
+>>> list(G.degree([0, 1, 2]))
+[(0, 1), (1, 2), (2, 2)]
+
+
+
+
edges

An OutEdgeView of the DiGraph as G.edges or G.edges().

+

edges(self, nbunch=None, data=False, default=None)

+

The OutEdgeView provides set-like operations on the edge-tuples +as well as edge attribute lookup. When called, it also provides +an EdgeDataView object which allows control of access to edge +attributes (but does not provide set-like operations). +Hence, G.edges[u, v][‘color’] provides the value of the color +attribute for edge (u, v) while +for (u, v, c) in G.edges.data(‘color’, default=’red’): +iterates through all the edges yielding the color attribute +with default ‘red’ if no color attribute exists.

+
+
nbunchsingle node, container, or all nodes (default= all nodes)

The view will only report edges from these nodes.

+
+
datastring or bool, optional (default=False)

The edge attribute returned in 3-tuple (u, v, ddict[data]). +If True, return edge attribute dict in 3-tuple (u, v, ddict). +If False, return 2-tuple (u, v).

+
+
defaultvalue, optional (default=None)

Value used for edges that don’t have the requested attribute. +Only relevant if data is not True or False.

+
+
+
+
edgesOutEdgeView

A view of edge attributes, usually it iterates over (u, v) +or (u, v, d) tuples of edges, but can also be used for +attribute lookup as edges[u, v][‘foo’].

+
+
+

in_edges, out_edges

+

Nodes in nbunch that are not in the graph will be (quietly) ignored. +For directed graphs this returns the out-edges.

+
>>> G = nx.DiGraph()  # or MultiDiGraph, etc
+>>> nx.add_path(G, [0, 1, 2])
+>>> G.add_edge(2, 3, weight=5)
+>>> [e for e in G.edges]
+[(0, 1), (1, 2), (2, 3)]
+>>> G.edges.data()  # default data is {} (empty dict)
+OutEdgeDataView([(0, 1, {}), (1, 2, {}), (2, 3, {'weight': 5})])
+>>> G.edges.data("weight", default=1)
+OutEdgeDataView([(0, 1, 1), (1, 2, 1), (2, 3, 5)])
+>>> G.edges([0, 2])  # only edges originating from these nodes
+OutEdgeDataView([(0, 1), (2, 3)])
+>>> G.edges(0)  # only edges from node 0
+OutEdgeDataView([(0, 1)])
+
+
+
+
in_degree

An InDegreeView for (node, in_degree) or in_degree for single node.

+

The node in_degree is the number of edges pointing to the node. +The weighted node degree is the sum of the edge weights for +edges incident to that node.

+

This object provides an iteration over (node, in_degree) as well as +lookup for the degree for a single node.

+
+
nbunchsingle node, container, or all nodes (default= all nodes)

The view will only report edges incident to these nodes.

+
+
weightstring or None, optional (default=None)

The name of an edge attribute that holds the numerical value used +as a weight. If None, then each edge has weight 1. +The degree is the sum of the edge weights adjacent to the node.

+
+
+

If a single node is requested +deg : int

+
+

In-degree of the node

+
+

OR if multiple nodes are requested +nd_iter : iterator

+
+

The iterator returns two-tuples of (node, in-degree).

+
+

degree, out_degree

+
>>> G = nx.DiGraph()
+>>> nx.add_path(G, [0, 1, 2, 3])
+>>> G.in_degree(0)  # node 0 with degree 0
+0
+>>> list(G.in_degree([0, 1, 2]))
+[(0, 0), (1, 1), (2, 1)]
+
+
+
+
in_edges

A view of the in edges of the graph as G.in_edges or G.in_edges().

+

in_edges(self, nbunch=None, data=False, default=None):

+
+
nbunchsingle node, container, or all nodes (default= all nodes)

The view will only report edges incident to these nodes.

+
+
datastring or bool, optional (default=False)

The edge attribute returned in 3-tuple (u, v, ddict[data]). +If True, return edge attribute dict in 3-tuple (u, v, ddict). +If False, return 2-tuple (u, v).

+
+
defaultvalue, optional (default=None)

Value used for edges that don’t have the requested attribute. +Only relevant if data is not True or False.

+
+
+
+
in_edgesInEdgeView or InEdgeDataView

A view of edge attributes, usually it iterates over (u, v) +or (u, v, d) tuples of edges, but can also be used for +attribute lookup as edges[u, v][‘foo’].

+
+
+
>>> G = nx.DiGraph()
+>>> G.add_edge(1, 2, color='blue')
+>>> G.in_edges()
+InEdgeView([(1, 2)])
+>>> G.in_edges(nbunch=2)
+InEdgeDataView([(1, 2)])
+
+
+

edges

+
+
name

String identifier of the graph.

+
+
nodes

A NodeView of the Graph as G.nodes or G.nodes().

+

Can be used as G.nodes for data lookup and for set-like operations. +Can also be used as G.nodes(data=’color’, default=None) to return a +NodeDataView which reports specific node data but no set operations. +It presents a dict-like interface as well with G.nodes.items() +iterating over (node, nodedata) 2-tuples and G.nodes[3][‘foo’] +providing the value of the foo attribute for node 3. In addition, +a view G.nodes.data(‘foo’) provides a dict-like interface to the +foo attribute of each node. G.nodes.data(‘foo’, default=1) +provides a default for nodes that do not have attribute foo.

+
+
datastring or bool, optional (default=False)

The node attribute returned in 2-tuple (n, ddict[data]). +If True, return entire node attribute dict as (n, ddict). +If False, return just the nodes n.

+
+
defaultvalue, optional (default=None)

Value used for nodes that don’t have the requested attribute. +Only relevant if data is not True or False.

+
+
+
+
NodeView

Allows set-like operations over the nodes as well as node +attribute dict lookup and calling to get a NodeDataView. +A NodeDataView iterates over (n, data) and has no set operations. +A NodeView iterates over n and includes set operations.

+

When called, if data is False, an iterator over nodes. +Otherwise an iterator of 2-tuples (node, attribute value) +where the attribute is specified in data. +If data is True then the attribute becomes the +entire data dictionary.

+
+
+

If your node data is not needed, it is simpler and equivalent +to use the expression for n in G, or list(G).

+

There are two simple ways of getting a list of all nodes in the graph:

+
>>> G = nx.path_graph(3)
+>>> list(G.nodes)
+[0, 1, 2]
+>>> list(G)
+[0, 1, 2]
+
+
+

To get the node data along with the nodes:

+
>>> G.add_node(1, time="5pm")
+>>> G.nodes[0]["foo"] = "bar"
+>>> list(G.nodes(data=True))
+[(0, {'foo': 'bar'}), (1, {'time': '5pm'}), (2, {})]
+>>> list(G.nodes.data())
+[(0, {'foo': 'bar'}), (1, {'time': '5pm'}), (2, {})]
+
+
+
>>> list(G.nodes(data="foo"))
+[(0, 'bar'), (1, None), (2, None)]
+>>> list(G.nodes.data("foo"))
+[(0, 'bar'), (1, None), (2, None)]
+
+
+
>>> list(G.nodes(data="time"))
+[(0, None), (1, '5pm'), (2, None)]
+>>> list(G.nodes.data("time"))
+[(0, None), (1, '5pm'), (2, None)]
+
+
+
>>> list(G.nodes(data="time", default="Not Available"))
+[(0, 'Not Available'), (1, '5pm'), (2, 'Not Available')]
+>>> list(G.nodes.data("time", default="Not Available"))
+[(0, 'Not Available'), (1, '5pm'), (2, 'Not Available')]
+
+
+

If some of your nodes have an attribute and the rest are assumed +to have a default attribute value you can create a dictionary +from node/attribute pairs using the default keyword argument +to guarantee the value is never None:

+
>>> G = nx.Graph()
+>>> G.add_node(0)
+>>> G.add_node(1, weight=2)
+>>> G.add_node(2, weight=3)
+>>> dict(G.nodes(data="weight", default=1))
+{0: 1, 1: 2, 2: 3}
+
+
+
+
out_degree

An OutDegreeView for (node, out_degree)

+

The node out_degree is the number of edges pointing out of the node. +The weighted node degree is the sum of the edge weights for +edges incident to that node.

+

This object provides an iterator over (node, out_degree) as well as +lookup for the degree for a single node.

+
+
nbunchsingle node, container, or all nodes (default= all nodes)

The view will only report edges incident to these nodes.

+
+
weightstring or None, optional (default=None)

The name of an edge attribute that holds the numerical value used +as a weight. If None, then each edge has weight 1. +The degree is the sum of the edge weights adjacent to the node.

+
+
+

If a single node is requested +deg : int

+
+

Out-degree of the node

+
+

OR if multiple nodes are requested +nd_iter : iterator

+
+

The iterator returns two-tuples of (node, out-degree).

+
+

degree, in_degree

+
>>> G = nx.DiGraph()
+>>> nx.add_path(G, [0, 1, 2, 3])
+>>> G.out_degree(0)  # node 0 with degree 1
+1
+>>> list(G.out_degree([0, 1, 2]))
+[(0, 1), (1, 1), (2, 1)]
+
+
+
+
out_edges

An OutEdgeView of the DiGraph as G.edges or G.edges().

+

edges(self, nbunch=None, data=False, default=None)

+

The OutEdgeView provides set-like operations on the edge-tuples +as well as edge attribute lookup. When called, it also provides +an EdgeDataView object which allows control of access to edge +attributes (but does not provide set-like operations). +Hence, G.edges[u, v][‘color’] provides the value of the color +attribute for edge (u, v) while +for (u, v, c) in G.edges.data(‘color’, default=’red’): +iterates through all the edges yielding the color attribute +with default ‘red’ if no color attribute exists.

+
+
nbunchsingle node, container, or all nodes (default= all nodes)

The view will only report edges from these nodes.

+
+
datastring or bool, optional (default=False)

The edge attribute returned in 3-tuple (u, v, ddict[data]). +If True, return edge attribute dict in 3-tuple (u, v, ddict). +If False, return 2-tuple (u, v).

+
+
defaultvalue, optional (default=None)

Value used for edges that don’t have the requested attribute. +Only relevant if data is not True or False.

+
+
+
+
edgesOutEdgeView

A view of edge attributes, usually it iterates over (u, v) +or (u, v, d) tuples of edges, but can also be used for +attribute lookup as edges[u, v][‘foo’].

+
+
+

in_edges, out_edges

+

Nodes in nbunch that are not in the graph will be (quietly) ignored. +For directed graphs this returns the out-edges.

+
>>> G = nx.DiGraph()  # or MultiDiGraph, etc
+>>> nx.add_path(G, [0, 1, 2])
+>>> G.add_edge(2, 3, weight=5)
+>>> [e for e in G.edges]
+[(0, 1), (1, 2), (2, 3)]
+>>> G.edges.data()  # default data is {} (empty dict)
+OutEdgeDataView([(0, 1, {}), (1, 2, {}), (2, 3, {'weight': 5})])
+>>> G.edges.data("weight", default=1)
+OutEdgeDataView([(0, 1, 1), (1, 2, 1), (2, 3, 5)])
+>>> G.edges([0, 2])  # only edges originating from these nodes
+OutEdgeDataView([(0, 1), (2, 3)])
+>>> G.edges(0)  # only edges from node 0
+OutEdgeDataView([(0, 1)])
+
+
+
+
pred

Graph adjacency object holding the predecessors of each node.

+

This object is a read-only dict-like structure with node keys +and neighbor-dict values. The neighbor-dict is keyed by neighbor +to the edge-data-dict. So G.pred[2][3][‘color’] = ‘blue’ sets +the color of the edge (3, 2) to “blue”.

+

Iterating over G.pred behaves like a dict. Useful idioms include +for nbr, datadict in G.pred[n].items():. A data-view not provided +by dicts also exists: for nbr, foovalue in G.pred[node].data(‘foo’): +A default can be set via a default argument to the data method.

+
+
succ

Graph adjacency object holding the successors of each node.

+

This object is a read-only dict-like structure with node keys +and neighbor-dict values. The neighbor-dict is keyed by neighbor +to the edge-data-dict. So G.succ[3][2][‘color’] = ‘blue’ sets +the color of the edge (3, 2) to “blue”.

+

Iterating over G.succ behaves like a dict. Useful idioms include +for nbr, datadict in G.succ[n].items():. A data-view not provided +by dicts also exists: for nbr, foovalue in G.succ[node].data(‘foo’): +and a default can be set via a default argument to the data method.

+

The neighbor information is also provided by subscripting the graph. +So for nbr, foovalue in G[node].data(‘foo’, default=1): works.

+

For directed graphs, G.adj is identical to G.succ.

+
+
+
+
+

Methods

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

add_edge(u_of_edge, v_of_edge, **attr)

Add an edge between u and v.

add_edges_from(ebunch_to_add, **attr)

Add all the edges in ebunch_to_add.

add_node(node_for_adding, **attr)

Add a single node node_for_adding and update node attributes.

add_nodes_from(nodes_for_adding, **attr)

Add multiple nodes.

add_weighted_edges_from(ebunch_to_add[, weight])

Add weighted edges in ebunch_to_add with specified weight attr

adjacency()

Returns an iterator over (node, adjacency dict) tuples for all nodes.

adjlist_inner_dict_factory

alias of dict

adjlist_outer_dict_factory

alias of dict

clear()

Remove all nodes and edges from the graph.

clear_edges()

Remove all edges from the graph without altering nodes.

copy([as_view])

Returns a copy of the graph.

edge_attr_dict_factory

alias of dict

edge_subgraph(edges)

Returns the subgraph induced by the specified edges.

get_edge_data(u, v[, default])

Returns the attribute dictionary associated with edge (u, v).

get_edges(nodes)

+
param nodes:
+

Nodes of a path in the directed acyclic graph

+
+
+

get_node_label(node)

gets node label from node ID

graph_attr_dict_factory

alias of dict

has_edge(u, v)

Returns True if the edge (u, v) is in the graph.

has_node(n)

Returns True if the graph contains the node n.

has_predecessor(u, v)

Returns True if node u has predecessor v.

has_successor(u, v)

Returns True if node u has successor v.

is_directed()

Returns True if graph is directed, False otherwise.

is_multigraph()

Returns True if graph is a multigraph, False otherwise.

load_variables()

Loads the instance variables of this object with appropriate values.

nbunch_iter([nbunch])

Returns an iterator over nodes contained in nbunch that are also in the graph.

neighbors(n)

Returns an iterator over successor nodes of n.

node_attr_dict_factory

alias of dict

node_dict_factory

alias of dict

number_of_edges([u, v])

Returns the number of edges between two nodes.

number_of_nodes()

Returns the number of nodes in the graph.

order()

Returns the number of nodes in the graph.

predecessors(n)

Returns an iterator over predecessor nodes of n.

remove_edge(u, v)

Remove the edge between u and v.

remove_edges_from(ebunch)

Remove all edges specified in ebunch.

remove_node(n)

Remove node n.

remove_nodes_from(nodes)

Remove multiple nodes.

reset_edge_weights()

Resets the weights assigned to the edges of the DAG.

reverse([copy])

Returns the reverse of the graph.

size([weight])

Returns the number of edges or total of all edge weights.

subgraph(nodes)

Returns a SubGraph view of the subgraph induced on nodes.

successors(n)

Returns an iterator over successor nodes of n.

to_directed([as_view])

Returns a directed representation of the graph.

to_directed_class()

Returns the class to use for empty directed copies.

to_undirected([reciprocal, as_view])

Returns an undirected representation of the digraph.

to_undirected_class()

Returns the class to use for empty undirected copies.

update([edges, nodes])

Update the graph using nodes/edges/graphs as input.

+ + + + + + +

initialize_dictionaries

+
+
+all_edges: List[Tuple[str, str]]
+

List of edges in the DAG.

+
+ +
+
+all_nodes: List[str]
+

List of nodes in the DAG.

+
+ +
+
+edge_weights: List[int]
+

List of the weights assigned to the edges in the DAG, arranged +in the same order as the edges are in the list of all_temp_files edges.

+
+ +
+
+edges_indices: Dict[Tuple[str, str]:int]
+

Dictionary that maps edges to their indices in the list of all_temp_files edges. +This is maintained for efficiency purposes.

+
+ +
+
+edges_reduced: List[Tuple[str, str]]
+

List of non-special edges in the DAG.

+
+ +
+
+edges_reduced_indices: Dict[Tuple[str, str], int]
+

Dictionary that maps non-special edges to their indices in the +list of all_temp_files edges. This is maintained for efficiency purposes.

+
+ +
+
+static get_edges(nodes: List[str]) List[Tuple[str, str]]
+
+
Parameters:
+

nodes (List[str] :) – Nodes of a path in the directed acyclic graph

+
+
Return type:
+

List of edges that lie along the path.

+
+
+
+ +
+
+get_node_label(node: int) str
+

gets node label from node ID

+
+
Parameters:
+

node (int :) – ID of the node of interest

+
+
Return type:
+

label corresponding to the node. (code corresponding to the node in LLVM IR)

+
+
+
+ +
+
+initialize_dictionaries()
+
+ +
+
+load_variables()
+

Loads the instance variables of this object with appropriate +values. This method is useful when the DAG is loaded from a DOT file.

+
+ +
+
+nodes_except_sink: List[str]
+

List of nodes in the DAG that are not the sink. +We assume that there is only one sink. +This is maintained for efficiency purposes.

+
+ +
+
+nodes_except_sink_indices: Dict[str, int]
+

Dictionary that maps nodes (except the sink) to their indices in +the list of all_temp_files nodes (except the sink). This is maintained for +efficiency purposes.

+
+ +
+
+nodes_except_source_sink: List[str]
+

List of nodes in the DAG that are neither the source nor the sink. +We assume that there is only one source and one sink. This is +maintained for efficiency purposes.

+
+ +
+
+nodes_except_source_sink_indices: Dict[str, int]
+

Dictionary that maps nodes (except the source and the sink) to their +indices in the list of all_temp_files nodes (except the source and the sink). +This is maintained for efficiency purposes.

+
+ +
+
+nodes_indices: Dict[str, int]
+

Dictionary that maps nodes to their indices in the list of all_temp_files nodes. +This is maintained for efficiency purposes.

+
+ +
+
+num_edges: int
+

Number of edges in the DAG.

+
+ +
+
+num_nodes: int
+

Number of nodes in the DAG.

+
+ +
+
+num_paths: int
+

Number of paths in the DAG.

+
+ +
+
+reset_edge_weights()
+

Resets the weights assigned to the edges of the DAG.

+
+ +
+
+sink: str
+

Sink of the DAG.

+
+ +
+
+special_edges: Dict[str, Tuple[str, str]]
+

Dictionary that maps nodes to the special (‘default’) edges.

+
+ +
+ +
+
+gametime.src.nx_helper.construct_dag(location: str) tuple[Dag, bool]
+

Constructs a ~gametime.nxHelper.Dag object to represent +the directed acyclic graph described in DOT format in the file provided.

+
+
Parameters:
+

location (str :) – Path to the file describing a directed acyclic graph in DOT format

+
+
Returns:
+

Object that represents the directed acyclic graph.

+
+
Return type:
+

~gametime.src.nx_helper.Dag

+
+
+
+ +
+
+gametime.src.nx_helper.find_root_node(G)
+
+
Parameters:
+

G – The graph to find root node in

+
+
Returns:
+

Root node of G or None if one doesn’t exist.

+
+
Return type:
+

Node

+
+
+
+ +
+
+gametime.src.nx_helper.get_random_path(dag: Dag, source: str, sink: str) List[str]
+
+
Parameters:
+
    +
  • dag (Dag :) – DAG represented by a ~gametime.src.nx_helper.Dag object.

  • +
  • source (str :) – source to start path with

  • +
  • sink (str :) – sink to end path with

  • +
+
+
Returns:
+

Random path in the DAG provided from the input source node to +the input sink node, represented as a list of nodes arranged in +order of traversal from source to sink.

+
+
Return type:
+

List[str]

+
+
+
+ +
+
+gametime.src.nx_helper.has_cycles(dag: Dag) bool
+
+
Parameters:
+

dag (Dag :) – DAG represented by a dag

+
+
Returns:
+

True if, and only if, the DAG provided has cycles.

+
+
Return type:
+

bool

+
+
+
+ +
+
+gametime.src.nx_helper.num_paths(dag: Dag, source: str, sink: str) int
+
+
Parameters:
+
    +
  • dag – DAG represented by a ~gametime.src.nx_helper.Dag object.

  • +
  • source – Source node.

  • +
  • sink – Sink node.

  • +
+
+
Returns:
+

Number of paths in the DAG provided. Note: Passed in DAG must be actually acyclic.

+
+
Return type:
+

int

+
+
+
+ +
+
+gametime.src.nx_helper.remove_back_edges_to_make_dag(G, root)
+

Remove all back edges from G to make it a DAG. Assuming G is connected and rooted at ROOT.

+
+
Parameters:
+
    +
  • G – The graph to remove root edges

  • +
  • root – The root node of G to start DFS with

  • +
+
+
Return type:
+

DAG version of G with all back edges removed.

+
+
+
+ +
+
+gametime.src.nx_helper.write_dag_to_dot_file(dag: Dag, location: str, dag_name: str = '', edges_to_labels: Dict[Tuple[str, str], str] = None, highlighted_edges: List[Tuple[str, str]] = None, highlight_color: str = 'red')
+

Writes the directed acyclic graph provided to a file in DOT format.

+
+
Parameters:
+
    +
  • dag (Dag :) – Dag to save to dot

  • +
  • location (str :) – Location of the file.

  • +
  • dag_name (str :) – Name of the directed acyclic graph, as will be written to +the file. If this argument is not provided, the directed +acyclic graph will not have a name. (Default value = “”)

  • +
  • edges_to_labels (Dict[Tuple[str, str], str]:) – Dictionary that maps an edge to the label that will annotate +the edge when the DOT file is processed by a visualization tool. +If this argument is not provided, these annotations will not +be made. (Default value = None)

  • +
  • highlighted_edges (List[Tuple[str, str]]:) – List of edges that will be highlighted when the DOT file is +processed by a visualization tool. If this argument +is not provided, no edges will be highlighted. (Default value = None)

  • +
  • highlight_color (str:) – Color of the highlighted edges. This argument can be any value +that is legal in the DOT format. If the highlightedEdges argument +is not provided, this argument is ignored. (Default value = “red”)

  • +
+
+
+
+ +
+
+class gametime.src.path_analyzer.PathAnalyzer(preprocessed_path: str, project_config: ProjectConfiguration, dag: Dag, path: Path, path_name: str, repeat: int = 1)
+

Bases: object

+

Methods

+ + + + + + +

measure_path(backend)

run the entire simulation on the given path

+
+
+measure_path(backend: Backend) int
+

run the entire simulation on the given path

+
+
Parameters:
+

backend (Backend :) – Backend object used for simulation

+
+
Return type:
+

the total measurement of path given by backend

+
+
+
+ +
+ +

Defines classes and methods to generate objects of the “Path” class +that represent different types of feasible paths in the code being analyzed, +such as those with the worst-case values.

+
+
+class gametime.src.path_generator.PathGenerator
+

Bases: object

+

Exposes static methods to generate objects of the Path class that +represent different types of feasible paths in the code being analyzed.

+

This class is closely related to the Analyzer class: except +for the private helper methods, all of the static methods +can also be accessed as instance methods of an Analyzer object.

+

These methods are maintained in this class to keep the codebase cleaner +and more modular. Instances of this class should not need to be made.

+

Methods

+ + + + + + +

generate_paths(analyzer[, num_paths, ...])

Generates a list of feasible paths of the code being analyzed, each represented by an object of the Path class.

+
+
+static generate_paths(analyzer, num_paths=10, path_type=0, interval=None, use_ob_extraction=False)
+

Generates a list of feasible paths of the code being analyzed, +each represented by an object of the Path class.

+

The type of the generated paths is determined by the path_type +argument, which is a class variable of the PathType class. +By default, this argument is PathType.WORST_CASE. For +a description of the types, refer to the documentation of +the PathType class.

+

The num_paths argument is an upper bound on how many paths should +be generated, which is 5 by default. This argument is ignored if +this method is used to generate all of the feasible paths of the code +being analyzed.

+

The interval argument is an Interval object that represents +the interval of values that the generated paths can have. If +no Interval object is provided, the interval of values is +considered to be all real numbers.

+

This method is idempotent: a second call to this method will produce +the same list of Path objects as the first call, assuming that +nothing has changed between the two calls.

+

Precondition: The basis Path objects of the input Analyzer +object have values associated with them. Refer to either the method +loadBasisValuesFromFile or the method loadBasisValues in +the Analyzer class.

+
+
Parameters:
+
    +
  • analyzerAnalyzer object that maintains information about +the code being analyzed.

  • +
  • num_paths – Upper bound on the number of paths to generate.

  • +
  • path_type – Type of paths to generate, represented by a class variable of +the PathType class. The different types of paths are +described in the documentation of the PathType class.

  • +
  • intervalInterval object that represents the interval of +values that the generated paths can have. If no +Interval object is provided, the interval of values +is considered to be all real numbers.

  • +
  • use_ob_extraction – Boolean value specifiying whether to use overcomplete +basis extraction algorithm

  • +
+
+
Returns:
+

List of feasible paths of the code being analyzed, each +represented by an object of the Path class.

+
+
Return type:
+

List[Path]

+
+
+
+ +
+ +
+
+class gametime.src.path_generator.PathType
+

Bases: object

+

Represents the type of paths that can be generated.

+

Methods

+ + + + + + +

get_description(path_type)

+
param path_type:
+

One of the predefined path types

+
+
+

+
+
+ALL_DECREASING = 3
+

All feasible paths, arranged in decreasing order of value.

+
+ +
+
+ALL_INCREASING = 4
+

All feasible paths, arranged in increasing order of value.

+
+ +
+
+BEST_CASE = 1
+

Best-case feasible paths, arranged in increasing order of value.

+
+ +
+
+RANDOM = 2
+

Random feasible paths.

+
+ +
+
+WORST_CASE = 0
+

Worst-case feasible paths, arranged in decreasing order of value.

+
+ +
+
+static get_description(path_type)
+
+
Parameters:
+

path_type – One of the predefined path types

+
+
Return type:
+

One-word description of the path type provided.

+
+
+
+ +
+ +

Defines a class that maintains a representation of, and information about, +a single path in the code that is being analyzed.

+
+
+class gametime.src.path.Path(ilp_problem: IlpProblem = None, nodes: List[str] = None, line_numbers: List[str] = None, conditions: List[str] = None, condition_edges: Dict[int, Tuple[str]] = None, condition_truths: Dict[str, bool] = None, array_accesses: Dict[str, List[Tuple[int]]] = None, agg_index_exprs: IndexExpression = None, assignments: Dict[str, str] = None, predicted_value: float = 0, measured_value: float = 0)
+

Bases: object

+

Maintains a representation of, and information about, +a single path in the code that is being analyzed.

+

Methods

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

get_agg_index_exprs()

+
returns:
+

String representation of the expressions associated

+
+
+

get_array_accesses()

+
returns:
+

String representation of the array accesses made in

+
+
+

get_assignments()

+
returns:
+

String representation of the assignments to variables

+
+
+

get_condition_edges()

+
returns:
+

String representation of the numbers of the conditions along

+
+
+

get_condition_truths()

+
returns:
+

String representation of the line numbers of the conditional points

+
+
+

get_conditions()

+
returns:
+

String representation of the conditions along this path.

+
+
+

get_edges_for_conditions(condition_nums)

+
param condition_nums:
+

List of conditions

+
+
+

get_line_numbers()

+
returns:
+

String representation of the line numbers of

+
+
+

get_measured_value()

+
returns:
+

String representation of the measured value

+
+
+

get_nodes()

+
returns:
+

String representation of the IDs of the nodes in

+
+
+

get_predicted_value()

+
returns:
+

String representation of the predicted value

+
+
+

read_agg_index_exprs_from_file(location)

Reads, from a file, information about the expressions associated with the temporary index variables of aggregate accesses along a path.

read_array_accesses_from_file(location)

Reads information about the array accesses made in conditions along a path from a file.

read_assignments_from_file(location)

Reads, from a file, the assignments to variables that would drive an execution of the code under analysis along a path.

read_condition_edges_from_file(location)

Reads the numbers of the conditions along a path, and the edges that are associated with the conditions, from a file.

read_condition_truths_from_file(location)

Reads the line numbers of the conditional points in the code being analyzed, along with their truth values along a path, from a file.

read_conditions_from_file(location)

Reads the conditions along a path from a file.

read_line_numbers_from_file(location)

Reads the line numbers of the source-level statements that lie along a path from a file.

read_measured_value_from_file(location)

Reads the measured value of a path from a file.

read_nodes_from_file(location)

Reads the IDs of the nodes in a directed acyclic graph along a path from a file.

read_predicted_value_from_file(location)

Reads the predicted value of a path from a file.

set_measured_value(value)

Sets the measured value (runtime, energy consumption, etc.) of this path.

set_predicted_value(value)

Sets the predicted value (runtime, energy consumption, etc.) of this path.

write_agg_index_exprs_to_file(location)

Writes information about the expressions associated with the temporary index variables of aggregate accesses along this path to a file.

write_array_accesses_to_file(location)

Writes information about the array accesses made in conditions along this path to a file.

write_assignments_to_file(location)

Writes the assignments to variables that would drive an execution of the code under analysis along this path to a file.

write_condition_edges_to_file(location)

Writes the numbers of the conditions along this path, and the edges that are associated with the conditions, to a file.

write_condition_truths_to_file(location)

Writes the line numbers of the conditional points in the code being analyzed, along with their truth values, to a file.

write_conditions_to_file(location)

Writes the conditions along this path to a file.

write_ilp_problem_to_lp_file(location)

Writes, to an LP file, the integer linear programming problem that, when solved, produced this path.

write_line_numbers_to_file(location)

Writes the line numbers of the source-level statements that lie along this path to a file.

write_measured_value_to_file(location)

Writes the measured value of this path to a file.

write_nodes_to_file(location)

Writes the IDs of the nodes in a directed acyclic graph along this path to a file.

write_predicted_value_to_file(location)

Writes the predicted value of this path to a file.

+
+
+agg_index_exprs
+

Information about the expressions associated with the temporary +index variables of aggregate accesses along this path, represented +as a dictionary that maps the number of a temporary index variable +to an IndexExpression object.

+
+ +
+
+array_accesses
+

Information about array accesses made in conditions along this path, +represented as a dictionary that maps the name of an array to a +list of tuples, each of which contains the numbers of the temporary +index variables in an array access.

+
+ +
+
+assignments
+

Dictionary of assignments to variables that would drive an execution +of the code along this path.

+
+ +
+
+condition_edges
+

Dictionary that associates the number of a condition with +the edge in the directed acyclic graph that is associated with +the condition. The edge is represented as a tuple.

+
+ +
+
+condition_truths
+

Dictionary that associates the line numbers of the conditional points +in the code being analyzed with their truth values.

+
+ +
+
+conditions
+

Conditions along this path, represented as a list of strings.

+
+ +
+
+get_agg_index_exprs() str
+
+
Returns:
+

String representation of the expressions associated +with the temporary index variables of aggregate accesses +along a path.

+
+
Return type:
+

str

+
+
+
+ +
+
+get_array_accesses() str
+
+
Returns:
+

String representation of the array accesses made in +conditions along this path.

+
+
Return type:
+

str

+
+
+
+ +
+
+get_assignments() str
+
+
Returns:
+

String representation of the assignments to variables +that would drive an execution of the code under analysis +along this path.

+
+
Return type:
+

str

+
+
+
+ +
+
+get_condition_edges() str
+
+
Returns:
+

String representation of the numbers of the conditions along +this path, and the edges that are associated with the conditions.

+
+
Return type:
+

str

+
+
+
+ +
+
+get_condition_truths() str
+
+
Returns:
+

String representation of the line numbers of the conditional points +in the code being analyzed, along with their truth values.

+
+
Return type:
+

str

+
+
+
+ +
+
+get_conditions() str
+
+
Returns:
+

String representation of the conditions along this path.

+
+
Return type:
+

str

+
+
+
+ +
+
+get_edges_for_conditions(condition_nums: List[int]) List[Tuple[str]]
+
+
Parameters:
+

condition_nums (List[int] :) – List of conditions

+
+
Returns:
+

List of the edges that are associated with the conditions +(along this path) whose numbers are provided. Each edge is +represented as a tuple, and appears only once in the list.

+
+
Return type:
+

List[Tuple[str]]

+
+
+
+ +
+
+get_line_numbers() str
+
+
Returns:
+

String representation of the line numbers of +the source-level statements that lie along this path.

+
+
Return type:
+

str

+
+
+
+ +
+
+get_measured_value() str
+
+
Returns:
+

String representation of the measured value +(runtime, energy consumption, etc.) of this path.

+
+
Return type:
+

str

+
+
+
+ +
+
+get_nodes() str
+
+
Returns:
+

String representation of the IDs of the nodes in +a directed acyclic graph along this path.

+
+
Return type:
+

str

+
+
+
+ +
+
+get_predicted_value() str
+
+
Returns:
+

String representation of the predicted value +(runtime, energy consumption, etc.) of this path.

+
+
Return type:
+

str

+
+
+
+ +
+
+ilp_problem
+

Integer linear programming problem that, when solved, produced +this path, represented as an IlpProblem object.

+
+ +
+
+line_numbers
+

Line numbers of the source-level statements along this path, +represented as a list of positive integers.

+
+ +
+
+measured_value
+

Measured value (runtime, energy consumption, etc.) +of this path, represented as a number (either +an integer or a floating-point number).

+
+ +
+
+nodes
+

IDs of the nodes in a directed acyclic graph along this path, +represented as a list of strings.

+
+ +
+
+predicted_value
+

Predicted value (runtime, energy consumption, etc.) +of this path, represented as a number (either +an integer or a floating-point number).

+
+ +
+
+static read_agg_index_exprs_from_file(location: str) Dict[int, IndexExpression]
+

Reads, from a file, information about the expressions associated with +the temporary index variables of aggregate accesses along a path.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
Returns:
+

Dictionary that maps the number of a temporary index +variable to an IndexExpression object.

+
+
Return type:
+

Dict[int, IndexExpression]

+
+
+
+ +
+
+static read_array_accesses_from_file(location: str) Dict[str, List[Tuple[int, int]]]
+

Reads information about the array accesses made in conditions +along a path from a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
Returns:
+

Dictionary that maps an array name to a list of tuples, each of +which contains the numbers of the temporary index variables +in an array access.

+
+
Return type:
+

Dict[str, List[Tuple[int, int]]]

+
+
+
+ +
+
+static read_assignments_from_file(location: str) Dict[str, str]
+

Reads, from a file, the assignments to variables that would +drive an execution of the code under analysis along a path.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
Returns:
+

Dictionary of assignments to variables that would +drive an execution of the code under analysis along a path.

+
+
Return type:
+

Dict[str, str]

+
+
+
+ +
+
+static read_condition_edges_from_file(location: str) Dict[int, Tuple[str]]
+

Reads the numbers of the conditions along a path, and +the edges that are associated with the conditions, from a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
Returns:
+

Dictionary that associates the number of a condition with +the edge in the directed acyclic graph that is associated with +the condition. The edge is represented as a tuple.

+
+
Return type:
+

Dict[int, Tuple[str]]

+
+
+
+ +
+
+static read_condition_truths_from_file(location: str) Dict[int, bool]
+

Reads the line numbers of the conditional points in the code +being analyzed, along with their truth values along a path, +from a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
Returns:
+

Dictionary that associates the line numbers of +the conditional points in the code being analyzed with +their truth values.

+
+
Return type:
+

Dict[int, bool]

+
+
+
+ +
+
+static read_conditions_from_file(location: str) List[str]
+

Reads the conditions along a path from a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
Returns:
+

Conditions along a path, represented as a list of strings.

+
+
Return type:
+

List[str]

+
+
+
+ +
+
+static read_line_numbers_from_file(location: str) List[int]
+

Reads the line numbers of the source-level statements that +lie along a path from a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
Returns:
+

Line numbers of the source-level statements along this path, +represented as a list of positive integers.

+
+
Return type:
+

List[int]

+
+
+
+ +
+
+static read_measured_value_from_file(location: str) float
+

Reads the measured value of a path from a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
Returns:
+

Measured value of a path, represented as a number +(either an integer or a floating-point number).

+
+
Return type:
+

float

+
+
+
+ +
+
+static read_nodes_from_file(location: str) List[str]
+

Reads the IDs of the nodes in a directed acyclic graph +along a path from a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
Returns:
+

IDs of the nodes in a directed acyclic graph along a path, +represented as a list of strings.

+
+
Return type:
+

List[str]

+
+
+
+ +
+
+static read_predicted_value_from_file(location: str) float
+

Reads the predicted value of a path from a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
Returns:
+

Predicted value of a path, represented as a number +(either an integer or a floating-point number).

+
+
Return type:
+

float

+
+
+
+ +
+
+set_measured_value(value: float) None
+

Sets the measured value (runtime, energy consumption, etc.) +of this path.

+
+
Parameters:
+

value (float :) – Value to set as the measured value of this path

+
+
+
+ +
+
+set_predicted_value(value: float)
+

Sets the predicted value (runtime, energy consumption, etc.) +of this path.

+
+
Parameters:
+

value (float :) – Value to set as the predicted value of this path

+
+
+
+ +
+
+write_agg_index_exprs_to_file(location: str) None
+

Writes information about the expressions associated with the +temporary index variables of aggregate accesses along this path +to a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
+
+ +
+
+write_array_accesses_to_file(location: str) None
+

Writes information about the array accesses made in conditions +along this path to a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
+
+ +
+
+write_assignments_to_file(location: str) None
+

Writes the assignments to variables that would drive an execution +of the code under analysis along this path to a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
+
+ +
+
+write_condition_edges_to_file(location: str) None
+

Writes the numbers of the conditions along this path, and +the edges that are associated with the conditions, to a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
+
+ +
+
+write_condition_truths_to_file(location: str) None
+

Writes the line numbers of the conditional points in the code +being analyzed, along with their truth values, to a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
+
+ +
+
+write_conditions_to_file(location: str) None
+

Writes the conditions along this path to a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
+
+ +
+
+write_ilp_problem_to_lp_file(location) None
+

Writes, to an LP file, the integer linear programming problem that, +when solved, produced this path.

+
+
Parameters:
+

location – Location of the file

+
+
+
+ +
+
+write_line_numbers_to_file(location: str) None
+

Writes the line numbers of the source-level statements that +lie along this path to a file.

+
+
Parameters:
+

location (str:) – Location of the file

+
+
+
+ +
+
+write_measured_value_to_file(location: str) None
+

Writes the measured value of this path to a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
+
+ +
+
+write_nodes_to_file(location: str) None
+

Writes the IDs of the nodes in a directed acyclic graph +along this path to a file.

+
+
Parameters:
+

location (str :) – Location of the file

+
+
+
+ +
+
+write_predicted_value_to_file(location: str) None
+

Writes the predicted value of this path to a file.

+
+
location: str :

Location of the file

+
+
+
+ +
+ +
+
+class gametime.src.project_configuration_parser.ConfigurationParser
+

Bases: object

+

Methods

+ + + + + + +

parse(configuration_file_path)

+
param configuration_file_path:
+

Path to configuration file

+
+
+

+
+
+abstract static parse(configuration_file_path: str) ProjectConfiguration
+
+
Parameters:
+

configuration_file_path (str :) – Path to configuration file

+
+
Returns:
+

ProjectConfiguration object corresponding to file.

+
+
Return type:
+

ProjectConfiguration

+
+
+
+ +
+ +
+
+class gametime.src.project_configuration_parser.YAMLConfigurationParser
+

Bases: ConfigurationParser

+

Methods

+ + + + + + +

parse(configuration_file_path)

+
param configuration_file_path:
+

Path to configuration file

+
+
+

+
+
+static parse(configuration_file_path: str) ProjectConfiguration
+
+
Parameters:
+

configuration_file_path (str :) – Path to configuration file

+
+
Returns:
+

ProjectConfiguration object corresponding to file.

+
+
Return type:
+

ProjectConfiguration

+
+
+
+ +
+ +
+
+gametime.src.project_configuration_parser.get_dir_paths(dir_paths_str: str, dir_location: str = None) List[str]
+

Gets a list of directory paths from the string provided, where +the directory paths are separated by whitespaces or commas.

+
+
Parameters:
+
+
String of directory paths
+
dir_location: str

Directory to which the directory paths may be relative (Default value = None)

+
+
:returns: List of directory paths in the string.
+
:rtype: List[str]
+
+
+
+
+ +
+
+gametime.src.project_configuration_parser.get_file_paths(file_paths_str: str, dir_location: str = None) List[str]
+

Gets a list of file paths from the string provided, where the file +paths are separated by whitespaces or commas. The paths can also be +Unix-style globs.

+
+
Parameters:
+
    +
  • file_paths_str (str :) – String of file paths

  • +
  • dir_location (str :) – Directory to which the file paths may be relative (Default value = None)

  • +
+
+
Returns:
+

List of file paths in the string.

+
+
Return type:
+

List[str]

+
+
+
+ +
+
+class gametime.src.project_configuration.DebugConfiguration(keep_cil_temps=False, dump_ir=False, keep_ilp_solver_output=False, dump_instruction_trace=False, dump_path=False, dump_all_paths=False, dump_smt_trace=False, dump_all_queries=False, keep_parser_output=False, keep_simulator_output=False)
+

Bases: object

+

Stores debugging configuration information, which +determines the debugging information that is shown and +the temporary files that are dumped.

+
+
+DUMP_ALL_PATHS
+

Dump information about all_temp_files of the paths that have been traced +during analysis to a file.

+
+ +
+
+DUMP_ALL_QUERIES
+

Dump information about all_temp_files of the SMT queries that +have been made during analysis to a file.

+
+ +
+
+DUMP_INSTRUCTION_TRACE
+

Dump information produced when an IR-level instruction +is traced backward.

+
+ +
+
+DUMP_IR
+

Dump the Phoenix intermediate representation of the function +under analysis to a file.

+
+ +
+
+DUMP_PATH
+

Dump information about the path being traced.

+
+ +
+
+DUMP_SMT_TRACE
+

Dump information produced when an SMT query is created.

+
+ +
+
+KEEP_CIL_TEMPS
+

Keep the temporary files that CIL generates during its analysis.

+
+ +
+
+KEEP_ILP_SOLVER_OUTPUT
+

Keep debugging information and files produced by +the integer linear programming solver.

+
+ +
+
+KEEP_PARSER_OUTPUT
+

Keep the debugging information and the temporary files +produced by the parser.

+
+ +
+
+KEEP_SIMULATOR_OUTPUT
+

Keep the temporary files produced by a simulator when +measuring the value of a path.

+
+ +
+ +
+
+class gametime.src.project_configuration.ProjectConfiguration(location_file, func, start_label='', end_label='', included=None, merged=None, inlined=None, unroll_loops=False, randomize_initial_basis=False, maximum_error_scale_factor=10, determinant_threshold=0.001, max_infeasible_paths=100, model_as_nested_arrays=False, prevent_basis_refinement=False, ilp_solver_name='', debug_config=None, gametime_flexpret_path='', gametime_path='', gametime_file_path='', compile_flags=[], backend='')
+

Bases: object

+

Stores information necessary to configure a GameTime project.

+

Methods

+ + + + + + + + + + + + +

get_orig_filename_with_extension(extension)

Return path of file with name and extension.

get_temp_filename_with_extension(extension)

Return path of temporary file with name and extension.

set_ilp_solver(ilp_solver_name)

+
param ilp_solver_name:
+

ILP solver name to use

+
+
+

+
+
+get_orig_filename_with_extension(extension: str, name: str = None) str
+

Return path of file with name and extension. Extension should +be preceded by a period. For example, calling this function with extension +“.bc” should return something like “…. /main.bc”

+
+
Parameters:
+
    +
  • extension (str :) – extension of the file

  • +
  • name (str :) – name of the file (defaults to self.nameOrigNoExtension) (Default value = None)

  • +
+
+
Returns:
+

path of the file in the original directory.

+
+
Return type:
+

str

+
+
+
+ +
+
+get_temp_filename_with_extension(extension: str, name: str = None) str
+

Return path of temporary file with name and extension. Extension should +be preceded by a period. For example, calling this function with extension +“.bc” should return something like “…. maingt/main.bc”

+
+
Parameters:
+
    +
  • extension (str :) – extension of the temporary file name

  • +
  • name (str :) – name of the temporary file (defaults to self.nameOrigNoExtension) (Default value = None)

  • +
+
+
Returns:
+

path of the temporary file

+
+
Return type:
+

str

+
+
+
+ +
+
+set_ilp_solver(ilp_solver_name)
+
+
Parameters:
+

ilp_solver_name (str:) – ILP solver name to use

+
+
+
+ +
+ +

Exposes functions to interact with different +linear programming solvers through the PuLP package.

+
+
+class gametime.src.pulp_helper.Extremum
+

Bases: object

+

Represents the extremum that needs to be determined.

+
+
+LONGEST = 0
+

Find the longest path.

+
+ +
+
+SHORTEST = 1
+

Find the shortest path.

+
+ +
+ +
+
+class gametime.src.pulp_helper.IlpProblem(*args, **kwargs)
+

Bases: LpProblem

+

Maintains information about an integer linear programming problem. +It is a subclass of the ~pulp.LpProblem class of the PuLP +package, and stores additional information relevant to the GameTime +analysis, such as the value of the objective function of the problem.

+

Methods

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

addVariable(variable)

Adds a variable to the problem before a constraint is added

addVariables(variables)

Adds variables to the problem before a constraint is added

assignStatus(status[, sol_status])

Sets the status of the model after solving.

checkDuplicateVars()

Checks if there are at least two variables with the same name :return: 1 :raises const.PulpError: if there ar duplicates

checkLengthVars(max_length)

Checks if variables have names smaller than max_length :param int max_length: max size for variable name :return: :raises const.PulpError: if there is at least one variable that has a long name

copy()

Make a copy of self.

deepcopy()

Make a copy of self.

extend(other[, use_objective])

extends an LpProblem by adding constraints either from a dictionary a tuple or another LpProblem object.

fromDict(_dict)

Takes a dictionary with all necessary information to build a model.

fromJson(filename)

Creates a new Lp Problem from a json file with information

from_dict(_dict)

Takes a dictionary with all necessary information to build a model.

from_json(filename)

Creates a new Lp Problem from a json file with information

numConstraints()

+
return:
+

number of constraints in model

+
+
+

numVariables()

+
return:
+

number of variables in model

+
+
+

resolve([solver])

resolves an Problem using the same solver as previously

roundSolution([epsInt, eps])

Rounds the lp variables

sequentialSolve(objectives[, absoluteTols, ...])

Solve the given Lp problem with several objective functions.

setObjective(obj)

Sets the input variable as the objective function.

setSolver([solver])

Sets the Solver for this problem useful if you are using resolve

solve([solver])

Solve the given Lp problem.

startClock()

initializes properties with the current time

stopClock()

updates time wall time and cpu time

toDict()

creates a dictionary from the model with as much data as possible.

toJson(filename, *args, **kwargs)

Creates a json file from the LpProblem information

to_dict()

creates a dictionary from the model with as much data as possible.

to_json(filename, *args, **kwargs)

Creates a json file from the LpProblem information

variables()

Returns the problem variables

writeLP(filename[, writeSOS, mip, max_length])

Write the given Lp problem to a .lp file.

writeMPS(filename[, mpsSense, rename, mip, ...])

Writes an mps files from the problem information

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

add

addConstraint

assignConsPi

assignConsSlack

assignVarsDj

assignVarsVals

coefficients

fixObjective

fromMPS

getSense

get_dummyVar

infeasibilityGap

isMIP

normalisedNames

restoreObjective

unusedConstraintName

valid

variablesDict

+
+
+obj_val
+

Value of the objective function, stored for efficiency purposes.

+
+ +
+ +
+
+gametime.src.pulp_helper.find_extreme_path(analyzer, extremum=0, interval=None)
+

Determines either the longest or the shortest path through the DAG +with the constraints stored in the Analyzer object provided.

+
+
Parameters:
+
    +
  • analyzerAnalyzer object that maintains information about +the code being analyzed.

  • +
  • extremum – Type of extreme path to calculate.

  • +
  • intervalInterval object that represents the interval of values +that the generated paths can have. If no Interval object +is provided, the interval of values is considered to be +all_temp_files real numbers.

  • +
+
+
Returns:
+

    +
  • Tuple whose first element is the longest or the shortest path

  • +
  • through the DAG, as a list of nodes along the path (ordered

  • +
  • by traversal from source to sink), and whose second element is

  • +
  • the integer linear programming problem that was solved to obtain

  • +
  • the path, as an object of the IlpProblem class.

  • +
  • If no such path is feasible, given the constraints stored in

  • +
  • the Analyzer object and the Interval object provided,

  • +
  • the first element of the tuple is an empty list, and the second

  • +
  • element of the tuple is an IlpProblem object whose obj_al

  • +
  • instance variable is None.

  • +
+

+
+
+
+ +
+
+gametime.src.pulp_helper.find_goodness_of_fit(analyzer, paths, basis)
+
+
This function is here only for test purposes. Each path pi in `paths’,
+
can be expressed as a linear combination

pi = a_1 b_1 + … + a_n b_n

+
+
+

of paths b_i from basis. This function returns the least number c +such that every path can be expressed as a linear combination of basis +paths b_i such that the sum of absolute value of coefficients is at +most c:

+
+

|a_1| + |a_2| + … + |a_n| <= c

+
+
+
+
+
Parameters:
+
    +
  • analyzerAnalyzer object that maintains information about +the code being analyzed.

  • +
  • paths – List of paths that we want to find out how well can be +expressed as a linear combination of paths in basis

  • +
  • basis – List of paths that are used to express paths as a linear +combination of

  • +
+
+
Return type:
+

The number c as described in the paragraph above.

+
+
+
+ +
+
+gametime.src.pulp_helper.find_least_compatible_mu_max(analyzer: Analyzer, paths)
+
+
This function returns the least dealta in the underlying graph, as

specified by ‘analyzer’, that is feasible with the given set of +measurements as specified by ‘paths’. The method does not take into +account which paths are feasible and which not; it considers all_temp_files the +paths in the graph.

+
+
+
+
Parameters:
+
    +
  • analyzerAnalyzer object that maintains information about +the code being analyzed.

  • +
  • paths – List of paths used in the measurements. Each path is a list of +edges in the order in which they are visited by the path

  • +
+
+
Returns:
+

A floating point value—the least delta compatible with the +measurements

+
+
Return type:
+

float

+
+
+
+ +
+
+gametime.src.pulp_helper.find_longest_path_with_delta(analyzer, paths, delta, extremum=0)
+
+
This functions finds the longest/shortest path compatible with the

measured lengths of paths, as given in ‘paths’, such the actual +lengths are within ‘delta’ of the measured lengths

+
+
+
+
Parameters:
+
    +
  • analyzerAnalyzer object that maintains information about +the code being analyzed.

  • +
  • paths – List of paths used in the measurements. Each path is a list of +edges in the order in which they are visited by the path

  • +
  • delta – the maximal limit by which the length of a measured path is +allowed to differ from the measured value

  • +
  • extremum – Specifies whether we are calculating Extremum.LONGEST or +Extremum.SHORTEST

  • +
+
+
Returns:
+

    +
  • Pair consisting of the resulting path and the ILP problem used to

  • +
  • calculate the path

  • +
+

+
+
+
+ +
+
+gametime.src.pulp_helper.find_minimal_overcomplete_basis(analyzer: Analyzer, paths, k)
+
+
This function is here only for test purposes. The functions finds the

smallest set of ‘basis paths’ with the following property: Each path pi +in `paths’, can be expressed as a linear combination

+
+

pi = a_1 b_1 + … + a_n b_n

+
+

of paths b_i from basis. This function finds the set of basis paths +such that every path can be expressed as a linear combination of basis +paths b_i such that the sum of absolute value of coefficients is at +most ‘k’:

+
+

|a_1| + |a_2| + … + |a_n| <= k

+
+
+
+
+
Parameters:
+
    +
  • analyzerAnalyzer object that maintains information about +the code being analyzed.

  • +
  • paths – List of paths that we want to find out how well can be +expressed as a linear combination of paths in basis

  • +
  • k – bound on how well the ‘paths’ can be expressed as a linear +combination of the calculated basis paths

  • +
+
+
Return type:
+

List of paths satisfying the condition stated above

+
+
+
+ +
+
+gametime.src.pulp_helper.find_worst_expressible_path(analyzer, paths, bound)
+
+
Function to find the longest path in the underlying graph of ‘analyzer’

assuming the lengths of all_temp_files measured paths are between -1 and 1.

+
+
+
+
Parameters:
+
    +
  • analyzerAnalyzer object that maintains information about +the code being analyzed.

  • +
  • paths – List of paths used in the measurements. Each path is a list of +edges in the order in which they are visited by the path

  • +
  • bound

    ???

    +

  • +
+
+
Returns:
+

    +
  • Triple consisting of the length of the longsest path, the path itself

  • +
  • and the ILP solved to find the path.

  • +
+

+
+
+
+ +
+
+gametime.src.pulp_helper.generate_and_solve_core_problem(analyzer, paths, path_function_upper, path_function_lower, weights_positive, print_problem=False, extremum=0)
+

This function actually constructs the ILP to find the longest path +in the graph specified by ‘analyzer’ using the set of measured paths given +by ‘paths’.

+
+
Parameters:
+
    +
  • analyzerAnalyzer object that maintains information about +the code being analyzed. Among others, contains the underlying +DAG or the collection of infeasible paths.

  • +
  • paths – List of paths used in the measurements. Each path is a list of +edges in the order in which they are visited by the path

  • +
  • pathFunctionUpper – Function of type: path -> float that for a given path should +return the upper bound on the length of the given path. The +input ‘path’ is always from ‘paths’

  • +
  • pathFunctionLower – Function of type: path -> float that for a given path should +return the upper bound on the length of the given path. The +input ‘path’ is always from ‘paths’

  • +
  • weightsPositive – Boolean value specifying whether the individual edge weight are +required to be at least 0 (if set to True) or can be arbitrary +real value (if set to False)

  • +
  • printProblem – Boolean value used for debugging. If set to true, the generated +ILP is printed.

  • +
  • extremum – Specifies whether we are calculating Extremum.LONGEST or +Extremum.SHORTEST

  • +
+
+
Returns:
+

    +
  • Triple consisting of the length of the longest path found, the actual

  • +
  • path and the ILP problem generated.

  • +
+

+
+
+
+ +
+
+gametime.src.pulp_helper.get_ilp_solver(ilp_solver_name: str, project_config: ProjectConfiguration) pulp.LpSolver | None
+
+
Parameters:
+
    +
  • ilp_solver_name (str :) – Name of the integer linear programming solver

  • +
  • project_config (ProjectConfiguration :) – ProjectConfiguration object that represents the configuration of a GameTime project

  • +
+
+
Returns:
+

    +
  • PuLP solver object that can interface with the integer

  • +
  • linear programming solver whose name is provided, or None, if

  • +
  • no such object can be found.

  • +
+

+
+
+
+ +
+
+gametime.src.pulp_helper.get_ilp_solver_name(ilp_solver: LpSolver) str | None
+
+
Parameters:
+

ilp_solver (pulp.LpSolver :) – Object of a PuLP solver class

+
+
Returns:
+

Name, as used by GameTime, of the integer linear programming +solver that the input PuLP solver object can interface with, +or None, if no such name can be found.

+
+
Return type:
+

str, Optional

+
+
+
+ +
+
+gametime.src.pulp_helper.get_ilp_solver_names() List[str]
+
+
Returns:
+

List of the names of the supported integer linear programming solvers.

+
+
Return type:
+

List[str]

+
+
+
+ +
+
+gametime.src.pulp_helper.get_ilp_solver_proper_names() List[str]
+
+
Returns:
+

List of proper names of the supported integer linear programming +solvers, for display purposes.

+
+
Return type:
+

List[str]

+
+
+
+ +
+
+gametime.src.pulp_helper.get_proper_name(ilp_solver_name: str) str
+
+
Parameters:
+

ilp_solver_name (str :) – Name of an integer linear programming solver used by GameTime

+
+
Returns:
+

Proper name of an integer linear programming solver, +for display purposes.

+
+
Return type:
+

str

+
+
+
+ +
+
+gametime.src.pulp_helper.is_ilp_solver_name(name: str) bool
+
+
Parameters:
+

name (str :) – Possible name of an integer linear programming solver

+
+
Returns:
+

True if, and only if, the name provided is the name of a supported +integer linear programming solver.

+
+
Return type:
+

bool

+
+
+
+ +
+
+gametime.src.pulp_helper.make_compact(dag)
+
+
Function to create a compact representation of the given graph

Compact means that if in the original graph, there is a simple +path without any branching between two nodes, then in the resulting +graph the entire simple path is replaced by only one edge

+
+
+
+
Parameters:
+

dag – The graph that get compactified

+
+
Returns:
+

    +
  • A mapping (vertex, vertex) -> edge_number so that the edge

  • +
  • (vertex, vertex) in the original graph ‘dag’ gets mapped to

  • +
  • the edge with number ‘edge_number’. All edges on a simple path

  • +
  • without branching get mapped to the same ‘edge_number’

  • +
+

+
+
+
+ +
+
+

Backend Modules

+
+

Backend Base Module

+

Exposes classes and functions to maintain a representation of, and +to interact with, a backend, which will be used to measure values +that correspond to different paths in the code that is being analyzed.

+
+
+class gametime.src.backend.backend.Backend(project_config: ProjectConfiguration, name: str = '')
+

Bases: object

+

Maintains a representation of a backend, which will be used +to measure values that correspond to different paths in the code +that is being analyzed.

+

Methods

+ + + + + + +

measure(inputs, measure_folder)

Perform measurement using the backend.

+
+
+measure(inputs: str, measure_folder: str) int
+

Perform measurement using the backend.

+
+
Parameters:
+
    +
  • inputs (str:) – the inputs to drive down a PATH in a file

  • +
  • measure_folder (str :) – all generated files will be stored in MEASURE_FOLDER/{name of backend}

  • +
+
+
Return type:
+

The measured value of path

+
+
+
+ +
+
+name: str
+

Name of the backend that this object represents.

+
+ +
+
+project_config: ProjectConfiguration
+

GameTime project configuration for the code that is being analyzed.

+
+ +
+ +
+
+

ARM Backend Module

+
+
+class gametime.src.backend.arm_backend.arm_backend.ArmBackend(project_config: ProjectConfiguration)
+

Bases: Backend

+

Methods

+ + + + + + + + + + + + +

generate_executable(filepath, func_name, ...)

Modifies the input program to use INPUTS and generates the executable code.

measure(inputs, measure_folder)

Perform measurement using the backend.

run_backend_and_parse_output(stored_folder, ...)

Runs the executable in EXECUTABLE_PATH in host machine and extracts the outputs from program.

+
+
+generate_executable(filepath: str, func_name: str, inputs: str, measure_folder: str) str
+

Modifies the input program to use INPUTS and generates the executable code. Stored at MEASURE_FOLDER/driver

+
+
Parameters:
+
    +
  • filepath (str :) – Path to C file to modify with inputs.

  • +
  • func_name (str :) – Name of function being analyzed.

  • +
  • inputs (str :) – Path to the INPUTS file containing output of symbolic solver.

  • +
  • measure_folder (str :) – The folder to store generated executable.

  • +
+
+
Return type:
+

Path to the executable code.

+
+
+
+ +
+
+measure(inputs: str, measure_folder: str) int
+

Perform measurement using the backend.

+
+
Parameters:
+
    +
  • inputs (str:) – the inputs to drive down a PATH in a file

  • +
  • measure_folder (str :) – all generated files will be stored in MEASURE_FOLDER/{name of backend}

  • +
+
+
Return type:
+

The measured value of path

+
+
+
+ +
+
+run_backend_and_parse_output(stored_folder: str, executable_path: str) int
+

Runs the executable in EXECUTABLE_PATH in host machine and extracts the outputs from program. +Temperaries are stored in STORED_FOLDER.

+
+
Parameters:
+
    +
  • stored_folder (str :) – Folder to put all the generated tempraries.

  • +
  • executable_path (str :) – Path to executable.

  • +
+
+
Return type:
+

Measured cycle count for EXECUTABLE_PATH.

+
+
+
+ +
+
+timing_func = '\nstatic inline unsigned long long read_cycle_count() {\n    unsigned long long val;\n    asm volatile("mrs %0, PMCCNTR_EL0" : "=r" (val));\n    return val;\n}\n'
+
+ +
+ +
+
+

FlexPRET Backend Module

+
+
+class gametime.src.backend.flexpret_backend.flexpret_backend.FlexpretBackend(project_config: ProjectConfiguration)
+

Bases: Backend

+

Methods

+ + + + + + + + + + + + + + + +

c_file_to_mem(stored_folder, file_name, ...)

Use same Make file mechanism as Flexpret to generate .mem file from .c

generate_executable_c(filepath, func_name, ...)

Modifies the input program to use INPUTS and returns path to modifed C program.

measure(inputs, measure_folder)

Perform measurement using the backend.

run_backend_and_parse_output(stored_folder, ...)

Run simulation on the .mem file generated.

+
+
+c_file_to_mem(stored_folder: str, file_name: str, c_filepath: str) str
+

Use same Make file mechanism as Flexpret to generate .mem file from .c

+
+
Parameters:
+
    +
  • stored_folder (str :) – Folder to put all the generated tempraries.

  • +
  • file_name (str :) – Name of function being analyzed.

  • +
  • c_filepath (str :) – Path to C file being executed.

  • +
+
+
Return type:
+

Measured cycle count for C_FILEPATH.

+
+
+
+ +
+
+generate_executable_c(filepath: str, func_name: str, inputs: str, measure_folder: str) str
+

Modifies the input program to use INPUTS and returns path to modifed C program.

+
+
Parameters:
+
    +
  • filepath (str :) – Path to C file to modify with inputs.

  • +
  • func_name (str :) – Name of function being analyzed.

  • +
  • inputs (str :) – Path to the INPUTS file containing output of symbolic solver.

  • +
  • measure_folder (str :) – The folder to store generated C code.

  • +
+
+
Return type:
+

Path to the modified C file.

+
+
+
+ +
+
+measure(inputs: str, measure_folder: str) int
+

Perform measurement using the backend.

+
+
Parameters:
+
    +
  • inputs (str:) – the inputs to drive down a PATH in a file

  • +
  • measure_folder (str :) – all generated files will be stored in MEASURE_FOLDER/{name of backend}

  • +
+
+
Return type:
+

The measured value of path

+
+
+
+ +
+
+run_backend_and_parse_output(stored_folder: str, mem_filepath: str) int
+

Run simulation on the .mem file generated. The measurements are stored in measure.out +Equivalent to: os.system(f”(cd {dir path of .mem file} && fp-emu –measure +ispm={file_name}.mem)”)

+
+
Parameters:
+
    +
  • stored_folder (str :) – Folder to put all the generated tempraries.

  • +
  • mem_filepath (str :) – Path to the .mem file +:return the measurement value

  • +
+
+
Return type:
+

Measured cycle count for MEM_FILEPATH.

+
+
+
+ +
+
+timing_func = '\nstatic inline unsigned long long read_cycle_count() {\n    unsigned long long cycles;\n    asm volatile ("rdcycle %0" : "=r" (cycles));\n    return cycles;\n}\n'
+
+ +
+ +
+
+

x86 Backend Module

+
+
+class gametime.src.backend.x86_backend.x86_backend.X86Backend(project_config: ProjectConfiguration)
+

Bases: Backend

+

Methods

+ + + + + + + + + + + + +

generate_executable(filepath, func_name, ...)

Modifies the input program to use INPUTS and generates the executable code.

measure(inputs, measure_folder)

Perform measurement using the backend.

run_backend_and_parse_output(stored_folder, ...)

Runs the executable in EXECUTABLE_PATH in host machine and extracts the outputs from program.

+
+
+generate_executable(filepath: str, func_name: str, inputs: str, measure_folder: str) str
+

Modifies the input program to use INPUTS and generates the executable code. Stored at MEASURE_FOLDER/driver

+
+
Parameters:
+
    +
  • filepath (str :) – Path to C file to modify with inputs.

  • +
  • func_name (str :) – Name of function being analyzed.

  • +
  • inputs (str :) – Path to the INPUTS file containing output of symbolic solver.

  • +
  • measure_folder (str :) – The folder to store generated executable.

  • +
+
+
Return type:
+

Path to the executable code.

+
+
+
+ +
+
+measure(inputs: str, measure_folder: str) int
+

Perform measurement using the backend.

+
+
Parameters:
+
    +
  • inputs (str:) – the inputs to drive down a PATH in a file

  • +
  • measure_folder (str :) – all generated files will be stored in MEASURE_FOLDER/{name of backend}

  • +
+
+
Return type:
+

The measured value of path

+
+
+
+ +
+
+run_backend_and_parse_output(stored_folder: str, executable_path: str) int
+

Runs the executable in EXECUTABLE_PATH in host machine and extracts the outputs from program. +Temperaries are stored in STORED_FOLDER.

+
+
Parameters:
+
    +
  • stored_folder (str :) – Folder to put all the generated tempraries.

  • +
  • executable_path (str :) – Path to executable.

  • +
+
+
Return type:
+

Measured cycle count for EXECUTABLE_PATH.

+
+
+
+ +
+
+timing_func = '\nstatic inline unsigned long long read_cycle_count() {\n    unsigned int lo, hi;\n    __asm__ __volatile__ ("RDTSC" : "=a" (lo), "=d" (hi));\n    return ((unsigned long long)hi << 32) | lo;\n}\n'
+
+ +
+ +
+
+
+

SMT Solver Module

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/html/objects.inv b/html/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..b50a1917618db8398d1e592388cde9b5c53e7c88 GIT binary patch literal 2135 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 NOO)V?{{irb$>PeQ7sCJm literal 0 HcmV?d00001 diff --git a/html/py-modindex.html b/html/py-modindex.html new file mode 100644 index 0000000..a9f0071 --- /dev/null +++ b/html/py-modindex.html @@ -0,0 +1,248 @@ + + + + + + + Python Module Index — GameTime 0.0.1 documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Python Module Index

+ +
+ g +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ g
+ gametime +
    + gametime.src +
    + gametime.src.analyzer +
    + gametime.src.backend +
    + gametime.src.backend.arm_backend +
    + gametime.src.backend.arm_backend.arm_backend +
    + gametime.src.backend.backend +
    + gametime.src.backend.flexpret_backend +
    + gametime.src.backend.flexpret_backend.flexpret_backend +
    + gametime.src.backend.x86_backend +
    + gametime.src.backend.x86_backend.x86_backend +
    + gametime.src.clang_helper +
    + gametime.src.defaults +
    + gametime.src.file_helper +
    + gametime.src.gametime_configuration +
    + gametime.src.gametime_error +
    + gametime.src.histogram +
    + gametime.src.interval +
    + gametime.src.logging_helper +
    + gametime.src.nx_helper +
    + gametime.src.path +
    + gametime.src.path_analyzer +
    + gametime.src.path_generator +
    + gametime.src.project_configuration +
    + gametime.src.project_configuration_parser +
    + gametime.src.pulp_helper +
    + gametime.src.smt_solver +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/html/search.html b/html/search.html new file mode 100644 index 0000000..35a3d21 --- /dev/null +++ b/html/search.html @@ -0,0 +1,120 @@ + + + + + + + Search — GameTime 0.0.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Search

+ + + + +

+ Searching for multiple words only shows matches that contain + all words. +

+ + +
+ + + +
+ + +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/html/searchindex.js b/html/searchindex.js new file mode 100644 index 0000000..6c3e4bb --- /dev/null +++ b/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {"ARM Backend Module": [[1, "module-gametime.src.backend.arm_backend"]], "Backend Base Module": [[1, "module-gametime.src.backend"]], "Backend Modules": [[1, "backend-modules"]], "Contents:": [[0, null]], "FlexPRET Backend Module": [[1, "module-gametime.src.backend.flexpret_backend"]], "GameTime src Documentation": [[1, "gametime-src-documentation"]], "Indices and tables": [[0, "indices-and-tables"]], "Main Package Module": [[1, "module-gametime.src"]], "SMT Solver Module": [[1, "module-gametime.src.smt_solver"]], "Welcome to GameTime\u2019s documentation!": [[0, "welcome-to-gametime-s-documentation"]], "x86 Backend Module": [[1, "module-gametime.src.backend.x86_backend"]]}, "docnames": ["index", "modules"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["index.rst", "modules.rst"], "indexentries": {"add_path_bundled_constraint() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.add_path_bundled_constraint", false]], "add_path_exclusive_constraint() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.add_path_exclusive_constraint", false]], "agg_index_exprs (gametime.src.path.path attribute)": [[1, "gametime.src.path.Path.agg_index_exprs", false]], "all_decreasing (gametime.src.path_generator.pathtype attribute)": [[1, "gametime.src.path_generator.PathType.ALL_DECREASING", false]], "all_edges (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.all_edges", false]], "all_increasing (gametime.src.path_generator.pathtype attribute)": [[1, "gametime.src.path_generator.PathType.ALL_INCREASING", false]], "all_nodes (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.all_nodes", false]], "analyze() (gametime.src.gametime static method)": [[1, "gametime.src.GameTime.analyze", false]], "analyzer (class in gametime.src.analyzer)": [[1, "gametime.src.analyzer.Analyzer", false]], "armbackend (class in gametime.src.backend.arm_backend.arm_backend)": [[1, "gametime.src.backend.arm_backend.arm_backend.ArmBackend", false]], "array_accesses (gametime.src.path.path attribute)": [[1, "gametime.src.path.Path.array_accesses", false]], "assignments (gametime.src.path.path attribute)": [[1, "gametime.src.path.Path.assignments", false]], "backend (class in gametime.src.backend.backend)": [[1, "gametime.src.backend.backend.Backend", false]], "basis_matrix (gametime.src.analyzer.analyzer attribute)": [[1, "gametime.src.analyzer.Analyzer.basis_matrix", false]], "bc_to_executable() (in module gametime.src.clang_helper)": [[1, "gametime.src.clang_helper.bc_to_executable", false]], "best_case (gametime.src.path_generator.pathtype attribute)": [[1, "gametime.src.path_generator.PathType.BEST_CASE", false]], "big (gametime.src.gametime_configuration.endianness attribute)": [[1, "gametime.src.gametime_configuration.Endianness.BIG", false]], "c_file_to_mem() (gametime.src.backend.flexpret_backend.flexpret_backend.flexpretbackend method)": [[1, "gametime.src.backend.flexpret_backend.flexpret_backend.FlexpretBackend.c_file_to_mem", false]], "compile_to_llvm_for_analysis() (in module gametime.src.clang_helper)": [[1, "gametime.src.clang_helper.compile_to_llvm_for_analysis", false]], "compile_to_llvm_for_exec() (in module gametime.src.clang_helper)": [[1, "gametime.src.clang_helper.compile_to_llvm_for_exec", false]], "compute_histogram() (in module gametime.src.histogram)": [[1, "gametime.src.histogram.compute_histogram", false]], "condition_edges (gametime.src.path.path attribute)": [[1, "gametime.src.path.Path.condition_edges", false]], "condition_truths (gametime.src.path.path attribute)": [[1, "gametime.src.path.Path.condition_truths", false]], "conditions (gametime.src.path.path attribute)": [[1, "gametime.src.path.Path.conditions", false]], "config (in module gametime.src.defaults)": [[1, "gametime.src.defaults.config", false]], "config_file (in module gametime.src.defaults)": [[1, "gametime.src.defaults.config_file", false]], "configurationparser (class in gametime.src.project_configuration_parser)": [[1, "gametime.src.project_configuration_parser.ConfigurationParser", false]], "construct_dag() (in module gametime.src.nx_helper)": [[1, "gametime.src.nx_helper.construct_dag", false]], "create_dag() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.create_dag", false]], "create_dir() (in module gametime.src.file_helper)": [[1, "gametime.src.file_helper.create_dir", false]], "dag (class in gametime.src.nx_helper)": [[1, "gametime.src.nx_helper.Dag", false]], "dag (gametime.src.analyzer.analyzer attribute)": [[1, "gametime.src.analyzer.Analyzer.dag", false]], "debugconfiguration (class in gametime.src.project_configuration)": [[1, "gametime.src.project_configuration.DebugConfiguration", false]], "dump_all_paths (gametime.src.project_configuration.debugconfiguration attribute)": [[1, "gametime.src.project_configuration.DebugConfiguration.DUMP_ALL_PATHS", false]], "dump_all_queries (gametime.src.project_configuration.debugconfiguration attribute)": [[1, "gametime.src.project_configuration.DebugConfiguration.DUMP_ALL_QUERIES", false]], "dump_instruction_trace (gametime.src.project_configuration.debugconfiguration attribute)": [[1, "gametime.src.project_configuration.DebugConfiguration.DUMP_INSTRUCTION_TRACE", false]], "dump_ir (gametime.src.project_configuration.debugconfiguration attribute)": [[1, "gametime.src.project_configuration.DebugConfiguration.DUMP_IR", false]], "dump_object() (in module gametime.src.clang_helper)": [[1, "gametime.src.clang_helper.dump_object", false]], "dump_path (gametime.src.project_configuration.debugconfiguration attribute)": [[1, "gametime.src.project_configuration.DebugConfiguration.DUMP_PATH", false]], "dump_smt_trace (gametime.src.project_configuration.debugconfiguration attribute)": [[1, "gametime.src.project_configuration.DebugConfiguration.DUMP_SMT_TRACE", false]], "edge_weights (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.edge_weights", false]], "edges_indices (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.edges_indices", false]], "edges_reduced (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.edges_reduced", false]], "edges_reduced_indices (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.edges_reduced_indices", false]], "endianness (class in gametime.src.gametime_configuration)": [[1, "gametime.src.gametime_configuration.Endianness", false]], "estimate_edge_weights() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.estimate_edge_weights", false]], "extremum (class in gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.Extremum", false]], "find_extreme_path() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.find_extreme_path", false]], "find_goodness_of_fit() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.find_goodness_of_fit", false]], "find_least_compatible_mu_max() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.find_least_compatible_mu_max", false]], "find_longest_path_with_delta() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.find_longest_path_with_delta", false]], "find_minimal_overcomplete_basis() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.find_minimal_overcomplete_basis", false]], "find_root_node() (in module gametime.src.nx_helper)": [[1, "gametime.src.nx_helper.find_root_node", false]], "find_worst_expressible_path() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.find_worst_expressible_path", false]], "flexpretbackend (class in gametime.src.backend.flexpret_backend.flexpret_backend)": [[1, "gametime.src.backend.flexpret_backend.flexpret_backend.FlexpretBackend", false]], "gametime (class in gametime.src)": [[1, "gametime.src.GameTime", false]], "gametime.src": [[1, "module-gametime.src", false]], "gametime.src.analyzer": [[1, "module-gametime.src.analyzer", false]], "gametime.src.backend": [[1, "module-gametime.src.backend", false]], "gametime.src.backend.arm_backend": [[1, "module-gametime.src.backend.arm_backend", false]], "gametime.src.backend.arm_backend.arm_backend": [[1, "module-gametime.src.backend.arm_backend.arm_backend", false]], "gametime.src.backend.backend": [[1, "module-gametime.src.backend.backend", false]], "gametime.src.backend.flexpret_backend": [[1, "module-gametime.src.backend.flexpret_backend", false]], "gametime.src.backend.flexpret_backend.flexpret_backend": [[1, "module-gametime.src.backend.flexpret_backend.flexpret_backend", false]], "gametime.src.backend.x86_backend": [[1, "module-gametime.src.backend.x86_backend", false]], "gametime.src.backend.x86_backend.x86_backend": [[1, "module-gametime.src.backend.x86_backend.x86_backend", false]], "gametime.src.clang_helper": [[1, "module-gametime.src.clang_helper", false]], "gametime.src.defaults": [[1, "module-gametime.src.defaults", false]], "gametime.src.file_helper": [[1, "module-gametime.src.file_helper", false]], "gametime.src.gametime_configuration": [[1, "module-gametime.src.gametime_configuration", false]], "gametime.src.gametime_error": [[1, "module-gametime.src.gametime_error", false]], "gametime.src.histogram": [[1, "module-gametime.src.histogram", false]], "gametime.src.interval": [[1, "module-gametime.src.interval", false]], "gametime.src.logging_helper": [[1, "module-gametime.src.logging_helper", false]], "gametime.src.nx_helper": [[1, "module-gametime.src.nx_helper", false]], "gametime.src.path": [[1, "module-gametime.src.path", false]], "gametime.src.path_analyzer": [[1, "module-gametime.src.path_analyzer", false]], "gametime.src.path_generator": [[1, "module-gametime.src.path_generator", false]], "gametime.src.project_configuration": [[1, "module-gametime.src.project_configuration", false]], "gametime.src.project_configuration_parser": [[1, "module-gametime.src.project_configuration_parser", false]], "gametime.src.pulp_helper": [[1, "module-gametime.src.pulp_helper", false]], "gametime.src.smt_solver": [[1, "module-gametime.src.smt_solver", false]], "gametimeconfiguration (class in gametime.src.gametime_configuration)": [[1, "gametime.src.gametime_configuration.GametimeConfiguration", false]], "gametimeerror": [[1, "gametime.src.gametime_error.GameTimeError", false]], "gametimewarning": [[1, "gametime.src.gametime_error.GameTimeWarning", false]], "generate_and_solve_core_problem() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.generate_and_solve_core_problem", false]], "generate_basis_paths() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.generate_basis_paths", false]], "generate_dot_file() (in module gametime.src.clang_helper)": [[1, "gametime.src.clang_helper.generate_dot_file", false]], "generate_executable() (gametime.src.backend.arm_backend.arm_backend.armbackend method)": [[1, "gametime.src.backend.arm_backend.arm_backend.ArmBackend.generate_executable", false]], "generate_executable() (gametime.src.backend.x86_backend.x86_backend.x86backend method)": [[1, "gametime.src.backend.x86_backend.x86_backend.X86Backend.generate_executable", false]], "generate_executable_c() (gametime.src.backend.flexpret_backend.flexpret_backend.flexpretbackend method)": [[1, "gametime.src.backend.flexpret_backend.flexpret_backend.FlexpretBackend.generate_executable_c", false]], "generate_overcomplete_basis() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.generate_overcomplete_basis", false]], "generate_paths() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.generate_paths", false]], "generate_paths() (gametime.src.path_generator.pathgenerator static method)": [[1, "gametime.src.path_generator.PathGenerator.generate_paths", false]], "get_agg_index_exprs() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.get_agg_index_exprs", false]], "get_array_accesses() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.get_array_accesses", false]], "get_assignments() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.get_assignments", false]], "get_condition_edges() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.get_condition_edges", false]], "get_condition_truths() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.get_condition_truths", false]], "get_conditions() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.get_conditions", false]], "get_description() (gametime.src.path_generator.pathtype static method)": [[1, "gametime.src.path_generator.PathType.get_description", false]], "get_dir_paths() (in module gametime.src.project_configuration_parser)": [[1, "gametime.src.project_configuration_parser.get_dir_paths", false]], "get_edges() (gametime.src.nx_helper.dag static method)": [[1, "gametime.src.nx_helper.Dag.get_edges", false]], "get_edges_for_conditions() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.get_edges_for_conditions", false]], "get_file_paths() (in module gametime.src.project_configuration_parser)": [[1, "gametime.src.project_configuration_parser.get_file_paths", false]], "get_ilp_solver() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.get_ilp_solver", false]], "get_ilp_solver_name() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.get_ilp_solver_name", false]], "get_ilp_solver_names() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.get_ilp_solver_names", false]], "get_ilp_solver_proper_names() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.get_ilp_solver_proper_names", false]], "get_line_numbers() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.get_line_numbers", false]], "get_measured_value() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.get_measured_value", false]], "get_node_label() (gametime.src.nx_helper.dag method)": [[1, "gametime.src.nx_helper.Dag.get_node_label", false]], "get_nodes() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.get_nodes", false]], "get_orig_filename_with_extension() (gametime.src.project_configuration.projectconfiguration method)": [[1, "gametime.src.project_configuration.ProjectConfiguration.get_orig_filename_with_extension", false]], "get_predicted_value() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.get_predicted_value", false]], "get_proper_name() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.get_proper_name", false]], "get_random_path() (in module gametime.src.nx_helper)": [[1, "gametime.src.nx_helper.get_random_path", false]], "get_temp_filename_with_extension() (gametime.src.project_configuration.projectconfiguration method)": [[1, "gametime.src.project_configuration.ProjectConfiguration.get_temp_filename_with_extension", false]], "gui_dir (in module gametime.src.defaults)": [[1, "gametime.src.defaults.gui_dir", false]], "has_cycles() (in module gametime.src.nx_helper)": [[1, "gametime.src.nx_helper.has_cycles", false]], "has_finite_lower_bound() (gametime.src.interval.interval method)": [[1, "gametime.src.interval.Interval.has_finite_lower_bound", false]], "has_finite_upper_bound() (gametime.src.interval.interval method)": [[1, "gametime.src.interval.Interval.has_finite_upper_bound", false]], "ilp_problem (gametime.src.path.path attribute)": [[1, "gametime.src.path.Path.ilp_problem", false]], "ilpproblem (class in gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.IlpProblem", false]], "initialize() (in module gametime.src.logging_helper)": [[1, "gametime.src.logging_helper.initialize", false]], "initialize_dictionaries() (gametime.src.nx_helper.dag method)": [[1, "gametime.src.nx_helper.Dag.initialize_dictionaries", false]], "inline_functions() (in module gametime.src.clang_helper)": [[1, "gametime.src.clang_helper.inline_functions", false]], "interval (class in gametime.src.interval)": [[1, "gametime.src.interval.Interval", false]], "is_ilp_solver_name() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.is_ilp_solver_name", false]], "iteratively_find_overcomplete_basis() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.iteratively_find_overcomplete_basis", false]], "keep_cil_temps (gametime.src.project_configuration.debugconfiguration attribute)": [[1, "gametime.src.project_configuration.DebugConfiguration.KEEP_CIL_TEMPS", false]], "keep_ilp_solver_output (gametime.src.project_configuration.debugconfiguration attribute)": [[1, "gametime.src.project_configuration.DebugConfiguration.KEEP_ILP_SOLVER_OUTPUT", false]], "keep_parser_output (gametime.src.project_configuration.debugconfiguration attribute)": [[1, "gametime.src.project_configuration.DebugConfiguration.KEEP_PARSER_OUTPUT", false]], "keep_simulator_output (gametime.src.project_configuration.debugconfiguration attribute)": [[1, "gametime.src.project_configuration.DebugConfiguration.KEEP_SIMULATOR_OUTPUT", false]], "line_numbers (gametime.src.path.path attribute)": [[1, "gametime.src.path.Path.line_numbers", false]], "little (gametime.src.gametime_configuration.endianness attribute)": [[1, "gametime.src.gametime_configuration.Endianness.LITTLE", false]], "load_dag_from_dot_file() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.load_dag_from_dot_file", false]], "load_variables() (gametime.src.nx_helper.dag method)": [[1, "gametime.src.nx_helper.Dag.load_variables", false]], "longest (gametime.src.pulp_helper.extremum attribute)": [[1, "gametime.src.pulp_helper.Extremum.LONGEST", false]], "lower_bound (gametime.src.interval.interval property)": [[1, "gametime.src.interval.Interval.lower_bound", false]], "make_compact() (in module gametime.src.pulp_helper)": [[1, "gametime.src.pulp_helper.make_compact", false]], "measure() (gametime.src.backend.arm_backend.arm_backend.armbackend method)": [[1, "gametime.src.backend.arm_backend.arm_backend.ArmBackend.measure", false]], "measure() (gametime.src.backend.backend.backend method)": [[1, "gametime.src.backend.backend.Backend.measure", false]], "measure() (gametime.src.backend.flexpret_backend.flexpret_backend.flexpretbackend method)": [[1, "gametime.src.backend.flexpret_backend.flexpret_backend.FlexpretBackend.measure", false]], "measure() (gametime.src.backend.x86_backend.x86_backend.x86backend method)": [[1, "gametime.src.backend.x86_backend.x86_backend.X86Backend.measure", false]], "measure_basis_paths() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.measure_basis_paths", false]], "measure_path() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.measure_path", false]], "measure_path() (gametime.src.path_analyzer.pathanalyzer method)": [[1, "gametime.src.path_analyzer.PathAnalyzer.measure_path", false]], "measure_paths() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.measure_paths", false]], "measured_value (gametime.src.path.path attribute)": [[1, "gametime.src.path.Path.measured_value", false]], "module": [[1, "module-gametime.src", false], [1, "module-gametime.src.analyzer", false], [1, "module-gametime.src.backend", false], [1, "module-gametime.src.backend.arm_backend", false], [1, "module-gametime.src.backend.arm_backend.arm_backend", false], [1, "module-gametime.src.backend.backend", false], [1, "module-gametime.src.backend.flexpret_backend", false], [1, "module-gametime.src.backend.flexpret_backend.flexpret_backend", false], [1, "module-gametime.src.backend.x86_backend", false], [1, "module-gametime.src.backend.x86_backend.x86_backend", false], [1, "module-gametime.src.clang_helper", false], [1, "module-gametime.src.defaults", false], [1, "module-gametime.src.file_helper", false], [1, "module-gametime.src.gametime_configuration", false], [1, "module-gametime.src.gametime_error", false], [1, "module-gametime.src.histogram", false], [1, "module-gametime.src.interval", false], [1, "module-gametime.src.logging_helper", false], [1, "module-gametime.src.nx_helper", false], [1, "module-gametime.src.path", false], [1, "module-gametime.src.path_analyzer", false], [1, "module-gametime.src.path_generator", false], [1, "module-gametime.src.project_configuration", false], [1, "module-gametime.src.project_configuration_parser", false], [1, "module-gametime.src.pulp_helper", false], [1, "module-gametime.src.smt_solver", false]], "move_files() (in module gametime.src.file_helper)": [[1, "gametime.src.file_helper.move_files", false]], "name (gametime.src.backend.backend.backend attribute)": [[1, "gametime.src.backend.backend.Backend.name", false]], "nodes (gametime.src.path.path attribute)": [[1, "gametime.src.path.Path.nodes", false]], "nodes_except_sink (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.nodes_except_sink", false]], "nodes_except_sink_indices (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.nodes_except_sink_indices", false]], "nodes_except_source_sink (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.nodes_except_source_sink", false]], "nodes_except_source_sink_indices (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.nodes_except_source_sink_indices", false]], "nodes_indices (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.nodes_indices", false]], "num_edges (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.num_edges", false]], "num_nodes (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.num_nodes", false]], "num_paths (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.num_paths", false]], "num_paths() (in module gametime.src.nx_helper)": [[1, "gametime.src.nx_helper.num_paths", false]], "obj_val (gametime.src.pulp_helper.ilpproblem attribute)": [[1, "gametime.src.pulp_helper.IlpProblem.obj_val", false]], "parse() (gametime.src.project_configuration_parser.configurationparser static method)": [[1, "gametime.src.project_configuration_parser.ConfigurationParser.parse", false]], "parse() (gametime.src.project_configuration_parser.yamlconfigurationparser static method)": [[1, "gametime.src.project_configuration_parser.YAMLConfigurationParser.parse", false]], "path (class in gametime.src.path)": [[1, "gametime.src.path.Path", false]], "path_bundled_constraints (gametime.src.analyzer.analyzer attribute)": [[1, "gametime.src.analyzer.Analyzer.path_bundled_constraints", false]], "path_dimension (gametime.src.analyzer.analyzer attribute)": [[1, "gametime.src.analyzer.Analyzer.path_dimension", false]], "path_exclusive_constraints (gametime.src.analyzer.analyzer attribute)": [[1, "gametime.src.analyzer.Analyzer.path_exclusive_constraints", false]], "pathanalyzer (class in gametime.src.path_analyzer)": [[1, "gametime.src.path_analyzer.PathAnalyzer", false]], "pathgenerator (class in gametime.src.path_generator)": [[1, "gametime.src.path_generator.PathGenerator", false]], "pathtype (class in gametime.src.path_generator)": [[1, "gametime.src.path_generator.PathType", false]], "predicted_value (gametime.src.path.path attribute)": [[1, "gametime.src.path.Path.predicted_value", false]], "project_config (gametime.src.analyzer.analyzer attribute)": [[1, "gametime.src.analyzer.Analyzer.project_config", false]], "project_config (gametime.src.backend.backend.backend attribute)": [[1, "gametime.src.backend.backend.Backend.project_config", false]], "projectconfiguration (class in gametime.src.project_configuration)": [[1, "gametime.src.project_configuration.ProjectConfiguration", false]], "random (gametime.src.path_generator.pathtype attribute)": [[1, "gametime.src.path_generator.PathType.RANDOM", false]], "read_agg_index_exprs_from_file() (gametime.src.path.path static method)": [[1, "gametime.src.path.Path.read_agg_index_exprs_from_file", false]], "read_array_accesses_from_file() (gametime.src.path.path static method)": [[1, "gametime.src.path.Path.read_array_accesses_from_file", false]], "read_assignments_from_file() (gametime.src.path.path static method)": [[1, "gametime.src.path.Path.read_assignments_from_file", false]], "read_condition_edges_from_file() (gametime.src.path.path static method)": [[1, "gametime.src.path.Path.read_condition_edges_from_file", false]], "read_condition_truths_from_file() (gametime.src.path.path static method)": [[1, "gametime.src.path.Path.read_condition_truths_from_file", false]], "read_conditions_from_file() (gametime.src.path.path static method)": [[1, "gametime.src.path.Path.read_conditions_from_file", false]], "read_gametime_config_yaml() (in module gametime.src.gametime_configuration)": [[1, "gametime.src.gametime_configuration.read_gametime_config_yaml", false]], "read_line_numbers_from_file() (gametime.src.path.path static method)": [[1, "gametime.src.path.Path.read_line_numbers_from_file", false]], "read_measured_value_from_file() (gametime.src.path.path static method)": [[1, "gametime.src.path.Path.read_measured_value_from_file", false]], "read_nodes_from_file() (gametime.src.path.path static method)": [[1, "gametime.src.path.Path.read_nodes_from_file", false]], "read_predicted_value_from_file() (gametime.src.path.path static method)": [[1, "gametime.src.path.Path.read_predicted_value_from_file", false]], "remove_all_except() (in module gametime.src.file_helper)": [[1, "gametime.src.file_helper.remove_all_except", false]], "remove_back_edges_to_make_dag() (in module gametime.src.nx_helper)": [[1, "gametime.src.nx_helper.remove_back_edges_to_make_dag", false]], "remove_file() (in module gametime.src.file_helper)": [[1, "gametime.src.file_helper.remove_file", false]], "remove_files() (in module gametime.src.file_helper)": [[1, "gametime.src.file_helper.remove_files", false]], "remove_temp_cil_files() (in module gametime.src.clang_helper)": [[1, "gametime.src.clang_helper.remove_temp_cil_files", false]], "reset_edge_weights() (gametime.src.nx_helper.dag method)": [[1, "gametime.src.nx_helper.Dag.reset_edge_weights", false]], "reset_path_bundled_constraints() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.reset_path_bundled_constraints", false]], "reset_path_exclusive_constraints() (gametime.src.analyzer.analyzer method)": [[1, "gametime.src.analyzer.Analyzer.reset_path_exclusive_constraints", false]], "run_backend_and_parse_output() (gametime.src.backend.arm_backend.arm_backend.armbackend method)": [[1, "gametime.src.backend.arm_backend.arm_backend.ArmBackend.run_backend_and_parse_output", false]], "run_backend_and_parse_output() (gametime.src.backend.flexpret_backend.flexpret_backend.flexpretbackend method)": [[1, "gametime.src.backend.flexpret_backend.flexpret_backend.FlexpretBackend.run_backend_and_parse_output", false]], "run_backend_and_parse_output() (gametime.src.backend.x86_backend.x86_backend.x86backend method)": [[1, "gametime.src.backend.x86_backend.x86_backend.X86Backend.run_backend_and_parse_output", false]], "set_ilp_solver() (gametime.src.project_configuration.projectconfiguration method)": [[1, "gametime.src.project_configuration.ProjectConfiguration.set_ilp_solver", false]], "set_measured_value() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.set_measured_value", false]], "set_predicted_value() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.set_predicted_value", false]], "shortest (gametime.src.pulp_helper.extremum attribute)": [[1, "gametime.src.pulp_helper.Extremum.SHORTEST", false]], "sink (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.sink", false]], "source_dir (in module gametime.src.defaults)": [[1, "gametime.src.defaults.source_dir", false]], "special_edges (gametime.src.nx_helper.dag attribute)": [[1, "gametime.src.nx_helper.Dag.special_edges", false]], "timing_func (gametime.src.backend.arm_backend.arm_backend.armbackend attribute)": [[1, "gametime.src.backend.arm_backend.arm_backend.ArmBackend.timing_func", false]], "timing_func (gametime.src.backend.flexpret_backend.flexpret_backend.flexpretbackend attribute)": [[1, "gametime.src.backend.flexpret_backend.flexpret_backend.FlexpretBackend.timing_func", false]], "timing_func (gametime.src.backend.x86_backend.x86_backend.x86backend attribute)": [[1, "gametime.src.backend.x86_backend.x86_backend.X86Backend.timing_func", false]], "unroll_loops() (in module gametime.src.clang_helper)": [[1, "gametime.src.clang_helper.unroll_loops", false]], "upper_bound (gametime.src.interval.interval property)": [[1, "gametime.src.interval.Interval.upper_bound", false]], "worst_case (gametime.src.path_generator.pathtype attribute)": [[1, "gametime.src.path_generator.PathType.WORST_CASE", false]], "write_agg_index_exprs_to_file() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.write_agg_index_exprs_to_file", false]], "write_array_accesses_to_file() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.write_array_accesses_to_file", false]], "write_assignments_to_file() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.write_assignments_to_file", false]], "write_condition_edges_to_file() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.write_condition_edges_to_file", false]], "write_condition_truths_to_file() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.write_condition_truths_to_file", false]], "write_conditions_to_file() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.write_conditions_to_file", false]], "write_dag_to_dot_file() (in module gametime.src.nx_helper)": [[1, "gametime.src.nx_helper.write_dag_to_dot_file", false]], "write_histogram_to_file() (in module gametime.src.histogram)": [[1, "gametime.src.histogram.write_histogram_to_file", false]], "write_ilp_problem_to_lp_file() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.write_ilp_problem_to_lp_file", false]], "write_line_numbers_to_file() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.write_line_numbers_to_file", false]], "write_measured_value_to_file() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.write_measured_value_to_file", false]], "write_nodes_to_file() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.write_nodes_to_file", false]], "write_predicted_value_to_file() (gametime.src.path.path method)": [[1, "gametime.src.path.Path.write_predicted_value_to_file", false]], "x86backend (class in gametime.src.backend.x86_backend.x86_backend)": [[1, "gametime.src.backend.x86_backend.x86_backend.X86Backend", false]], "yamlconfigurationparser (class in gametime.src.project_configuration_parser)": [[1, "gametime.src.project_configuration_parser.YAMLConfigurationParser", false]]}, "objects": {"gametime": [[1, 0, 0, "-", "src"]], "gametime.src": [[1, 1, 1, "", "GameTime"], [1, 0, 0, "-", "analyzer"], [1, 0, 0, "-", "backend"], [1, 0, 0, "-", "clang_helper"], [1, 0, 0, "-", "defaults"], [1, 0, 0, "-", "file_helper"], [1, 0, 0, "-", "gametime_configuration"], [1, 0, 0, "-", "gametime_error"], [1, 0, 0, "-", "histogram"], [1, 0, 0, "-", "interval"], [1, 0, 0, "-", "logging_helper"], [1, 0, 0, "-", "nx_helper"], [1, 0, 0, "-", "path"], [1, 0, 0, "-", "path_analyzer"], [1, 0, 0, "-", "path_generator"], [1, 0, 0, "-", "project_configuration"], [1, 0, 0, "-", "project_configuration_parser"], [1, 0, 0, "-", "pulp_helper"], [1, 0, 0, "-", "smt_solver"]], "gametime.src.GameTime": [[1, 2, 1, "", "analyze"]], "gametime.src.analyzer": [[1, 1, 1, "", "Analyzer"]], "gametime.src.analyzer.Analyzer": [[1, 2, 1, "", "add_path_bundled_constraint"], [1, 2, 1, "", "add_path_exclusive_constraint"], [1, 3, 1, "", "basis_matrix"], [1, 2, 1, "", "create_dag"], [1, 3, 1, "", "dag"], [1, 2, 1, "", "estimate_edge_weights"], [1, 2, 1, "", "generate_basis_paths"], [1, 2, 1, "", "generate_overcomplete_basis"], [1, 2, 1, "", "generate_paths"], [1, 2, 1, "", "iteratively_find_overcomplete_basis"], [1, 2, 1, "", "load_dag_from_dot_file"], [1, 2, 1, "", "measure_basis_paths"], [1, 2, 1, "", "measure_path"], [1, 2, 1, "", "measure_paths"], [1, 3, 1, "", "path_bundled_constraints"], [1, 3, 1, "", "path_dimension"], [1, 3, 1, "", "path_exclusive_constraints"], [1, 3, 1, "", "project_config"], [1, 2, 1, "", "reset_path_bundled_constraints"], [1, 2, 1, "", "reset_path_exclusive_constraints"]], "gametime.src.backend": [[1, 0, 0, "-", "arm_backend"], [1, 0, 0, "-", "backend"], [1, 0, 0, "-", "flexpret_backend"], [1, 0, 0, "-", "x86_backend"]], "gametime.src.backend.arm_backend": [[1, 0, 0, "-", "arm_backend"]], "gametime.src.backend.arm_backend.arm_backend": [[1, 1, 1, "", "ArmBackend"]], "gametime.src.backend.arm_backend.arm_backend.ArmBackend": [[1, 2, 1, "", "generate_executable"], [1, 2, 1, "", "measure"], [1, 2, 1, "", "run_backend_and_parse_output"], [1, 3, 1, "", "timing_func"]], "gametime.src.backend.backend": [[1, 1, 1, "", "Backend"]], "gametime.src.backend.backend.Backend": [[1, 2, 1, "", "measure"], [1, 3, 1, "", "name"], [1, 3, 1, "", "project_config"]], "gametime.src.backend.flexpret_backend": [[1, 0, 0, "-", "flexpret_backend"]], "gametime.src.backend.flexpret_backend.flexpret_backend": [[1, 1, 1, "", "FlexpretBackend"]], "gametime.src.backend.flexpret_backend.flexpret_backend.FlexpretBackend": [[1, 2, 1, "", "c_file_to_mem"], [1, 2, 1, "", "generate_executable_c"], [1, 2, 1, "", "measure"], [1, 2, 1, "", "run_backend_and_parse_output"], [1, 3, 1, "", "timing_func"]], "gametime.src.backend.x86_backend": [[1, 0, 0, "-", "x86_backend"]], "gametime.src.backend.x86_backend.x86_backend": [[1, 1, 1, "", "X86Backend"]], "gametime.src.backend.x86_backend.x86_backend.X86Backend": [[1, 2, 1, "", "generate_executable"], [1, 2, 1, "", "measure"], [1, 2, 1, "", "run_backend_and_parse_output"], [1, 3, 1, "", "timing_func"]], "gametime.src.clang_helper": [[1, 4, 1, "", "bc_to_executable"], [1, 4, 1, "", "compile_to_llvm_for_analysis"], [1, 4, 1, "", "compile_to_llvm_for_exec"], [1, 4, 1, "", "dump_object"], [1, 4, 1, "", "generate_dot_file"], [1, 4, 1, "", "inline_functions"], [1, 4, 1, "", "remove_temp_cil_files"], [1, 4, 1, "", "unroll_loops"]], "gametime.src.defaults": [[1, 5, 1, "", "config"], [1, 5, 1, "", "config_file"], [1, 5, 1, "", "gui_dir"], [1, 5, 1, "", "source_dir"]], "gametime.src.file_helper": [[1, 4, 1, "", "create_dir"], [1, 4, 1, "", "move_files"], [1, 4, 1, "", "remove_all_except"], [1, 4, 1, "", "remove_file"], [1, 4, 1, "", "remove_files"]], "gametime.src.gametime_configuration": [[1, 1, 1, "", "Endianness"], [1, 1, 1, "", "GametimeConfiguration"], [1, 4, 1, "", "read_gametime_config_yaml"]], "gametime.src.gametime_configuration.Endianness": [[1, 3, 1, "", "BIG"], [1, 3, 1, "", "LITTLE"]], "gametime.src.gametime_error": [[1, 6, 1, "", "GameTimeError"], [1, 6, 1, "", "GameTimeWarning"]], "gametime.src.histogram": [[1, 4, 1, "", "compute_histogram"], [1, 4, 1, "", "write_histogram_to_file"]], "gametime.src.interval": [[1, 1, 1, "", "Interval"]], "gametime.src.interval.Interval": [[1, 2, 1, "", "has_finite_lower_bound"], [1, 2, 1, "", "has_finite_upper_bound"], [1, 7, 1, "", "lower_bound"], [1, 7, 1, "", "upper_bound"]], "gametime.src.logging_helper": [[1, 4, 1, "", "initialize"]], "gametime.src.nx_helper": [[1, 1, 1, "", "Dag"], [1, 4, 1, "", "construct_dag"], [1, 4, 1, "", "find_root_node"], [1, 4, 1, "", "get_random_path"], [1, 4, 1, "", "has_cycles"], [1, 4, 1, "", "num_paths"], [1, 4, 1, "", "remove_back_edges_to_make_dag"], [1, 4, 1, "", "write_dag_to_dot_file"]], "gametime.src.nx_helper.Dag": [[1, 3, 1, "", "all_edges"], [1, 3, 1, "", "all_nodes"], [1, 3, 1, "", "edge_weights"], [1, 3, 1, "", "edges_indices"], [1, 3, 1, "", "edges_reduced"], [1, 3, 1, "", "edges_reduced_indices"], [1, 2, 1, "", "get_edges"], [1, 2, 1, "", "get_node_label"], [1, 2, 1, "", "initialize_dictionaries"], [1, 2, 1, "", "load_variables"], [1, 3, 1, "", "nodes_except_sink"], [1, 3, 1, "", "nodes_except_sink_indices"], [1, 3, 1, "", "nodes_except_source_sink"], [1, 3, 1, "", "nodes_except_source_sink_indices"], [1, 3, 1, "", "nodes_indices"], [1, 3, 1, "", "num_edges"], [1, 3, 1, "", "num_nodes"], [1, 3, 1, "", "num_paths"], [1, 2, 1, "", "reset_edge_weights"], [1, 3, 1, "", "sink"], [1, 3, 1, "", "special_edges"]], "gametime.src.path": [[1, 1, 1, "", "Path"]], "gametime.src.path.Path": [[1, 3, 1, "", "agg_index_exprs"], [1, 3, 1, "", "array_accesses"], [1, 3, 1, "", "assignments"], [1, 3, 1, "", "condition_edges"], [1, 3, 1, "", "condition_truths"], [1, 3, 1, "", "conditions"], [1, 2, 1, "", "get_agg_index_exprs"], [1, 2, 1, "", "get_array_accesses"], [1, 2, 1, "", "get_assignments"], [1, 2, 1, "", "get_condition_edges"], [1, 2, 1, "", "get_condition_truths"], [1, 2, 1, "", "get_conditions"], [1, 2, 1, "", "get_edges_for_conditions"], [1, 2, 1, "", "get_line_numbers"], [1, 2, 1, "", "get_measured_value"], [1, 2, 1, "", "get_nodes"], [1, 2, 1, "", "get_predicted_value"], [1, 3, 1, "", "ilp_problem"], [1, 3, 1, "", "line_numbers"], [1, 3, 1, "", "measured_value"], [1, 3, 1, "", "nodes"], [1, 3, 1, "", "predicted_value"], [1, 2, 1, "", "read_agg_index_exprs_from_file"], [1, 2, 1, "", "read_array_accesses_from_file"], [1, 2, 1, "", "read_assignments_from_file"], [1, 2, 1, "", "read_condition_edges_from_file"], [1, 2, 1, "", "read_condition_truths_from_file"], [1, 2, 1, "", "read_conditions_from_file"], [1, 2, 1, "", "read_line_numbers_from_file"], [1, 2, 1, "", "read_measured_value_from_file"], [1, 2, 1, "", "read_nodes_from_file"], [1, 2, 1, "", "read_predicted_value_from_file"], [1, 2, 1, "", "set_measured_value"], [1, 2, 1, "", "set_predicted_value"], [1, 2, 1, "", "write_agg_index_exprs_to_file"], [1, 2, 1, "", "write_array_accesses_to_file"], [1, 2, 1, "", "write_assignments_to_file"], [1, 2, 1, "", "write_condition_edges_to_file"], [1, 2, 1, "", "write_condition_truths_to_file"], [1, 2, 1, "", "write_conditions_to_file"], [1, 2, 1, "", "write_ilp_problem_to_lp_file"], [1, 2, 1, "", "write_line_numbers_to_file"], [1, 2, 1, "", "write_measured_value_to_file"], [1, 2, 1, "", "write_nodes_to_file"], [1, 2, 1, "", "write_predicted_value_to_file"]], "gametime.src.path_analyzer": [[1, 1, 1, "", "PathAnalyzer"]], "gametime.src.path_analyzer.PathAnalyzer": [[1, 2, 1, "", "measure_path"]], "gametime.src.path_generator": [[1, 1, 1, "", "PathGenerator"], [1, 1, 1, "", "PathType"]], "gametime.src.path_generator.PathGenerator": [[1, 2, 1, "", "generate_paths"]], "gametime.src.path_generator.PathType": [[1, 3, 1, "", "ALL_DECREASING"], [1, 3, 1, "", "ALL_INCREASING"], [1, 3, 1, "", "BEST_CASE"], [1, 3, 1, "", "RANDOM"], [1, 3, 1, "", "WORST_CASE"], [1, 2, 1, "", "get_description"]], "gametime.src.project_configuration": [[1, 1, 1, "", "DebugConfiguration"], [1, 1, 1, "", "ProjectConfiguration"]], "gametime.src.project_configuration.DebugConfiguration": [[1, 3, 1, "", "DUMP_ALL_PATHS"], [1, 3, 1, "", "DUMP_ALL_QUERIES"], [1, 3, 1, "", "DUMP_INSTRUCTION_TRACE"], [1, 3, 1, "", "DUMP_IR"], [1, 3, 1, "", "DUMP_PATH"], [1, 3, 1, "", "DUMP_SMT_TRACE"], [1, 3, 1, "", "KEEP_CIL_TEMPS"], [1, 3, 1, "", "KEEP_ILP_SOLVER_OUTPUT"], [1, 3, 1, "", "KEEP_PARSER_OUTPUT"], [1, 3, 1, "", "KEEP_SIMULATOR_OUTPUT"]], "gametime.src.project_configuration.ProjectConfiguration": [[1, 2, 1, "", "get_orig_filename_with_extension"], [1, 2, 1, "", "get_temp_filename_with_extension"], [1, 2, 1, "", "set_ilp_solver"]], "gametime.src.project_configuration_parser": [[1, 1, 1, "", "ConfigurationParser"], [1, 1, 1, "", "YAMLConfigurationParser"], [1, 4, 1, "", "get_dir_paths"], [1, 4, 1, "", "get_file_paths"]], "gametime.src.project_configuration_parser.ConfigurationParser": [[1, 2, 1, "", "parse"]], "gametime.src.project_configuration_parser.YAMLConfigurationParser": [[1, 2, 1, "", "parse"]], "gametime.src.pulp_helper": [[1, 1, 1, "", "Extremum"], [1, 1, 1, "", "IlpProblem"], [1, 4, 1, "", "find_extreme_path"], [1, 4, 1, "", "find_goodness_of_fit"], [1, 4, 1, "", "find_least_compatible_mu_max"], [1, 4, 1, "", "find_longest_path_with_delta"], [1, 4, 1, "", "find_minimal_overcomplete_basis"], [1, 4, 1, "", "find_worst_expressible_path"], [1, 4, 1, "", "generate_and_solve_core_problem"], [1, 4, 1, "", "get_ilp_solver"], [1, 4, 1, "", "get_ilp_solver_name"], [1, 4, 1, "", "get_ilp_solver_names"], [1, 4, 1, "", "get_ilp_solver_proper_names"], [1, 4, 1, "", "get_proper_name"], [1, 4, 1, "", "is_ilp_solver_name"], [1, 4, 1, "", "make_compact"]], "gametime.src.pulp_helper.Extremum": [[1, 3, 1, "", "LONGEST"], [1, 3, 1, "", "SHORTEST"]], "gametime.src.pulp_helper.IlpProblem": [[1, 3, 1, "", "obj_val"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "data", "Python data"], "6": ["py", "exception", "Python exception"], "7": ["py", "property", "Python property"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:data", "6": "py:exception", "7": "py:property"}, "terms": {"": 1, "0": 1, "001": 1, "1": 1, "10": 1, "100": 1, "2": 1, "3": 1, "32": 1, "4": 1, "5": 1, "5pm": 1, "A": 1, "By": 1, "For": 1, "If": 1, "In": 1, "It": 1, "Not": 1, "OR": 1, "One": 1, "The": 1, "There": 1, "These": 1, "To": 1, "__asm__": 1, "__volatile__": 1, "a_1": 1, "a_2": 1, "a_n": 1, "about": 1, "abov": 1, "absolut": 1, "abstract": 1, "access": 1, "account": 1, "actual": 1, "acycl": 1, "add": 1, "add_edg": 1, "add_nod": 1, "add_path": 1, "add_path_bundled_constraint": 1, "add_path_exclusive_constraint": 1, "addconstraint": 1, "addit": 1, "adj": 1, "adjac": 1, "again": 1, "against": 1, "agg_index_expr": 1, "aggreg": 1, "algorithm": 1, "all": 1, "all_decreas": 1, "all_edg": 1, "all_increas": 1, "all_nod": 1, "all_temp_fil": 1, "allow": 1, "along": 1, "alreadi": 1, "also": 1, "alwai": 1, "among": 1, "an": 1, "analysi": 1, "analyz": 1, "ani": 1, "annot": 1, "appear": 1, "appropri": 1, "ar": 1, "arbitrari": 1, "arg": 1, "argument": 1, "arm_backend": 1, "armbackend": 1, "around": 1, "arrai": 1, "arrang": 1, "array_access": 1, "asm": 1, "assign": 1, "assignconspi": 1, "assignconsslack": 1, "assignvarsdj": 1, "assignvarsv": 1, "associ": 1, "assum": 1, "attribut": 1, "avail": 1, "b_1": 1, "b_i": 1, "b_n": 1, "back": 1, "backend": 0, "backward": 1, "bar": 1, "basi": 1, "basis_matrix": 1, "basis_path": 1, "bc": 1, "bc_file_fold": 1, "bc_filenam": 1, "bc_filepath": 1, "bc_to_execut": 1, "becom": 1, "been": 1, "befor": 1, "begin": 1, "behav": 1, "being": 1, "below": 1, "best": 1, "best_cas": 1, "between": 1, "big": 1, "bin": 1, "bitcod": 1, "blue": 1, "bool": 1, "boolean": 1, "bound": 1, "branch": 1, "built": 1, "bundl": 1, "c": 1, "c_file_to_mem": 1, "c_filepath": 1, "calcul": 1, "call": 1, "can": 1, "cannot": 1, "case": 1, "cd": 1, "chang": 1, "cil": 1, "clang": 1, "clang_help": 1, "class": 1, "cleaner": 1, "close": 1, "code": 1, "codebas": 1, "coeffici": 1, "collect": 1, "color": 1, "combin": 1, "comma": 1, "command": 1, "compact": 1, "compactifi": 1, "compat": 1, "compil": 1, "compile_flag": 1, "compile_to_llvm_for_analysi": 1, "compile_to_llvm_for_exec": 1, "comprehens": 1, "comput": 1, "compute_histogram": 1, "condit": 1, "condition_edg": 1, "condition_num": 1, "condition_truth": 1, "config": 1, "config_fil": 1, "configur": 1, "configuration_file_path": 1, "configurationpars": 1, "connect": 1, "consid": 1, "consist": 1, "constraint": 1, "construct": 1, "construct_dag": 1, "consumpt": 1, "contain": 1, "control": 1, "copi": 1, "correspond": 1, "could": 1, "count": 1, "creat": 1, "create_dag": 1, "create_dir": 1, "creation": 1, "cycl": 1, "d": 1, "dag": 1, "dag_nam": 1, "data": 1, "datadict": 1, "ddict": 1, "dealta": 1, "debug": 1, "debug_config": 1, "debugconfigur": 1, "decreas": 1, "default": 1, "defin": 1, "deg": 1, "degre": 1, "degreeview": 1, "delta": 1, "describ": 1, "descript": 1, "desktop": 1, "dest_dir": 1, "destin": 1, "determin": 1, "determinant_threshold": 1, "df": 1, "dict": 1, "dictionari": 1, "didegreeview": 1, "differ": 1, "digraph": 1, "dimens": 1, "dir": 1, "dir_loc": 1, "dir_paths_str": 1, "direct": 1, "directori": 1, "displai": 1, "dmp": 1, "do": 1, "doe": 1, "doesn": 1, "don": 1, "dot": 1, "down": 1, "drive": 1, "driver": 1, "dump": 1, "dump_all_path": 1, "dump_all_queri": 1, "dump_instruction_trac": 1, "dump_ir": 1, "dump_object": 1, "dump_path": 1, "dump_smt_trac": 1, "dure": 1, "e": 1, "e1": 1, "e2": 1, "each": 1, "edg": 1, "edge_numb": 1, "edge_weight": 1, "edgedataview": 1, "edges_indic": 1, "edges_reduc": 1, "edges_reduced_indic": 1, "edges_to_label": 1, "edgeweight": 1, "effici": 1, "either": 1, "element": 1, "empti": 1, "emu": 1, "end": 1, "end_label": 1, "endian": 1, "energi": 1, "entir": 1, "equival": 1, "error": 1, "estim": 1, "estimate_edge_weight": 1, "etc": 1, "everi": 1, "exampl": 1, "except": 1, "exclus": 1, "execut": 1, "executable_path": 1, "exhaust": 1, "exist": 1, "expos": 1, "express": 1, "extend": 1, "extens": 1, "extra": 1, "extra_flag": 1, "extra_lib": 1, "extract": 1, "extrem": 1, "extremum": 1, "f": 1, "fals": 1, "feasibl": 1, "file": 1, "file_help": 1, "file_nam": 1, "file_paths_str": 1, "filenam": 1, "filepath": 1, "find": 1, "find_extreme_path": 1, "find_goodness_of_fit": 1, "find_least_compatible_mu_max": 1, "find_longest_path_with_delta": 1, "find_minimal_overcomplete_basi": 1, "find_root_nod": 1, "find_worst_expressible_path": 1, "finit": 1, "first": 1, "fixobject": 1, "flag": 1, "flexpret_backend": 1, "flexpretbackend": 1, "float": 1, "folder": 1, "follow": 1, "foo": 1, "foovalu": 1, "form": 1, "format": 1, "formatt": 1, "former": 1, "found": 1, "fp": 1, "framework": 1, "from": 1, "frommp": 1, "func": 1, "func_nam": 1, "function": 1, "further": 1, "g": 1, "gametime_configur": 1, "gametime_error": 1, "gametime_file_path": 1, "gametime_flexpret_path": 1, "gametime_path": 1, "gametimeconfigur": 1, "gametimeerror": 1, "gametimewarn": 1, "gener": 1, "generate_and_solve_core_problem": 1, "generate_basis_path": 1, "generate_dot_fil": 1, "generate_execut": 1, "generate_executable_c": 1, "generate_overcomplete_basi": 1, "generate_path": 1, "get": 1, "get_agg_index_expr": 1, "get_array_access": 1, "get_assign": 1, "get_condit": 1, "get_condition_edg": 1, "get_condition_truth": 1, "get_descript": 1, "get_dir_path": 1, "get_dummyvar": 1, "get_edg": 1, "get_edges_for_condit": 1, "get_file_path": 1, "get_ilp_solv": 1, "get_ilp_solver_nam": 1, "get_ilp_solver_proper_nam": 1, "get_line_numb": 1, "get_measured_valu": 1, "get_nod": 1, "get_node_label": 1, "get_orig_filename_with_extens": 1, "get_predicted_valu": 1, "get_proper_nam": 1, "get_random_path": 1, "get_temp_filename_with_extens": 1, "getsens": 1, "given": 1, "glob": 1, "graph": 1, "guarante": 1, "gui": 1, "gui_dir": 1, "ha": 1, "has_cycl": 1, "has_finite_lower_bound": 1, "has_finite_upper_bound": 1, "have": 1, "help": 1, "helper": 1, "henc": 1, "here": 1, "hi": 1, "highlight": 1, "highlight_color": 1, "highlighted_edg": 1, "highlightededg": 1, "histogram": 1, "hold": 1, "home": 1, "host": 1, "how": 1, "human": 1, "i": 1, "id": 1, "idempot": 1, "ident": 1, "identifi": 1, "idiom": 1, "ignor": 1, "ilp": 1, "ilp_problem": 1, "ilp_solv": 1, "ilp_solver_nam": 1, "ilpproblem": 1, "import": 1, "in_degre": 1, "in_edg": 1, "incid": 1, "includ": 1, "increas": 1, "indegreeview": 1, "index": [0, 1], "indexexpress": 1, "indic": 1, "individu": 1, "inedgedataview": 1, "inedgeview": 1, "infeas": 1, "infeasibilitygap": 1, "info": 1, "inform": 1, "initi": 1, "initial_path": 1, "initialize_dictionari": 1, "inlin": 1, "inline_funct": 1, "input": 1, "input_fil": 1, "instanc": 1, "instruct": 1, "int": 1, "integ": 1, "interact": 1, "interest": 1, "interfac": 1, "intermedi": 1, "interv": 1, "ir": 1, "is_ilp_solver_nam": 1, "ismip": 1, "ispm": 1, "item": 1, "iter": 1, "iteratively_find_overcomplete_basi": 1, "its": 1, "itself": 1, "just": 1, "k": 1, "keep": 1, "keep_cil_temp": 1, "keep_ilp_solver_output": 1, "keep_parser_output": 1, "keep_simulator_output": 1, "kei": 1, "keyword": 1, "kwarg": 1, "l1": 1, "label": 1, "latter": 1, "leaf": 1, "least": 1, "left": 1, "legal": 1, "length": 1, "lenth": 1, "level": 1, "lf": 1, "librari": 1, "lie": 1, "like": 1, "limit": 1, "line": 1, "line_numb": 1, "linear": 1, "liner": 1, "list": 1, "littl": 1, "ll": 1, "llvm": 1, "lo": 1, "load": 1, "load_dag_from_dot_fil": 1, "load_vari": 1, "loadbasisvalu": 1, "loadbasisvaluesfromfil": 1, "local": 1, "locat": 1, "location_fil": 1, "log": 1, "logger": 1, "logging_help": 1, "long": 1, "longest": 1, "longsest": 1, "lookup": 1, "loop": 1, "lower": 1, "lower_bound": 1, "lp": 1, "lpproblem": 1, "lpsolver": 1, "machin": 1, "made": 1, "mai": 1, "main": 0, "maingt": 1, "maintain": 1, "make": 1, "make_compact": 1, "makedir": 1, "mani": 1, "map": 1, "match": 1, "matrix": 1, "max_infeasible_path": 1, "maxim": 1, "maximum": 1, "maximum_error_scale_factor": 1, "mean": 1, "measur": 1, "measure_basis_path": 1, "measure_fold": 1, "measure_path": 1, "measured_valu": 1, "mechan": 1, "mem": 1, "mem_filepath": 1, "merg": 1, "method": 1, "might": 1, "miscellan": 1, "model_as_nested_arrai": 1, "modif": 1, "modifi": 1, "modul": 0, "modular": 1, "more": 1, "most": 1, "move": 1, "move_fil": 1, "movement": 1, "mr": 1, "multidigraph": 1, "multipl": 1, "must": 1, "n": 1, "name": 1, "nameorignoextens": 1, "nbr": 1, "nbunch": 1, "nd_iter": 1, "ndarrai": 1, "necessari": 1, "need": 1, "neighbor": 1, "neither": 1, "networkx": 1, "never": 1, "node": 1, "nodedata": 1, "nodedataview": 1, "nodes_except_sink": 1, "nodes_except_sink_indic": 1, "nodes_except_source_sink": 1, "nodes_except_source_sink_indic": 1, "nodes_indic": 1, "nodeview": 1, "non": 1, "none": 1, "nor": 1, "norm": 1, "normalisednam": 1, "note": 1, "noth": 1, "nstatic": 1, "num_edg": 1, "num_nod": 1, "num_path": 1, "number": 1, "numer": 1, "numpi": 1, "nx": 1, "nx_helper": 1, "nxhelper": 1, "o": 1, "o0": 1, "obj_al": 1, "obj_val": 1, "object": 1, "object_filepath": 1, "obtain": 1, "onc": 1, "one": 1, "onli": 1, "oper": 1, "opt": 1, "option": 1, "order": 1, "origin": 1, "other": 1, "otherwis": 1, "out": 1, "out_degre": 1, "out_edg": 1, "outdegreeview": 1, "outedgedataview": 1, "outedgeview": 1, "outgo": 1, "output": 1, "output_file_fold": 1, "output_fold": 1, "output_nam": 1, "output_name_prefix": 1, "over": 1, "overcomplet": 1, "overwrit": 1, "overwritten": 1, "own": 1, "packag": 0, "page": 0, "pair": 1, "paragraph": 1, "paramet": 1, "pars": 1, "parser": 1, "pass": 1, "path": 1, "path_analyz": 1, "path_bundled_constraint": 1, "path_dimens": 1, "path_exclusive_constraint": 1, "path_function_low": 1, "path_function_upp": 1, "path_gener": 1, "path_graph": 1, "path_nam": 1, "path_typ": 1, "path_value_rang": 1, "pathanalyz": 1, "pathfunctionlow": 1, "pathfunctionupp": 1, "pathgener": 1, "pathtyp": 1, "pattern": 1, "perform": 1, "period": 1, "phoenix": 1, "pi": 1, "pmccntr_el0": 1, "point": 1, "posit": 1, "possibl": 1, "practic": 1, "preced": 1, "precondit": 1, "pred": 1, "predecessor": 1, "predefin": 1, "predict": 1, "predicted_valu": 1, "prefix": 1, "preprocessed_path": 1, "present": 1, "preserv": 1, "prevent_basis_refin": 1, "print": 1, "print_problem": 1, "printproblem": 1, "privat": 1, "problem": 1, "process": 1, "produc": 1, "program": 1, "project": 1, "project_config": 1, "project_configur": 1, "project_configuration_pars": 1, "projectconfigur": 1, "proper": 1, "properti": 1, "provid": 1, "pulp": 1, "pulp_help": 1, "purpos": 1, "put": 1, "python": 1, "queri": 1, "quietli": 1, "r": 1, "rais": 1, "random": 1, "randomize_initial_basi": 1, "rang": 1, "rather": 1, "rdcycl": 1, "rdtsc": 1, "read": 1, "read_agg_index_exprs_from_fil": 1, "read_array_accesses_from_fil": 1, "read_assignments_from_fil": 1, "read_condition_edges_from_fil": 1, "read_condition_truths_from_fil": 1, "read_conditions_from_fil": 1, "read_cycle_count": 1, "read_gametime_config_yaml": 1, "read_line_numbers_from_fil": 1, "read_measured_value_from_fil": 1, "read_nodes_from_fil": 1, "read_predicted_value_from_fil": 1, "readabl": 1, "real": 1, "red": 1, "refer": 1, "regener": 1, "rel": 1, "relat": 1, "relev": 1, "reli": 1, "remov": 1, "remove_all_except": 1, "remove_back_edges_to_make_dag": 1, "remove_fil": 1, "remove_temp_cil_fil": 1, "repeat": 1, "replac": 1, "report": 1, "repres": 1, "represent": 1, "request": 1, "requir": 1, "research": 1, "reset": 1, "reset_edge_weight": 1, "reset_path_bundled_constraint": 1, "reset_path_exclusive_constraint": 1, "rest": 1, "restoreobject": 1, "result": 1, "return": 1, "root": 1, "rtype": 1, "run": 1, "run_backend_and_parse_output": 1, "runtim": 1, "same": 1, "satisfi": 1, "save": 1, "scalabl": 1, "search": 0, "second": 1, "self": 1, "separ": 1, "set": 1, "set_ilp_solv": 1, "set_measured_valu": 1, "set_predicted_valu": 1, "shell": 1, "shortest": 1, "should": 1, "shown": 1, "simpl": 1, "simpler": 1, "simul": 1, "singl": 1, "sink": 1, "smallest": 1, "smt": 0, "so": 1, "solv": 1, "solver": 0, "some": 1, "someth": 1, "sourc": 1, "source_dir": 1, "special": 1, "special_edg": 1, "specif": 1, "specifi": 1, "specifii": 1, "src": 0, "standard": 1, "start": 1, "start_label": 1, "state": 1, "statement": 1, "static": 1, "storag": 1, "store": 1, "stored_fold": 1, "str": 1, "streamhandl": 1, "string": 1, "structur": 1, "style": 1, "subclass": 1, "submodul": 1, "subscript": 1, "succ": 1, "successor": 1, "sum": 1, "supplement": 1, "support": 1, "symbol": 1, "system": 1, "t": 1, "take": 1, "taken": 1, "target": 1, "temperari": 1, "temporari": 1, "temprari": 1, "test": 1, "than": 1, "thei": 1, "them": 1, "thi": 1, "those": 1, "through": 1, "throw": 1, "time": 1, "timing_func": 1, "togeth": 1, "tool": 1, "total": 1, "trace": 1, "travers": 1, "tripl": 1, "true": 1, "truth": 1, "tupl": 1, "two": 1, "type": 1, "u": 1, "under": 1, "underli": 1, "unix": 1, "unreli": 1, "unrol": 1, "unroll_loop": 1, "unsign": 1, "unusedconstraintnam": 1, "upper": 1, "upper_bound": 1, "us": 1, "use_ob_extract": 1, "user": 1, "usual": 1, "util": 1, "v": 1, "val": 1, "valid": 1, "valu": 1, "variabl": 1, "variablesdict": 1, "variou": 1, "vector": 1, "version": 1, "vertex": 1, "via": 1, "view": 1, "visit": 1, "visual": 1, "volatil": 1, "wa": 1, "wai": 1, "want": 1, "warn": 1, "we": 1, "weight": 1, "weights_posit": 1, "weightsposit": 1, "well": 1, "when": 1, "where": 1, "whether": 1, "which": 1, "while": 1, "whitespac": 1, "whose": 1, "within": 1, "without": 1, "word": 1, "work": 1, "worst": 1, "worst_cas": 1, "would": 1, "wrapper": 1, "write": 1, "write_agg_index_exprs_to_fil": 1, "write_array_accesses_to_fil": 1, "write_assignments_to_fil": 1, "write_condition_edges_to_fil": 1, "write_condition_truths_to_fil": 1, "write_conditions_to_fil": 1, "write_dag_to_dot_fil": 1, "write_histogram_to_fil": 1, "write_ilp_problem_to_lp_fil": 1, "write_line_numbers_to_fil": 1, "write_measured_value_to_fil": 1, "write_nodes_to_fil": 1, "write_predicted_value_to_fil": 1, "written": 1, "x86_backend": 1, "x86backend": 1, "yaml": 1, "yaml_config_path": 1, "yamlconfigurationpars": 1, "yield": 1, "you": 1, "your": 1}, "titles": ["Welcome to GameTime\u2019s documentation!", "GameTime src Documentation"], "titleterms": {"": 0, "arm": 1, "backend": 1, "base": 1, "content": 0, "document": [0, 1], "flexpret": 1, "gametim": [0, 1], "indic": 0, "main": 1, "modul": 1, "packag": 1, "smt": 1, "solver": 1, "src": 1, "tabl": 0, "welcom": 0, "x86": 1}}) \ No newline at end of file