1. ariovistus
  2. ariovistus.bitbucket.org

Commits

ariovistus  committed 9efb7f1

post some ddoc for pyd

  • Participants
  • Parent commits afcab30
  • Branches default

Comments (0)

Files changed (39)

File index.html

View file
 <html>
-<p> Hello world! </p>
+    <h1> Projects </h1>
+    <h2><a href="multi_index.html">multi_index</a></h2>
+    <h2><a href="pyd/pyd.html">pyd</a></h2>
 </html>

File multi_index.html

View file
 	</ul>
 	</div>
 
-	<div id="lastupdate">Last update Sun Jul 22 16:35:33 2012
+	<div id="lastupdate">Last update Sun Jul 22 17:53:21 2012
 </div>
 </div>
 -->
 <i><b>&Omicron;</i>(</i></b><span class="d_inlinecode">log(n)</span><b></i>)</i></b><p></p>
 
 </dd>
+<dt><div class="d_decl">auto <a name="upperBound"></a><u>upperBound</u>(CompatibleLess, CompatibleKey)(CompatibleKey <i>k</i>);
+</div></dt>
+<dd>Get a range from the container with all elements that are &gt; k according
+ to the compatible sorting criterion.
+<p></p>
+<b>Complexity:</b><br>
+<i><b>&Omicron;</i>(</i></b><span class="d_inlinecode">log(n)</span><b></i>)</i></b><p></p>
+
+</dd>
+<dt><div class="d_decl">const auto <a name="upperBound"></a><u>upperBound</u>(CompatibleLess, CompatibleKey)(CompatibleKey <i>k</i>);
+</div></dt>
+<dd>Get a range from the container with all elements that are &gt; k according
+ to the compatible sorting criterion.
+<p></p>
+<b>Complexity:</b><br>
+<i><b>&Omicron;</i>(</i></b><span class="d_inlinecode">log(n)</span><b></i>)</i></b><p></p>
+
+</dd>
 <dt><div class="d_decl">auto <a name="lowerBound"></a><u>lowerBound</u>(U)(U <i>k</i>);
 </div></dt>
 <dd>Get a range from the container with all elements that are &lt; k according
 <i><b>&Omicron;</i>(</i></b><span class="d_inlinecode">log(n)</span><b></i>)</i></b><p></p>
 
 </dd>
+<dt><div class="d_decl">auto <a name="lowerBound"></a><u>lowerBound</u>(CompatibleLess, CompatibleKey)(CompatibleKey <i>k</i>);
+</div></dt>
+<dd>Get a range from the container with all elements that are &lt; k according
+ to the compatible sorting criterion.
+<p></p>
+<b>Complexity:</b><br>
+<i><b>&Omicron;</i>(</i></b><span class="d_inlinecode">log(n)</span><b></i>)</i></b><p></p>
+
+</dd>
+<dt><div class="d_decl">const auto <a name="lowerBound"></a><u>lowerBound</u>(CompatibleLess, CompatibleKey)(CompatibleKey <i>k</i>);
+</div></dt>
+<dd>Get a range from the container with all elements that are &lt; k according
+ to the compatible sorting criterion.
+<p></p>
+<b>Complexity:</b><br>
+<i><b>&Omicron;</i>(</i></b><span class="d_inlinecode">log(n)</span><b></i>)</i></b><p></p>
+
+</dd>
 <dt><div class="d_decl">auto <a name="equalRange"></a><u>equalRange</u>(U)(U <i>k</i>);
 </div></dt>
 <dd>Get a range from the container with all elements that are == k according
 <i><b>&Omicron;</i>(</i></b><span class="d_inlinecode">log(n)</span><b></i>)</i></b><p></p>
 
 </dd>
-<dt><div class="d_decl">OrderedRange <a name="bounds"></a><u>bounds</u>(string boundaries = "[]", U)(U <i>lower</i>, U <i>upper</i>);
+<dt><div class="d_decl">auto <a name="equalRange"></a><u>equalRange</u>(CompatibleLess, CompatibleKey)(CompatibleKey <i>k</i>);
+</div></dt>
+<dd>Get a range from the container with all elements that are == k according
+ to the compatible sorting criterion.
+<p></p>
+<b>Complexity:</b><br>
+<i><b>&Omicron;</i>(</i></b><span class="d_inlinecode">log(n)</span><b></i>)</i></b><p></p>
+
+</dd>
+<dt><div class="d_decl">const auto <a name="equalRange"></a><u>equalRange</u>(CompatibleLess, CompatibleKey)(CompatibleKey <i>k</i>);
+</div></dt>
+<dd>Get a range from the container with all elements that are == k according
+ to the compatible sorting criterion.
+<p></p>
+<b>Complexity:</b><br>
+<i><b>&Omicron;</i>(</i></b><span class="d_inlinecode">log(n)</span><b></i>)</i></b><p></p>
+
+</dd>
+<dt><div class="d_decl">auto <a name="bounds"></a><u>bounds</u>(string boundaries = "[]", U)(U <i>lower</i>, U <i>upper</i>);
+</div></dt>
+<dd>Get a range of values bounded below by lower and above by upper, with
+inclusiveness defined by boundaries.
+<p></p>
+<b>Complexity:</b><br>
+<i><b>&Omicron;</i>(</i></b><span class="d_inlinecode">log(n)</span><b></i>)</i></b><p></p>
+
+</dd>
+<dt><div class="d_decl">auto <a name="bounds"></a><u>bounds</u>(string boundaries = "[]", CompatibleLess, CompatibleKey)(CompatibleKey <i>lower</i>, CompatibleKey <i>upper</i>);
 </div></dt>
 <dd>Get a range of values bounded below by lower and above by upper, with
 inclusiveness defined by boundaries.

File pyd/Nameof.html

View file
+
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<meta content="text/javascript" http-equiv="content-script-type">
+<title>meta.Nameof</title>
+<link rel="stylesheet" type="text/css" href="candydoc/style.css">
+<!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="candydoc/ie56hack.css"><![endif]-->
+<script language="JavaScript" src="candydoc/util.js" type="text/javascript"></script>
+<script language="JavaScript" src="candydoc/tree.js" type="text/javascript"></script>
+<script language="JavaScript" src="candydoc/explorer.js" type="text/javascript"></script>
+</head><body>
+<div id="tabarea"></div><div id="explorerclient"></div>
+<div id="content"><script>explorer.initialize("meta.Nameof");</script>
+	<table class="content">
+		<tr><td id="docbody"><h1>meta.Nameof</h1><!-- Generated by Ddoc from ../infrastructure//meta/Nameof.d -->
+Convert any D symbol or type to a human-readable string, at compile time.
+<br><br>
+Given any D symbol (class, template, function, module name, or non-local variable)
+   or any D type, convert it to a compile-time string literal,
+   optionally containing the fully qualified and decorated name.
+<br><br>
+
+   Limitations (as of DMD 0.167):
+   1. Names of local variables cannot be determined, because they are not permitted
+      as template alias parameters. Technically, it's possible to determine the name by using
+      a mixin hack, but it's so ugly that it cannot be recommended.
+   2. The name mangling for symbols declared inside extern(Windows), extern(C) and extern(Pascal)
+      functions is inherently ambiguous, so such inner symbols are not always correctly displayed.
+
+<br><br>
+<b>License:</b><br>
+BSD style: 
+<br><br>
+<b>Authors:</b><br>
+Don Clugston
+<br><br>
+
+
+<script>explorer.outline.incSymbolLevel();</script>
+<dl>
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">template 
+<span class="currsymbol">manglednameof</span>
+<script>explorer.outline.addDecl('manglednameof');</script>(alias A)</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Like .mangleof, except that it works for an alias template parameter instead of a type.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">template 
+<span class="currsymbol">prettynameof</span>
+<script>explorer.outline.addDecl('prettynameof');</script>(alias A)</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>The symbol as it was declared, but including full type qualification.
+<br><br>
+<b>example:</b><br>
+"int mymodule.myclass.myfunc(uint, class otherclass)"<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">template 
+<span class="currsymbol">prettytypeof</span>
+<script>explorer.outline.addDecl('prettytypeof');</script>(A)</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Convert any D type to a human-readable string literal
+<br><br>
+<b>example:</b><br>
+"int function(double, char[])"<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">template 
+<span class="currsymbol">qualifiednameof</span>
+<script>explorer.outline.addDecl('qualifiednameof');</script>(alias A)</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Returns the qualified name of the symbol A.
+<br><br>
+This will be a sequence of identifiers, seperated by dots.
+ eg "mymodule.myclass.myfunc"
+ This is the same as prettynameof(), except that it doesn't include any type information.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">template 
+<span class="currsymbol">symbolnameof</span>
+<script>explorer.outline.addDecl('symbolnameof');</script>(alias A)</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Returns the unqualified name, as a single text string.
+<br><br>
+eg. "myfunc"<br><br>
+
+</dd>
+</dl>
+<script>explorer.outline.decSymbolLevel();</script>
+</td></tr>
+		<tr><td id="docfooter">
+			Page was generated with
+			<img src="candydoc/img/candydoc.gif" style="vertical-align:middle; position:relative; top:-1px">
+			on Thu Aug 30 19:08:15 2012
+
+		</td></tr>
+	</table>
+</div>
+<script>
+	explorer.packageExplorer.addModule("pyd.class_wrap");
+	explorer.packageExplorer.addModule("pyd.def");
+	explorer.packageExplorer.addModule("pyd.embedded");
+	explorer.packageExplorer.addModule("pyd.exception");
+	explorer.packageExplorer.addModule("pyd.func_wrap");
+	explorer.packageExplorer.addModule("pyd.make_object");
+	explorer.packageExplorer.addModule("pyd.pyd");
+	explorer.packageExplorer.addModule("pyd.pydobject");
+	explorer.packageExplorer.addModule("pyd.struct_wrap");
+	explorer.packageExplorer.addModule("meta.Nameof");
+	explorer.packageExplorer.addModule("python");</script>
+</body></html>

File pyd/candydoc/explorer.js

View file
+/* This file is a part of CanDyDOC fileset.
+   File is written by Victor Nakoryakov and placed into the public domain.
+
+   This file is javascript with classes that represents explorer window.
+   And things related to navigation. */
+   
+var explorer = new Explorer();
+
+///////////////////////////////////////////////////////////////////////////////
+// Current symbol marker class constructor
+///////////////////////////////////////////////////////////////////////////////
+function Marker()
+{
+    this.top    = document.createElement("div");
+    this.middle = document.createElement("div");
+    this.bottom = document.createElement("div");
+    this.container = document.createElement("div");
+    
+    this.setTo = function(term)
+    {
+        // find definition related to `term`
+        var def = term.nextSibling;
+        while (def && def.nodeName != "DD")
+            def = def.nextSibling;
+            
+        var defHeight = 0;
+        var childrenHeight = 0; // children of current declaration
+        if (def)
+        {
+            defHeight = def.offsetHeight;
+            var child = def.firstChild;
+            
+            // traverse until DL tag, until children definition
+            while (child && child.nodeName != "DL")
+                child = child.nextSibling;
+                
+            if (child)
+                childrenHeight = child.offsetHeight;
+        }
+        
+        this.top.style.height = term.offsetHeight;
+        this.middle.style.height = defHeight - childrenHeight;
+        this.bottom.style.height = childrenHeight;
+        
+        if (childrenHeight == 0)
+            this.bottom.style.display = "none";
+        else
+            this.bottom.style.display = "";
+        
+        this.container.style.left = getLeft(term) - 8;
+        this.container.style.top = getTop(term);
+        this.container.style.display = "";
+    }
+        
+    ///////////////////////////////////////////////////////////////////////////
+    this.container.style.position = "absolute";
+    this.container.style.display = "none";
+    
+    this.top.className = "markertop";
+    this.middle.className = "markermiddle";
+    this.bottom.className = "markerbottom";
+    
+    this.container.appendChild(this.top);
+    this.container.appendChild(this.middle);
+    this.container.appendChild(this.bottom);
+    
+    //document.body.appendChild( this.container );
+    
+    // Workaround bug in IE 5/6. We can not append anything to document body until
+    // full page load.
+    window.marker = this;
+    if (window.addEventListener)
+        window.addEventListener("load", new Function("document.body.appendChild( window.marker.container );"), false);
+    else if (window.attachEvent)
+        window.attachEvent("onload", new Function("document.body.appendChild( window.marker.container );"));
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// Outline class constructor
+///////////////////////////////////////////////////////////////////////////////
+function Outline()
+{
+    this.tree           = new TreeView();
+    this.mountPoint     = null;    
+    this.writeEnabled   = false;
+    this.marker         = new Marker();        
+    this.classRegExp    = new RegExp;
+    this.structRegExp   = new RegExp;
+    this.enumRegExp     = new RegExp;
+    this.templateRegExp = new RegExp;
+    this.aliasRegExp    = new RegExp;
+    this.funcRegExp     = new RegExp;
+    
+    this.incSymbolLevel = function()
+    {
+        if (this.mountPoint == null)
+            this.mountPoint = this.tree.children[ 0 ];
+        else
+            this.mountPoint = this.mountPoint.lastChild();
+    }
+
+    this.decSymbolLevel = function()
+    {
+        // place icons near items according to extracted below type
+        for (var i = 0; i < this.mountPoint.children.length; ++i)
+        {
+            child = this.mountPoint.children[i];
+            var term = child.termRef;
+            
+            // find first span node
+            var n = term.firstChild;
+            while (n && n.nodeName != "SPAN")
+                n = n.nextSibling;
+            
+            if (!n) // shouldn't happen
+                continue;
+            
+            var iconSrc;
+            if (n.firstChild.nodeName == "#text")
+            {
+                var text = n.firstChild.data; // text before declaration
+                
+                if ( this.classRegExp.test(text) )
+                    iconSrc = "candydoc/img/outline/class.gif";
+                else if ( this.structRegExp.test(text) )
+                    iconSrc = "candydoc/img/outline/struct.gif";
+                else if ( this.enumRegExp.test(text) )
+                    iconSrc = "candydoc/img/outline/enum.gif";
+                else if ( this.templateRegExp.test(text) )
+                    iconSrc = "candydoc/img/outline/template.gif";
+                else if ( this.aliasRegExp.test(text) )
+                    iconSrc = "candydoc/img/outline/alias.gif";
+                else // function or variable? check whether '(' ')' exists on the right
+                {
+                    var np = n.firstChild;
+                    while (np && np.nodeName != "SCRIPT") // find our script "onDecl"
+                        np = np.nextSibling;
+                        
+                    if (np && np.nextSibling && np.nextSibling.nodeName == "#text" &&
+                        this.funcRegExp.test(np.nextSibling.data))
+                    {
+                        iconSrc = "candydoc/img/outline/func.gif";
+                    }
+                    else
+                        iconSrc = "candydoc/img/outline/var.gif";
+                }
+            }
+            else // enum member ?
+                iconSrc = "candydoc/img/outline/var.gif";
+                    
+            child.icon.src = iconSrc;
+            child.icon.width = 16;
+            child.icon.height = 16;
+        }
+        
+        this.mountPoint = this.mountPoint.parentNode;
+    }
+
+    this.addDecl = function(decl)
+    {
+        function getLastLeaf(elem)
+        {
+            if (elem.childNodes.length > 0)
+                return getLastLeaf(elem.lastChild);
+            else
+                return elem;
+        }
+
+        function getCurrentTerm()
+        {
+            var ret = getLastLeaf( document.getElementById("content") );
+            while (ret && ret.nodeName != "DT")
+                ret = ret.parentNode;
+            
+            return ret;
+        }
+        
+        if (this.writeEnabled)
+        {
+            var node = this.mountPoint.createChild(decl);
+            node.termRef = getCurrentTerm();
+            node.setOnclick( new Function("explorer.outline.mark(this.termRef);") );
+        }
+    }
+
+    this.mark = function(term)
+    {
+        this.marker.setTo(term);
+        window.scrollTo(0, getTop(term) - getWindowHeight() / 6);    
+    }
+        
+    
+    this.classRegExp.compile("(.*\b)?class(\b.*)?");
+    this.structRegExp.compile("(.*\b)?struct(\b.*)?");
+    this.enumRegExp.compile("(.*\b)?enum(\b.*)?");
+    this.templateRegExp.compile("(.*\b)?template(\b.*)?");
+    this.aliasRegExp.compile("(.*\b)?alias(\b.*)?");
+    this.funcRegExp.compile(/.*\(.*/);    
+}
+
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+// Package explorer class constructor
+///////////////////////////////////////////////////////////////////////////////
+function PackageExplorer()
+{
+    this.tree = new TreeView(true);    
+    
+    this.addModule = function(mod)
+    {
+        var moduleIco = "candydoc/img/outline/module.gif";
+        var packageIco = "candydoc/img/outline/package.gif";
+
+        var path = mod.split("\.");
+        var node = this.tree.branch(path[0]);
+        if ( !node )
+            node = this.tree.createBranch(path[0], (path.length == 1) ? moduleIco : packageIco);
+        
+        for (var i = 1; i < path.length; ++i)
+        {
+            var prev = node;
+            node = node.child(path[i]);
+            if (!node)
+                node = prev.createChild(path[i], (path.length == i + 1) ? moduleIco : packageIco);
+                
+            if (path.length == i + 1)
+                node.setRef(path[i] + ".html");
+        }
+    }
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+// Explorer class constructor
+///////////////////////////////////////////////////////////////////////////////
+function Explorer()
+{
+    this.outline         = new Outline();
+    this.packageExplorer = new PackageExplorer();
+    this.tabs            = new Array();
+    this.tabCount        = 0;
+    
+    this.initialize = function(moduleName)
+    {
+        this.tabArea = document.getElementById("tabarea");
+        this.clientArea = document.getElementById("explorerclient");
+        
+        // prevent text selection
+        this.tabArea.onmousedown = new Function("return false;");
+        this.tabArea.onclick = new Function("return true;");
+        this.tabArea.onselectstart = new Function("return false;");
+        this.clientArea.onmousedown = new Function("return false;");
+        this.clientArea.onclick = new Function("return true;");
+        this.clientArea.onselectstart = new Function("return false;");
+        
+        this.outline.tree.createBranch( moduleName, "candydoc/img/outline/module.gif" );
+        
+        // create tabs
+        this.createTab("Outline", this.outline.tree.domEntry);
+        this.createTab("Package", this.packageExplorer.tree.domEntry);
+    }
+    
+    this.createTab = function(name, domEntry)
+    {
+        var tab = new Object();
+        this.tabs[name] = tab;
+        this.tabCount++;
+        
+        tab.domEntry = domEntry;
+        tab.labelSpan = document.createElement("span");
+        
+        if (this.tabCount > 1)
+        {
+            tab.labelSpan.className = "inactivetab";
+            tab.domEntry.style.display = "none";
+        }
+        else
+        {
+            tab.labelSpan.className = "activetab";
+            tab.domEntry.style.display = "";
+        }
+        
+        tab.labelSpan.appendChild( document.createTextNode(name) );
+        tab.labelSpan.owner = this;
+        tab.labelSpan.onclick = new Function("this.owner.setSelection('" + name + "');");
+        
+        this.tabArea.appendChild( tab.labelSpan );
+        this.clientArea.appendChild( domEntry );
+    }
+    
+    this.setSelection = function(tabName)
+    {
+        for (name in this.tabs)
+        {
+            this.tabs[name].labelSpan.className = "inactivetab";
+            this.tabs[name].domEntry.style.display = "none";
+        }
+        
+        this.tabs[tabName].labelSpan.className = "activetab";
+        this.tabs[tabName].domEntry.style.display = "";
+    }
+}

File pyd/candydoc/ie56hack.css

View file
+/* This file is a part of CanDyDOC fileset.
+   File is written by Victor Nakoryakov and placed into the public domain.
+
+   This file is CSS to work around IE6 and earlier bugs. It's included just
+   in these browsers. */
+
+
+/* Some magic to emulate unsupported "position: fixed" style. */
+#tabarea
+{
+	_position: absolute;
+	_top: expression(eval(document.body.scrollTop+8));
+}
+
+/* ditto */
+#explorerclient 
+{
+	_position: absolute;
+	_top: expression(eval(document.body.scrollTop+24));
+	_height: expression(eval(document.body.clientHeight-48));
+}

File pyd/candydoc/img/bg.gif

Added
New image

File pyd/candydoc/img/candydoc.gif

Added
New image

File pyd/candydoc/img/outline/alias.gif

Added
New image

File pyd/candydoc/img/outline/bg.gif

Added
New image

File pyd/candydoc/img/outline/class.gif

Added
New image

File pyd/candydoc/img/outline/enum.gif

Added
New image

File pyd/candydoc/img/outline/func.gif

Added
New image

File pyd/candydoc/img/outline/module.gif

Added
New image

File pyd/candydoc/img/outline/package.gif

Added
New image

File pyd/candydoc/img/outline/struct.gif

Added
New image

File pyd/candydoc/img/outline/template.gif

Added
New image

File pyd/candydoc/img/outline/var.gif

Added
New image

File pyd/candydoc/img/package/bg.gif

Added
New image

File pyd/candydoc/img/tree/shim.gif

Added
New image

File pyd/candydoc/img/tree/tb.gif

Added
New image

File pyd/candydoc/img/tree/tbr.gif

Added
New image

File pyd/candydoc/img/tree/tbrm.gif

Added
New image

File pyd/candydoc/img/tree/tbrp.gif

Added
New image

File pyd/candydoc/img/tree/tr.gif

Added
New image

File pyd/candydoc/img/tree/trm.gif

Added
New image

File pyd/candydoc/img/tree/trp.gif

Added
New image

File pyd/candydoc/style.css

View file
+/* This file is a part of CanDyDOC fileset.
+   File is written by Victor Nakoryakov and placed into the public domain.
+
+   This file is main CSS file of CanDyDOC. You may adjust some part of
+   parameters to control how result documentation would looks like. See
+   further documentation for details. */
+
+
+
+/* This controls how background would looks like and
+   sets some document-scope defaults. */
+body 
+{
+	/* These parameters control default font. */
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10pt;
+	color: #666666;
+	
+	/* These control look of background. Note that you have to use
+       fixed background to keep documentation good-looking in
+       IE6 and earlier. Otherwise whole *explorer* will jerk while
+       scrolling. If you do not want to use background at all use
+       some invalid url, e.g. url(foo). */
+	background-color: #e6fcea;
+	background: url(img/bg.gif) fixed;
+	
+	/* Don't touch. Necessary for IE6 and earlier. */
+	height: 100%;	
+}
+
+
+
+/* Style applied to all tables. Actualy there are two: one table is
+   that contains contant and footer with CanDyDOC logo, and others
+   are that contains functions' parameters description. */
+table 
+{
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10pt;
+	color: #666666;
+	text-align: justify;
+}
+
+
+/* Style used for all hyperlinks. */
+a:link {  color: #009900; text-decoration: none }
+a:visited {  color: #009999; text-decoration: none }
+a:hover {  color: #0033cc; text-decoration: none }
+a:active {  color: #0033cc; text-decoration: none }
+
+/*
+table.matrix 
+{
+	border-left: double 3px #666666;
+	border-right: double 3px #666666;
+	margin-left: 3em;
+}
+*/
+
+/* Style appled to declarations. E.g. 'void foo(int a, float b);' */
+span.decl { font-size: 10pt; font-weight: bold; color: #000000; text-align: left }
+/* Style appled to current declaration's symbol. E.g. 'foo' in 'void foo(int a, float b);' */
+span.currsymbol { font-size: 12pt; color: #009900 }
+/* Style appled to function's parameters. E.g. 'a' and 'b' in 'void foo(int a, float b);' */
+span.funcparam  { font-style: italic; font-weight: normal; color: #331200 }
+
+/* Style for div that actualy contains documenation. */
+#content
+{
+	padding-right: 8px;
+	position: absolute;
+	left: 245px;
+	top: 8px;
+	text-align: justify;
+}
+
+/* Style for table that is inside div considered above. Contains documentaton
+   itself and footer with CanDyDOC logo. */
+table.content
+{
+	margin-bottom: 8px;
+	border-spacing: 0px;
+	border-collapse: collapse;
+	background-color: #ffffff;
+}
+
+/* Style for cell of above considered table that contains documentation itself. */
+#docbody
+{
+	padding: 8px 20px 8px 20px;
+	border: solid 1px #009900;
+}
+
+/* Style for cell that contains CanDyDOC logo. */
+#docfooter
+{
+	height: 16px;
+	background-color: #ddeedd;
+	padding: 0px 8px 0px 8px;
+	border: solid 1px #009900;
+}
+
+/* Style applied to currently active tab of explorer window. */
+span.activetab
+{
+	background-color: #0033cc;
+	border-top: solid 2px #009900;
+	color: #ffffff;
+	font-weight: bold;
+	padding-left: 4px;
+	padding-right: 4px;
+	padding-top: 1px;
+	margin-right: 1px;
+}
+
+/* Style applied to currently inactive tab of explorer window. */
+span.inactivetab
+{
+	background-color: #000066;
+	color: #cccccc;
+	font-weight: normal;
+	padding-left: 4px;
+	padding-right: 4px;
+	padding-top: 0px;
+	margin-right: 1px;
+}
+
+/* Style applied to div that contains tabs of explorer. Note that if
+   you want to change it's position you have to change position of
+   #explorerclient, #content and corresponding values in ie56hack.css */
+#tabarea
+{
+	position: fixed;
+	top: 8px;
+	width: 205px;
+	height: 16px;
+	cursor: default;
+}
+
+
+/* Style applied to div that contains tree in explorer. Note that if
+   you want to change it's position you have to change position of
+   #tabarea, #content and corresponding values in ie56hack.css */
+#explorerclient 
+{
+	position: fixed;
+	top: 24px;
+	bottom: 8px;
+	width: 205px;
+	overflow: auto;
+	background-color: #fcfffc;
+	border: solid 2px #0033cc;
+	padding: 4px;
+	cursor: default;
+	color: Black;
+}
+
+/* Following 3 styles control appearance of marker that appears
+   if you click some entity in outline window. */
+div.markertop	{ border-left: solid 2px #0033cc;}
+div.markermiddle{ border-left: dotted 2px #0033cc;}
+div.markerbottom{ border-left: dotted 2px #66cc66;}
+
+/* Style applied to preformated text used to show examples. */
+pre.d_code
+{
+	border: dotted 1px #9c9;
+	background-color: #eeffee;
+}

File pyd/candydoc/tree.js

View file
+/* This file is a part of CanDyDOC fileset.
+   File is written by Victor Nakoryakov and placed into the public domain.
+
+   This file is javascript with classes that represents native style tree control. */
+   
+var pmNone = 0;
+var pmPlus = 1;
+var pmMinus = 2;
+
+var hlNone = 0;
+var hlGrey = 1;
+var hlSelected = 2;
+
+function TreeView(hrefMode)
+{
+    this.domEntry = document.createElement("div");
+    this.children = new Array();
+    this.selection = null;
+    this.hrefMode = hrefMode;
+    
+    this.createBranch = function(text, iconSrc)
+    {
+        var root = new TreeNode(text, iconSrc, this.hrefMode);
+        root.owner = this;
+        this.children[ this.children.length ] = root;
+        this.domEntry.appendChild( root.domEntry );
+        return root;
+    }
+    
+    this.branch = function(text)
+    {
+        var ret = null;
+        for (var i = 0; i < this.children.length; ++i)
+            if (this.children[i].textElement.data == text)
+            {
+                ret = this.children[i];
+                break;
+            }
+            
+        return ret;
+    }
+    
+    this.domEntry.style.fontSize = "10px";
+    this.domEntry.style.cursor = "default";
+    this.domEntry.style.whiteSpace = "nowrap";
+}
+
+var idCounter = 0;
+function TreeNode(text, iconSrc, hrefMode)
+{
+    this.id             = idCounter++;
+    this.parentNode     = null;
+    this.children       = new Array();
+    this.domEntry       = document.createElement("div");
+    this.icon           = document.createElement("img");
+    this.textElement    = document.createTextNode(text);
+    this.textSpan       = document.createElement("span");
+    this.lineDiv        = document.createElement("div");
+    this.hierarchyImgs  = new Array();
+    this.onclick        = null;
+    
+    function createIcon()
+    {
+        var img = document.createElement("img");
+        img.style.verticalAlign = "middle";
+        img.style.position = "relative";
+        img.style.top = "-1px";
+        img.width = 16;
+        img.height = 16;
+        return img;
+    }
+    
+    function createHierarchyImage()
+    {
+        var img = createIcon();
+        img.pointsTop = false;
+        img.pointsBottom = false;
+        img.pointsRight = false;
+        img.pmState = pmNone;
+        return img;
+    }
+    
+    function genHierarchyImageSrc(hierarchyImg)
+    {
+        var name = "";
+        if (hierarchyImg.pointsTop)
+            name += "t";
+            
+        if (hierarchyImg.pointsBottom)
+            name += "b";
+            
+        if (hierarchyImg.pointsRight)
+            name += "r";
+            
+        if (hierarchyImg.pmState == pmPlus)
+            name += "p";
+        else if (hierarchyImg.pmState == pmMinus)
+            name += "m";
+        
+        if (name == "")
+            name = "shim";
+        
+        return "candydoc/img/tree/" + name + ".gif";
+    }
+    
+    function setSrc(icon, src)
+    {
+        icon.src = src;
+        // After src change width and height are reseted in IE.
+        // Bug workaround:
+        icon.width = 16;
+        icon.height = 16;
+    }
+    
+    this.createChild = function(text, iconSrc)
+    {
+        var child = new TreeNode(text, iconSrc, this.owner.hrefMode);
+        this.children[ this.children.length ] = child;
+        this.domEntry.appendChild( child.domEntry );
+        child.parentNode = this;
+        child.owner = this.owner;
+        
+        // insert hierarchy images according to deepness level
+        // of created child.
+        
+        if (this.children.length > 1)
+        {
+            // there were already added child before. So copy `level-1`
+            // hierarchy images from it.
+            
+            var prevAddedChild = this.children[ this.children.length - 2 ];
+            
+            for (var i = 0; i < prevAddedChild.hierarchyImgs.length - 1; ++i)
+            {
+                var prevAddedChildImg = prevAddedChild.hierarchyImgs[i];
+                var img = createHierarchyImage();
+                setSrc(img, prevAddedChildImg.src);
+                img.pointsTop = prevAddedChildImg.pointsTop;
+                img.pointsBottom = prevAddedChildImg.pointsBottom;
+                img.pointsRight = prevAddedChildImg.pointsRight;
+                img.pmState = prevAddedChildImg.pmState;
+                
+                child.hierarchyImgs[ child.hierarchyImgs.length ] = img;
+                child.lineDiv.insertBefore(img, child.icon);
+            }
+            
+            // change last hierarchy image of prevAddedChild from |_ to |-
+            var lastHierarchyImg = prevAddedChild.hierarchyImgs[ prevAddedChild.hierarchyImgs.length - 1 ];
+            lastHierarchyImg.pointsBottom = true;
+            setSrc(lastHierarchyImg, genHierarchyImageSrc(lastHierarchyImg));
+                        
+            // change hierarchy images of prevAddedChild's children on it's last
+            // level to |
+            prevAddedChild.addHierarchyTBLine(prevAddedChild.hierarchyImgs.length - 1);
+        }
+        else
+        {
+            // this is a first child. So copy `level-2`
+            // hierarchy images from parent, i.e. this.
+            
+            for (var i = 0; i < this.hierarchyImgs.length - 1; ++i)
+            {
+                var parentImg = this.hierarchyImgs[i];
+                var img = createHierarchyImage();
+                setSrc(img, parentImg.src);
+                img.pointsTop = parentImg.pointsTop;
+                img.pointsBottom = parentImg.pointsBottom;
+                img.pointsRight = parentImg.pointsRight;
+                img.pmState = parentImg.pmState;
+                
+                child.hierarchyImgs[ child.hierarchyImgs.length ] = img;
+                child.lineDiv.insertBefore(img, child.icon);
+            }
+            
+            if (this.hierarchyImgs.length > 0) // we are not root
+            {
+                // change last hierarchy image of parent (i.e. this): add minus to it
+                var lastHierarchyImg = this.hierarchyImgs[ this.hierarchyImgs.length - 1];
+                lastHierarchyImg.pmState = pmMinus;
+                setSrc(lastHierarchyImg, genHierarchyImageSrc(lastHierarchyImg));
+                lastHierarchyImg.owner = this;
+                lastHierarchyImg.onclick = new Function("e", "this.owner.processPMClick(e);");
+                
+                // make decision on image on `level-1`. It depends on parent's (ie this)
+                // image on same level.
+                var parentL1HierarchyImg = lastHierarchyImg;
+                var l1HierarchyImg = createHierarchyImage();
+                if (parentL1HierarchyImg.pointsBottom)
+                {
+                    l1HierarchyImg.pointsTop = true;
+                    l1HierarchyImg.pointsBottom = true;
+                }
+                setSrc(l1HierarchyImg, genHierarchyImageSrc(l1HierarchyImg));
+                child.hierarchyImgs[ child.hierarchyImgs.length ] = l1HierarchyImg;
+                child.lineDiv.insertBefore(l1HierarchyImg, child.icon);
+            }
+        }
+        
+        // in any case on last level our child will have icon |_
+        var img = createHierarchyImage();
+        img.pointsTop = true;
+        img.pointsRight = true;
+        setSrc(img, genHierarchyImageSrc(img));
+        
+        child.hierarchyImgs[ child.hierarchyImgs.length ] = img;
+        child.lineDiv.insertBefore(img, child.icon);
+        
+        return child;
+    }
+    
+    this.lastChild = function()
+    {
+        return this.children[ this.children.length - 1 ];
+    }
+    
+    this.child = function(text)
+    {
+        var ret = null;
+        for (var i = 0; i < this.children.length; ++i)
+            if (this.children[i].textElement.data == text)
+            {
+                ret = this.children[i];
+                break;
+            }
+            
+        return ret;
+    }
+    
+    this.addHierarchyTBLine = function(level)
+    {
+        for (var i = 0; i < this.children.length; ++i)
+        {
+            var img = this.children[i].hierarchyImgs[level];
+            img.pointsTop = true;
+            img.pointsBottom = true;
+            setSrc(img, genHierarchyImageSrc(img));
+            this.children[i].addHierarchyTBLine(level);
+        }
+    }
+    
+    this.expand = function()
+    {
+        var img = this.hierarchyImgs[ this.hierarchyImgs.length - 1 ];
+        
+        if (img.pmState == pmPlus)
+        {
+            img.pmState = pmMinus;
+            setSrc(img, genHierarchyImageSrc(img));
+            
+            for (var i = 0; i < this.children.length; ++i)
+                this.children[i].domEntry.style.display = "";
+        }
+    }
+    
+    this.collapse = function()
+    {
+        var img = this.hierarchyImgs[ this.hierarchyImgs.length - 1 ];
+        
+        if (img.pmState == pmMinus)
+        {
+            img.pmState = pmPlus;
+            setSrc(img, genHierarchyImageSrc(img));
+            
+            for (var i = 0; i < this.children.length; ++i)
+                this.children[i].domEntry.style.display = "none";
+        }
+    }
+    
+    this.toggle = function()
+    {
+        var img = this.hierarchyImgs[ this.hierarchyImgs.length - 1 ];
+        if (img.pmState == pmMinus)
+            this.collapse();
+        else
+            this.expand();
+    }
+    
+    this.select = function()
+    {
+        if (this.owner.selection != this)
+        {
+            if (this.owner.selection)
+                this.owner.selection.setHighlight(hlNone);
+                
+            this.owner.selection = this;
+            this.setHighlight(hlSelected);
+        }
+    }
+    
+    this.setHighlight = function(mode)
+    {
+        if (mode == hlNone)
+        {
+            this.textSpan.style.backgroundColor = "";
+            this.textSpan.style.color = "";
+            this.textSpan.style.border = "";
+        }
+        else if (mode == hlGrey)
+        {
+            this.textSpan.style.backgroundColor = "#aaaaaa";
+            this.textSpan.style.color = "";
+            this.textSpan.style.border = "";
+        }
+        else if (mode == hlSelected)
+        {
+            this.textSpan.style.backgroundColor = "3399cc";
+            this.textSpan.style.color = "white";
+            this.textSpan.style.border = "dotted 1px red";
+        }
+    }
+    
+    this.setOnclick = function(proc)
+    {
+        this.onclick = proc;
+    }
+    
+    this.setRef = function(url)
+    {
+        if (this.anchor)
+            this.anchor.href = url;
+    }
+    
+    this.processPMClick = function(e)
+    {
+        this.toggle();
+        
+        // prevent this line selection, stop bubbling
+        if (e)
+            e.stopPropagation(); // Mozilla way
+        if (window.event)
+            window.event.cancelBubble = true; // IE way
+    }
+    
+    this.processOnclick = function()
+    {
+        this.select();
+        if (this.onclick instanceof Function)
+            this.onclick();
+    }
+    
+    ///////////////////////////////////////////////////////////////////////////
+    if (iconSrc)
+        this.icon.src = iconSrc;
+    else
+    {
+        this.icon.width = 0;
+        this.icon.height = 0;
+    }
+    
+    this.icon.style.verticalAlign = "middle";
+    this.icon.style.position = "relative";
+    this.icon.style.top = "-1px";
+    this.icon.style.paddingRight = "2px";
+    
+    if (!hrefMode)
+    {
+        this.textSpan.appendChild( this.textElement );
+    }
+    else
+    {
+        this.anchor = document.createElement("a");
+        this.anchor.appendChild( this.textElement );
+        this.textSpan.appendChild( this.anchor );
+    }
+    
+    this.lineDiv.appendChild( this.icon );
+    this.lineDiv.appendChild( this.textSpan );
+    this.domEntry.appendChild( this.lineDiv );
+    
+    this.lineDiv.owner = this;
+    
+    if (!hrefMode)
+        this.lineDiv.onclick = new Function("this.owner.processOnclick();");
+}

File pyd/candydoc/util.js

View file
+/* This file is a part of CanDyDOC fileset.
+   File is written by Victor Nakoryakov and placed into the public domain.
+
+   This file is javascript with cross-browser utility functions. */
+
+function getLeft(elem)
+{
+    var ret = 0;
+	while (elem.offsetParent)
+	{
+		ret += elem.offsetLeft;
+		elem = elem.offsetParent;
+	}
+
+	return ret;
+}
+
+function getTop(elem)
+{
+    var ret = 0;
+	while (elem.offsetParent)
+	{
+		ret += elem.offsetTop;
+		elem = elem.offsetParent;
+	}
+
+	return ret;
+}
+
+function getWindowHeight()
+{
+    var ret = 0;
+    if (typeof(window.innerHeight) == "number")
+        ret = window.innerHeight;
+    else if (document.documentElement && document.documentElement.clientHeight)
+        ret = document.documentElement.clientHeight;
+    else if (document.body && document.body.clientHeight)
+        ret = document.body.clientHeight;
+    
+    return ret;
+}

File pyd/class_wrap.html

View file
+
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<meta content="text/javascript" http-equiv="content-script-type">
+<title>pyd.class_wrap</title>
+<link rel="stylesheet" type="text/css" href="candydoc/style.css">
+<!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="candydoc/ie56hack.css"><![endif]-->
+<script language="JavaScript" src="candydoc/util.js" type="text/javascript"></script>
+<script language="JavaScript" src="candydoc/tree.js" type="text/javascript"></script>
+<script language="JavaScript" src="candydoc/explorer.js" type="text/javascript"></script>
+</head><body>
+<div id="tabarea"></div><div id="explorerclient"></div>
+<div id="content"><script>explorer.initialize("pyd.class_wrap");</script>
+	<table class="content">
+		<tr><td id="docbody"><h1>pyd.class_wrap</h1><!-- Generated by Ddoc from ../infrastructure//pyd/class_wrap.d -->
+<br><br>
+
+<script>explorer.outline.incSymbolLevel();</script>
+<dl>
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">wrapped_class_object</span>
+<script>explorer.outline.addDecl('wrapped_class_object');</script>(T);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>The class object, a subtype of PyObject<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">template 
+<span class="currsymbol">wrapped_class_type</span>
+<script>explorer.outline.addDecl('wrapped_class_type');</script>(T)</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd><br><br>
+
+<script>explorer.outline.incSymbolLevel();</script>
+<dl>
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">PyTypeObject 
+<span class="currsymbol">wrapped_class_type</span>
+<script>explorer.outline.addDecl('wrapped_class_type');</script>;
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>The type object, an instance of PyType_Type<br><br>
+
+</dd>
+</dl>
+<script>explorer.outline.decSymbolLevel();</script>
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">template 
+<span class="currsymbol">is_wrapped</span>
+<script>explorer.outline.addDecl('is_wrapped');</script>(T)</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>A useful check for whether a given class has been wrapped. Mainly used by
+ the conversion functions (see make_object.d), but possibly useful elsewhere.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">template 
+<span class="currsymbol">wrapped_methods</span>
+<script>explorer.outline.addDecl('wrapped_methods');</script>(T)</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Various wrapped methods<br><br>
+
+
+<script>explorer.outline.incSymbolLevel();</script>
+<dl>
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">PyObject* 
+<span class="currsymbol">wrapped_new</span>
+<script>explorer.outline.addDecl('wrapped_new');</script>(PyTypeObject* <span class="funcparam">type</span>, PyObject* <span class="funcparam">args</span>, PyObject* <span class="funcparam">kwds</span>);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>The generic "_new__" method<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">void 
+<span class="currsymbol">wrapped_dealloc</span>
+<script>explorer.outline.addDecl('wrapped_dealloc');</script>(PyObject* <span class="funcparam">self</span>);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>The generic dealloc method.<br><br>
+
+</dd>
+</dl>
+<script>explorer.outline.decSymbolLevel();</script>
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">template 
+<span class="currsymbol">wrapped_get</span>
+<script>explorer.outline.addDecl('wrapped_get');</script>(T,Parts)</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd><br><br>
+
+<script>explorer.outline.incSymbolLevel();</script>
+<dl>
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">PyObject* 
+<span class="currsymbol">func</span>
+<script>explorer.outline.addDecl('func');</script>(PyObject* <span class="funcparam">self</span>, void* <span class="funcparam">closure</span>);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>A generic wrapper around a "getter" property.<br><br>
+
+</dd>
+</dl>
+<script>explorer.outline.decSymbolLevel();</script>
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">template 
+<span class="currsymbol">wrapped_set</span>
+<script>explorer.outline.addDecl('wrapped_set');</script>(T,Parts)</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd><br><br>
+
+<script>explorer.outline.incSymbolLevel();</script>
+<dl>
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">int 
+<span class="currsymbol">func</span>
+<script>explorer.outline.addDecl('func');</script>(PyObject* <span class="funcparam">self</span>, PyObject* <span class="funcparam">value</span>, void* <span class="funcparam">closure</span>);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>A generic wrapper around a "setter" property.<br><br>
+
+</dd>
+</dl>
+<script>explorer.outline.decSymbolLevel();</script>
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">DoNothing</span>
+<script>explorer.outline.addDecl('DoNothing');</script>;
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd><br><br>
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">Def</span>
+<script>explorer.outline.addDecl('Def');</script>(alias fn);
+<br>struct 
+<span class="currsymbol">Def</span>
+<script>explorer.outline.addDecl('Def');</script>(alias fn,string docstring);
+<br>struct 
+<span class="currsymbol">Def</span>
+<script>explorer.outline.addDecl('Def');</script>(alias fn,string name,string docstring);
+<br>struct 
+<span class="currsymbol">Def</span>
+<script>explorer.outline.addDecl('Def');</script>(alias fn,string name,fn_t);
+<br>struct 
+<span class="currsymbol">Def</span>
+<script>explorer.outline.addDecl('Def');</script>(alias fn,fn_t);
+<br>struct 
+<span class="currsymbol">Def</span>
+<script>explorer.outline.addDecl('Def');</script>(alias fn,fn_t,string docstring);
+<br>struct 
+<span class="currsymbol">Def</span>
+<script>explorer.outline.addDecl('Def');</script>(alias fn,string name,fn_t,string docstring);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wraps a member function of the class.
+<br><br>
+Supports default arguments, typesafe variadic arguments, and python's
+keyword arguments.
+
+<br><br>
+<b>Params:</b><br>
+<table><tr>
+<td nowrap valign="top" style="padding-right: 8px">fn</td>
+<td>The member function to wrap.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">name</td>
+<td>The name of the function as it will appear in Python.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">fn_t</td>
+<td>The type of the function. It is only useful to specify this
+       if more than one function has the same name as this one.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">docstring</td>
+<td>The function's docstring.</td></tr>
+</table><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">StaticDef</span>
+<script>explorer.outline.addDecl('StaticDef');</script>(alias fn);
+<br>struct 
+<span class="currsymbol">StaticDef</span>
+<script>explorer.outline.addDecl('StaticDef');</script>(alias fn,string docstring);
+<br>struct 
+<span class="currsymbol">StaticDef</span>
+<script>explorer.outline.addDecl('StaticDef');</script>(alias fn,string name,string docstring);
+<br>struct 
+<span class="currsymbol">StaticDef</span>
+<script>explorer.outline.addDecl('StaticDef');</script>(alias fn,string name,fn_t,string docstring);
+<br>struct 
+<span class="currsymbol">StaticDef</span>
+<script>explorer.outline.addDecl('StaticDef');</script>(alias fn,fn_t);
+<br>struct 
+<span class="currsymbol">StaticDef</span>
+<script>explorer.outline.addDecl('StaticDef');</script>(alias fn,fn_t,string docstring);
+<br>struct 
+<span class="currsymbol">StaticDef</span>
+<script>explorer.outline.addDecl('StaticDef');</script>(alias fn,string name,fn_t);
+<br>struct 
+<span class="currsymbol">StaticDef</span>
+<script>explorer.outline.addDecl('StaticDef');</script>(alias fn,string name,fn_t);
+<br>struct 
+<span class="currsymbol">StaticDef</span>
+<script>explorer.outline.addDecl('StaticDef');</script>(alias fn,string name,fn_t,string docstring);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wraps a static member function of the class. Identical to pyd.def.def
+<br><br>
+Supports default arguments, typesafe variadic arguments, and python's
+keyword arguments.
+
+<br><br>
+<b>Params:</b><br>
+<table><tr>
+<td nowrap valign="top" style="padding-right: 8px">fn</td>
+<td>The member function to wrap.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">name</td>
+<td>The name of the function as it will appear in Python.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">fn_t</td>
+<td>The type of the function. It is only useful to specify this
+       if more than one function has the same name as this one.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">docstring</td>
+<td>The function's docstring.</td></tr>
+</table><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">Property</span>
+<script>explorer.outline.addDecl('Property');</script>(alias fn);
+<br>struct 
+<span class="currsymbol">Property</span>
+<script>explorer.outline.addDecl('Property');</script>(alias fn,string docstring);
+<br>struct 
+<span class="currsymbol">Property</span>
+<script>explorer.outline.addDecl('Property');</script>(alias fn,string name,string docstring);
+<br>struct 
+<span class="currsymbol">Property</span>
+<script>explorer.outline.addDecl('Property');</script>(alias fn,string name,bool RO);
+<br>struct 
+<span class="currsymbol">Property</span>
+<script>explorer.outline.addDecl('Property');</script>(alias fn,string name,bool RO,string docstring);
+<br>struct 
+<span class="currsymbol">Property</span>
+<script>explorer.outline.addDecl('Property');</script>(alias fn,bool RO);
+<br>struct 
+<span class="currsymbol">Property</span>
+<script>explorer.outline.addDecl('Property');</script>(alias fn,bool RO,string docstring);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wraps a property of the class.
+<br><br>
+Will automatically attempt to wrap both the get and set forms of the property,
+unless RO is specified. Does not work with @property annotated functions. Does not support a "set-only" property.
+
+<br><br>
+<b>Params:</b><br>
+<table><tr>
+<td nowrap valign="top" style="padding-right: 8px">fn</td>
+<td>The property to wrap.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">name</td>
+<td>The name of the property as it will appear in Python.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">RO</td>
+<td>Whether this is a read-only property.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">docstring</td>
+<td>The function's docstring.</td></tr>
+</table><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">Repr</span>
+<script>explorer.outline.addDecl('Repr');</script>(alias _fn);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wraps a method as the class's _repr__ in Python.
+<br><br>
+<b>Params:</b><br>
+<table><tr>
+<td nowrap valign="top" style="padding-right: 8px">fn</td>
+<td>The property to wrap. Must have the signature string function().</td></tr>
+</table><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">Init</span>
+<script>explorer.outline.addDecl('Init');</script>(cps...);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wraps the constructors of the class.
+<br><br>
+This template takes a single specialization of the ctor template
+(see ctor_wrap.d), which describes a constructor that the class
+supports. The default constructor need not be
+specified, and will always be available if the class supports it.
+<br><br>
+
+Supports default arguments, typesafe variadic arguments, and python's
+keyword arguments.
+
+<br><br>
+<b>Params:</b><br>
+<table><tr>
+<td nowrap valign="top" style="padding-right: 8px">cps</td>
+<td>Parameter list of the constructor to be wrapped.</td></tr>
+</table><br>
+<font color=red>BUGS:</font><br>
+This currently does not support having multiple constructors with
+the same number of arguments.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">template 
+<span class="currsymbol">OpBinary</span>
+<script>explorer.outline.addDecl('OpBinary');</script>(string op,rhs_t = Guess) if (IsPyBinary(op) &amp;&amp; op != "in")<br>template 
+<span class="currsymbol">OpBinaryRight</span>
+<script>explorer.outline.addDecl('OpBinaryRight');</script>(string op,lhs_t = Guess) if (IsPyBinary(op))</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wrap a binary operator overload.
+<br><br>
+<b>Example:</b><br>
+<pre class="d_code"><font color=blue>class</font> Foo{
+    <font color=blue>int</font> _j;
+    <font color=blue>int</font> opBinary(string op)(<font color=blue>int</font> i) <font color=blue>if</font>(op == <font color=red>"+"</font>){
+        <font color=blue>return</font> i+_j;
+    }
+    <font color=blue>int</font> opBinaryRight(string op)(<font color=blue>int</font> i) <font color=blue>if</font>(op == <font color=red>"+"</font>){
+        <font color=blue>return</font> i+_j;
+    }
+}
+
+class_wrap!(Foo,
+    <u>OpBinary</u>!(<font color=red>"+"</font>),
+    OpBinaryRight!(<font color=red>"+"</font>));
+</pre>
+
+<br><br>
+<b>Params:</b><br>
+<table><tr>
+<td nowrap valign="top" style="padding-right: 8px">op</td>
+<td>Operator to wrap</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">rhs_t</td>
+<td>(optional) Type of opBinary's parameter for disambiguation if
+    there are multiple overloads.</td></tr>
+</table><br>
+<font color=red>BUGS:</font><br>
+Issue 8602 prevents disambiguation for case X opBinary(string op, T)(T t);<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">OpUnary</span>
+<script>explorer.outline.addDecl('OpUnary');</script>(string _op) if (IsPyUnary(_op));
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wrap a unary operator overload.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">OpAssign</span>
+<script>explorer.outline.addDecl('OpAssign');</script>(string _op,rhs_t = Guess) if (IsPyAsg(_op));
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wrap an operator assignment overload.
+<br><br>
+<b>Example:</b><br>
+<pre class="d_code"><font color=blue>class</font> Foo{
+    <font color=blue>int</font> _j;
+    <font color=blue>void</font> opOpAssign(string op)(<font color=blue>int</font> i) <font color=blue>if</font>(op == <font color=red>"+"</font>){
+        _j = i;
+    }
+}
+
+class_wrap!(Foo,
+    <u>OpAssign</u>!(<font color=red>"+"</font>));
+</pre>
+<br><br>
+<b>Params:</b><br>
+<table><tr>
+<td nowrap valign="top" style="padding-right: 8px">op</td>
+<td>Base operator to wrap</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">rhs_t</td>
+<td>(optional) Type of opOpAssign's parameter for disambiguation if
+    there are multiple overloads.</td></tr>
+</table><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">OpCompare</span>
+<script>explorer.outline.addDecl('OpCompare');</script>(_rhs_t = Guess);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wrap opCmp.
+<br><br>
+<b>Params:</b><br>
+<table><tr>
+<td nowrap valign="top" style="padding-right: 8px">rhs_t</td>
+<td>(optional) Type of opCmp's parameter for disambiguation if there
+    are multiple overloads (for classes it will always be Object).</td></tr>
+</table><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">OpIndex</span>
+<script>explorer.outline.addDecl('OpIndex');</script>(index_t...);
+<br>struct 
+<span class="currsymbol">OpIndexAssign</span>
+<script>explorer.outline.addDecl('OpIndexAssign');</script>(index_t...);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wrap opIndex, opIndexAssign.
+<br><br>
+<b>Params:</b><br>
+<table><tr>
+<td nowrap valign="top" style="padding-right: 8px">index_t</td>
+<td>(optional) Types of opIndex's parameters for disambiguation if
+    there are multiple overloads.</td></tr>
+</table><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">OpSlice</span>
+<script>explorer.outline.addDecl('OpSlice');</script>();
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wrap opSlice.
+<br><br>
+Requires signature
+<pre class="d_code">Foo.opSlice(Py_ssize_t, Py_ssize_t);
+</pre>
+ This is a limitation of the C/Python API.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">OpSliceAssign</span>
+<script>explorer.outline.addDecl('OpSliceAssign');</script>(rhs_t = Guess);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wrap opSliceAssign.
+<br><br>
+Requires signature
+<pre class="d_code">Foo.opSliceAssign(Value,Py_ssize_t, Py_ssize_t);
+</pre>
+ This is a limitation of the C/Python API.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">struct 
+<span class="currsymbol">OpCall</span>
+<script>explorer.outline.addDecl('OpCall');</script>(Args_t...);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>wrap opCall. The parameter types of opCall must be specified.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">template 
+<span class="currsymbol">Len</span>
+<script>explorer.outline.addDecl('Len');</script>()<br>template 
+<span class="currsymbol">Len</span>
+<script>explorer.outline.addDecl('Len');</script>(alias fn)</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wraps Foo.length or another function as pythons _len__ function. Do not
+  pass a @property annotated function.
+<br><br>
+Requires signature
+<pre class="d_code">Py_ssize_t length();
+</pre>
+  This is a limitation of the C/Python API.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">void 
+<span class="currsymbol">wrap_class</span>
+<script>explorer.outline.addDecl('wrap_class');</script>(T, Params...)(string <span class="funcparam">docstring</span> = "", string <span class="funcparam">modulename</span> = "");
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wrap a class.
+<br><br>
+<b>Params:</b><br>
+<table><tr>
+<td nowrap valign="top" style="padding-right: 8px">T</td>
+<td>The class being wrapped.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">Params</td>
+<td>Definitions of members of T to be wrapped.</td></tr>
+</table><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">PyObject* 
+<span class="currsymbol">WrapPyObject_FromTypeAndObject</span>
+<script>explorer.outline.addDecl('WrapPyObject_FromTypeAndObject');</script>(T)(PyTypeObject* <span class="funcparam">type</span>, T <span class="funcparam">t</span>);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Returns a new Python object of a wrapped type.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">T 
+<span class="currsymbol">WrapPyObject_AsObject</span>
+<script>explorer.outline.addDecl('WrapPyObject_AsObject');</script>(T)(PyObject* <span class="funcparam">_self</span>);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Returns the object contained in a Python wrapped type.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">void 
+<span class="currsymbol">WrapPyObject_SetObj</span>
+<script>explorer.outline.addDecl('WrapPyObject_SetObj');</script>(T)(PyObject* <span class="funcparam">_self</span>, T <span class="funcparam">t</span>);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Sets the contained object in self to t.<br><br>
+
+</dd>
+</dl>
+<script>explorer.outline.decSymbolLevel();</script>
+</td></tr>
+		<tr><td id="docfooter">
+			Page was generated with
+			<img src="candydoc/img/candydoc.gif" style="vertical-align:middle; position:relative; top:-1px">
+			on Thu Aug 30 19:08:15 2012
+
+		</td></tr>
+	</table>
+</div>
+<script>
+	explorer.packageExplorer.addModule("pyd.class_wrap");
+	explorer.packageExplorer.addModule("pyd.def");
+	explorer.packageExplorer.addModule("pyd.embedded");
+	explorer.packageExplorer.addModule("pyd.exception");
+	explorer.packageExplorer.addModule("pyd.func_wrap");
+	explorer.packageExplorer.addModule("pyd.make_object");
+	explorer.packageExplorer.addModule("pyd.pyd");
+	explorer.packageExplorer.addModule("pyd.pydobject");
+	explorer.packageExplorer.addModule("pyd.struct_wrap");
+	explorer.packageExplorer.addModule("meta.Nameof");
+	explorer.packageExplorer.addModule("python");</script>
+</body></html>

File pyd/def.html

View file
+
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<meta content="text/javascript" http-equiv="content-script-type">
+<title>pyd.def</title>
+<link rel="stylesheet" type="text/css" href="candydoc/style.css">
+<!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="candydoc/ie56hack.css"><![endif]-->
+<script language="JavaScript" src="candydoc/util.js" type="text/javascript"></script>
+<script language="JavaScript" src="candydoc/tree.js" type="text/javascript"></script>
+<script language="JavaScript" src="candydoc/explorer.js" type="text/javascript"></script>
+</head><body>
+<div id="tabarea"></div><div id="explorerclient"></div>
+<div id="content"><script>explorer.initialize("pyd.def");</script>
+	<table class="content">
+		<tr><td id="docbody"><h1>pyd.def</h1><!-- Generated by Ddoc from ../infrastructure//pyd/def.d -->
+<br><br>
+
+<script>explorer.outline.incSymbolLevel();</script>
+<dl>
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">void 
+<span class="currsymbol">def</span>
+<script>explorer.outline.addDecl('def');</script>(alias fn, string name = __traits(identifier,fn), fn_t = typeof(&amp;fn))(string <span class="funcparam">docstring</span> = "");
+<br>void 
+<span class="currsymbol">def</span>
+<script>explorer.outline.addDecl('def');</script>(string modulename, alias _fn, fn_t = typeof(&amp;_fn), string name = __traits(identifier,_fn))(string <span class="funcparam">docstring</span>);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Wraps a D function, making it callable from Python.
+<br><br>
+Supports default arguments, typesafe variadic arguments, and python's
+keyword arguments.
+
+<br><br>
+<b>Params:</b><br>
+<table><tr>
+<td nowrap valign="top" style="padding-right: 8px">modulename</td>
+<td>The name of the python module in which the wrapped function
+            resides.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">fn</td>
+<td>The function to wrap.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">name</td>
+<td>The name of the function as it will appear in Python.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">fn_t</td>
+<td>The function type of the function to wrap. This must be
+            specified if more than one function shares the same name,
+            otherwise the first one defined lexically will be used.</td></tr>
+<tr>
+<td nowrap valign="top" style="padding-right: 8px">docstring</td>
+<td>The function's docstring. Note that this is a regular function
+            argument!</td></tr>
+</table><br>
+<b>Examples:</b><br>
+<pre class="d_code">import pyd.pyd;
+string foo(int i) {
+    if (i &gt; 10) {
+        return "It's greater than 10!";
+    } else {
+        return "It's less than 10!";
+    }
+}
+extern (C)
+export void inittestdll() {
+    def!("foo", foo);
+    module_init("testdll");
+}</pre>
+ And in Python:
+<pre class="d_code">&gt;&gt;&gt; import testdll
+&gt;&gt;&gt; print testdll.foo(20)
+It's greater than 10!</pre><br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">PyObject* 
+<span class="currsymbol">module_init</span>
+<script>explorer.outline.addDecl('module_init');</script>(string <span class="funcparam">docstring</span> = "");
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Module initialization function. Should be called after the last call to def.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">PyObject* 
+<span class="currsymbol">add_module</span>
+<script>explorer.outline.addDecl('add_module');</script>(string <span class="funcparam">name</span>, string <span class="funcparam">docstring</span> = "");
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Module initialization function. Should be called after the last call to def.<br><br>
+
+</dd>
+</dl>
+<script>explorer.outline.decSymbolLevel();</script>
+</td></tr>
+		<tr><td id="docfooter">
+			Page was generated with
+			<img src="candydoc/img/candydoc.gif" style="vertical-align:middle; position:relative; top:-1px">
+			on Thu Aug 30 19:08:15 2012
+
+		</td></tr>
+	</table>
+</div>
+<script>
+	explorer.packageExplorer.addModule("pyd.class_wrap");
+	explorer.packageExplorer.addModule("pyd.def");
+	explorer.packageExplorer.addModule("pyd.embedded");
+	explorer.packageExplorer.addModule("pyd.exception");
+	explorer.packageExplorer.addModule("pyd.func_wrap");
+	explorer.packageExplorer.addModule("pyd.make_object");
+	explorer.packageExplorer.addModule("pyd.pyd");
+	explorer.packageExplorer.addModule("pyd.pydobject");
+	explorer.packageExplorer.addModule("pyd.struct_wrap");
+	explorer.packageExplorer.addModule("meta.Nameof");
+	explorer.packageExplorer.addModule("python");</script>
+</body></html>

File pyd/embedded.html

View file
+
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<meta content="text/javascript" http-equiv="content-script-type">
+<title>pyd.embedded</title>
+<link rel="stylesheet" type="text/css" href="candydoc/style.css">
+<!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="candydoc/ie56hack.css"><![endif]-->
+<script language="JavaScript" src="candydoc/util.js" type="text/javascript"></script>
+<script language="JavaScript" src="candydoc/tree.js" type="text/javascript"></script>
+<script language="JavaScript" src="candydoc/explorer.js" type="text/javascript"></script>
+</head><body>
+<div id="tabarea"></div><div id="explorerclient"></div>
+<div id="content"><script>explorer.initialize("pyd.embedded");</script>
+	<table class="content">
+		<tr><td id="docbody"><h1>pyd.embedded</h1><!-- Generated by Ddoc from ../infrastructure//pyd/embedded.d -->
+<br><br>
+
+<script>explorer.outline.incSymbolLevel();</script>
+<dl>
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">PydObject 
+<span class="currsymbol">py_import</span>
+<script>explorer.outline.addDecl('py_import');</script>(string <span class="funcparam">name</span>);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Fetch a python module object.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">R 
+<span class="currsymbol">PyDef</span>
+<script>explorer.outline.addDecl('PyDef');</script>(string python, string modl, R, Args...)(Args <span class="funcparam">args</span>, string <span class="funcparam">file</span> = __FILE__, size_t <span class="funcparam">line</span> = __LINE__);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Take a python function and wrap it so we can call it from D!<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">T 
+<span class="currsymbol">PyEval</span>
+<script>explorer.outline.addDecl('PyEval');</script>(T = PydObject)(string <span class="funcparam">python</span>, string <span class="funcparam">modl</span>, string <span class="funcparam">file</span> = __FILE__, size_t <span class="funcparam">line</span> = __LINE__);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Evaluate a python expression once and return the result.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">void 
+<span class="currsymbol">PyStmts</span>
+<script>explorer.outline.addDecl('PyStmts');</script>(string <span class="funcparam">python</span>, string <span class="funcparam">modl</span>, string <span class="funcparam">file</span> = __FILE__, size_t <span class="funcparam">line</span> = __LINE__);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>Evaluate one or more <span class="funcparam">python</span> statements once.<br><br>
+
+</dd>
+</dl>
+<script>explorer.outline.decSymbolLevel();</script>
+</td></tr>
+		<tr><td id="docfooter">
+			Page was generated with
+			<img src="candydoc/img/candydoc.gif" style="vertical-align:middle; position:relative; top:-1px">
+			on Thu Aug 30 19:08:15 2012
+
+		</td></tr>
+	</table>
+</div>
+<script>
+	explorer.packageExplorer.addModule("pyd.class_wrap");
+	explorer.packageExplorer.addModule("pyd.def");
+	explorer.packageExplorer.addModule("pyd.embedded");
+	explorer.packageExplorer.addModule("pyd.exception");
+	explorer.packageExplorer.addModule("pyd.func_wrap");
+	explorer.packageExplorer.addModule("pyd.make_object");
+	explorer.packageExplorer.addModule("pyd.pyd");
+	explorer.packageExplorer.addModule("pyd.pydobject");
+	explorer.packageExplorer.addModule("pyd.struct_wrap");
+	explorer.packageExplorer.addModule("meta.Nameof");
+	explorer.packageExplorer.addModule("python");</script>
+</body></html>

File pyd/exception.html

View file
+
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<meta content="text/javascript" http-equiv="content-script-type">
+<title>pyd.exception</title>
+<link rel="stylesheet" type="text/css" href="candydoc/style.css">
+<!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="candydoc/ie56hack.css"><![endif]-->
+<script language="JavaScript" src="candydoc/util.js" type="text/javascript"></script>
+<script language="JavaScript" src="candydoc/tree.js" type="text/javascript"></script>
+<script language="JavaScript" src="candydoc/explorer.js" type="text/javascript"></script>
+</head><body>
+<div id="tabarea"></div><div id="explorerclient"></div>
+<div id="content"><script>explorer.initialize("pyd.exception");</script>
+	<table class="content">
+		<tr><td id="docbody"><h1>pyd.exception</h1><!-- Generated by Ddoc from ../infrastructure//pyd/exception.d -->
+<br><br>
+
+<script>explorer.outline.incSymbolLevel();</script>
+<dl>
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">void 
+<span class="currsymbol">handle_exception</span>
+<script>explorer.outline.addDecl('handle_exception');</script>(string <span class="funcparam">file</span> = __FILE__, size_t <span class="funcparam">line</span> = __LINE__);
+</span></dt>
+<script>explorer.outline.writeEnabled = false;</script>
+<dd>This function first checks if a Python exception is set, and then (if one
+ is) pulls it out, stuffs it in a PythonException, and throws that exception.
+<br><br>
+If this exception is never caught, it will be handled by exception_catcher
+ (below) and passed right back into Python as though nothing happened.<br><br>
+
+</dd>
+
+<script>explorer.outline.writeEnabled = true;</script>
+<dt><span class="decl">T 
+<span class="currsymbol">exception_catcher</span>
+<script>explorer.outline.addDecl('exception_catcher');</script>(T)(T delegate() <span class="funcparam">dg</span>);
+</span></dt>