Changeset 114

Show
Ignore:
Timestamp:
07/06/07 00:38:29 (1 year ago)
Author:
KirkMcDonald
Message:

Added advanced type conversion. Updated site CSS.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/examples/testdll/test.py

    r100 r114  
    7777print 
    7878 
     79print "Testing custom conversion function" 
     80print testdll.conv1() 
     81testdll.conv2(20) 
     82 
     83print 
     84 
    7985print '--------' 
    8086print 'SUCCESS' 
  • trunk/examples/testdll/testdll.d

    r110 r114  
    9191} 
    9292 
     93 
     94struct A { 
     95    int i; 
     96} 
     97 
    9398Foo spam(Foo f) { 
    9499    f.foo(); 
     
    101106} 
    102107 
     108A conv1() { 
     109    A a; 
     110    a.i = 12; 
     111    return a; 
     112} 
     113void conv2(A a) { 
     114    writefln(a.i); 
     115} 
     116 
    103117extern(C) void PydMain() { 
    104118    pragma(msg, "testdll.PydMain"); 
     119    d_to_python(delegate int(A a) { return a.i; }); 
     120    python_to_d(delegate A(int i) { A a; a.i = i; return a; }); 
     121 
    105122    def!(foo); 
    106123    // Python does not support function overloading. This allows us to wrap 
     
    116133    def!(dg_test); 
    117134    def!(throws); 
     135    def!(conv1); 
     136    def!(conv2); 
    118137 
    119138    module_init(); 
  • trunk/html_doc/basics.html

    r102 r114  
    1010<div id="nav"> 
    1111<p><big>Contents</big></p> 
    12 <a class="nav" href="index.html">Main</a><br /> 
    13 <a class="nav" href="install.html">Installation</a><br /> 
    14 <a class="navcur" href="basics.html">The basics</a><br /> 
    15 <a class="nav" href="celerid.html">CeleriD</a><br /> 
    16 <a class="nav" href="conversion.html">Type conversion</a><br /> 
    17 <a class="nav" href="func_wrapping.html">Function wrapping</a><br /> 
    18 <a class="nav" href="class_wrapping.html">Class wrapping</a><br /> 
    19 <a class="nav" href="inherit.html">Inheritance</a><br /> 
    20 <a class="nav" href="struct_wrapping.html">Struct wrapping</a><br /> 
    21 <a class="nav" href="except_wrapping.html">Exception wrapping</a><br /> 
    22 <a class="nav" href="pydobject.html">PydObject</a><br /> 
    23 <a class="nav" href="vsboost.html">vs. Boost.Python</a><br /> 
    24 <a class="nav" href="credits.html">Credits</a> 
     12<ul> 
     13<li><a class="nav" href="index.html">Main</a></li> 
     14<li><a class="nav" href="install.html">Installation</a></li> 
     15<li><a class="navcur" href="basics.html">The basics</a></li> 
     16<li><a class="nav" href="celerid.html">CeleriD</a></li> 
     17<li><a class="nav" href="conversion.html">Type conversion</a></li> 
     18<li><a class="nav" href="adv_conversion.html">Advanced type conversion</a></li> 
     19<li><a class="nav" href="func_wrapping.html">Function wrapping</a></li> 
     20<li><a class="nav" href="class_wrapping.html">Class wrapping</a></li> 
     21<li><a class="nav" href="inherit.html">Inheritance</a></li> 
     22<li><a class="nav" href="struct_wrapping.html">Struct wrapping</a></li> 
     23<li><a class="nav" href="except_wrapping.html">Exception wrapping</a></li> 
     24<li><a class="nav" href="pydobject.html">PydObject</a></li> 
     25<li><a class="nav" href="vsboost.html">vs. Boost.Python</a></li> 
     26<li><a class="nav" href="credits.html">Credits</a></li> 
     27</ul> 
    2528</div> 
    2629 
  • trunk/html_doc/celerid.html

    r102 r114  
    1010<div id="nav"> 
    1111<p><big>Contents</big></p> 
    12 <a class="nav" href="index.html">Main</a><br /> 
    13 <a class="nav" href="install.html">Installation</a><br /> 
    14 <a class="nav" href="basics.html">The basics</a><br /> 
    15 <a class="navcur" href="celerid.html">CeleriD</a><br /> 
    16 <a class="nav" href="conversion.html">Type conversion</a><br /> 
    17 <a class="nav" href="func_wrapping.html">Function wrapping</a><br /> 
    18 <a class="nav" href="class_wrapping.html">Class wrapping</a><br /> 
    19 <a class="nav" href="inherit.html">Inheritance</a><br /> 
    20 <a class="nav" href="struct_wrapping.html">Struct wrapping</a><br /> 
    21 <a class="nav" href="except_wrapping.html">Exception wrapping</a><br /> 
    22 <a class="nav" href="pydobject.html">PydObject</a><br /> 
    23 <a class="nav" href="vsboost.html">vs. Boost.Python</a><br /> 
    24 <a class="nav" href="credits.html">Credits</a> 
     12<ul> 
     13<li><a class="nav" href="index.html">Main</a></li> 
     14<li><a class="nav" href="install.html">Installation</a></li> 
     15<li><a class="nav" href="basics.html">The basics</a></li> 
     16<li><a class="navcur" href="celerid.html">CeleriD</a></li> 
     17<li><a class="nav" href="conversion.html">Type conversion</a></li> 
     18<li><a class="nav" href="adv_conversion.html">Advanced type conversion</a></li> 
     19<li><a class="nav" href="func_wrapping.html">Function wrapping</a></li> 
     20<li><a class="nav" href="class_wrapping.html">Class wrapping</a></li> 
     21<li><a class="nav" href="inherit.html">Inheritance</a></li> 
     22<li><a class="nav" href="struct_wrapping.html">Struct wrapping</a></li> 
     23<li><a class="nav" href="except_wrapping.html">Exception wrapping</a></li> 
     24<li><a class="nav" href="pydobject.html">PydObject</a></li> 
     25<li><a class="nav" href="vsboost.html">vs. Boost.Python</a></li> 
     26<li><a class="nav" href="credits.html">Credits</a></li> 
     27</ul> 
    2528</div> 
    2629 
  • trunk/html_doc/class_wrapping.html

    r113 r114  
    1010<div id="nav"> 
    1111<p><big>Contents</big></p> 
    12 <a class="nav" href="index.html">Main</a><br /> 
    13 <a class="nav" href="install.html">Installation</a><br /> 
    14 <a class="nav" href="basics.html">The basics</a><br /> 
    15 <a class="nav" href="celerid.html">CeleriD</a><br /> 
    16 <a class="nav" href="conversion.html">Type conversion</a><br /> 
    17 <a class="nav" href="func_wrapping.html">Function wrapping</a><br /> 
    18 <a class="navcur" href="class_wrapping.html">Class wrapping</a><br /> 
    19 <a class="nav" href="inherit.html">Inheritance</a><br /> 
    20 <a class="nav" href="struct_wrapping.html">Struct wrapping</a><br /> 
    21 <a class="nav" href="except_wrapping.html">Exception wrapping</a><br /> 
    22 <a class="nav" href="pydobject.html">PydObject</a><br /> 
    23 <a class="nav" href="vsboost.html">vs. Boost.Python</a><br /> 
    24 <a class="nav" href="credits.html">Credits</a> 
     12<ul> 
     13<li><a class="nav" href="index.html">Main</a></li> 
     14<li><a class="nav" href="install.html">Installation</a></li> 
     15<li><a class="nav" href="basics.html">The basics</a></li> 
     16<li><a class="nav" href="celerid.html">CeleriD</a></li> 
     17<li><a class="nav" href="conversion.html">Type conversion</a></li> 
     18<li><a class="nav" href="adv_conversion.html">Advanced type conversion</a></li> 
     19<li><a class="nav" href="func_wrapping.html">Function wrapping</a></li> 
     20<li><a class="navcur" href="class_wrapping.html">Class wrapping</a></li> 
     21<li><a class="nav" href="inherit.html">Inheritance</a></li> 
     22<li><a class="nav" href="struct_wrapping.html">Struct wrapping</a></li> 
     23<li><a class="nav" href="except_wrapping.html">Exception wrapping</a></li> 
     24<li><a class="nav" href="pydobject.html">PydObject</a></li> 
     25<li><a class="nav" href="vsboost.html">vs. Boost.Python</a></li> 
     26<li><a class="nav" href="credits.html">Credits</a></li> 
     27</ul> 
    2528</div> 
    2629 
     
    150153&gt;&gt;&gt; f.i 
    1511540 
    152 &gt;&gt;&gt; f.i = 20 
     155&gt;&gt;&gt; f.i = <span class="number">20</span> 
    153156&gt;&gt;&gt; f.foo(<span class="string">"Hello! i is "</span>) 
    154157Hello! i is 20 
    155 &gt;&gt;&gt; f = Foo(10, 10
     158&gt;&gt;&gt; f = Foo(<span class="number">10</span>, <span class="number">10</span>
    156159&gt;&gt;&gt; f.i 
    15716020 
    158 &gt;&gt;&gt; g = Foo(30
     161&gt;&gt;&gt; g = Foo(<span class="number">30</span>
    159162&gt;&gt;&gt; g.i 
    16016330 
     
    165168&gt;&gt;&gt; <span class="keyword">class</span> MyFoo(Foo): 
    166169...     <span class="keyword">def</span> bar(self): 
    167 ...         <span class="keyword">print</span> <span class="string">"Hey, i+3 is"</span>, self.i + 3 
     170...         <span class="keyword">print</span> <span class="string">"Hey, i+3 is"</span>, self.i + <span class="number">3</span> 
    168171...  
    169 &gt;&gt;&gt; h = MyFoo(3
     172&gt;&gt;&gt; h = MyFoo(<span class="number">3</span>
    170173&gt;&gt;&gt; h.bar() 
    171174Hey, i+3 is 6 
  • trunk/html_doc/conversion.html

    r113 r114  
    1010<div id="nav"> 
    1111<p><big>Contents</big></p> 
    12 <a class="nav" href="index.html">Main</a><br /> 
    13 <a class="nav" href="install.html">Installation</a><br /> 
    14 <a class="nav" href="basics.html">The basics</a><br /> 
    15 <a class="nav" href="celerid.html">CeleriD</a><br /> 
    16 <a class="navcur" href="conversion.html">Type conversion</a><br /> 
    17 <a class="nav" href="func_wrapping.html">Function wrapping</a><br /> 
    18 <a class="nav" href="class_wrapping.html">Class wrapping</a><br /> 
    19 <a class="nav" href="inherit.html">Inheritance</a><br /> 
    20 <a class="nav" href="struct_wrapping.html">Struct wrapping</a><br /> 
    21 <a class="nav" href="except_wrapping.html">Exception wrapping</a><br /> 
    22 <a class="nav" href="pydobject.html">PydObject</a><br /> 
    23 <a class="nav" href="vsboost.html">vs. Boost.Python</a><br /> 
    24 <a class="nav" href="credits.html">Credits</a> 
     12<ul> 
     13<li><a class="nav" href="index.html">Main</a></li> 
     14<li><a class="nav" href="install.html">Installation</a></li> 
     15<li><a class="nav" href="basics.html">The basics</a></li> 
     16<li><a class="nav" href="celerid.html">CeleriD</a></li> 
     17<li><a class="navcur" href="conversion.html">Type conversion</a></li> 
     18<li><a class="nav" href="adv_conversion.html">Advanced type conversion</a></li> 
     19<li><a class="nav" href="func_wrapping.html">Function wrapping</a></li> 
     20<li><a class="nav" href="class_wrapping.html">Class wrapping</a></li> 
     21<li><a class="nav" href="inherit.html">Inheritance</a></li> 
     22<li><a class="nav" href="struct_wrapping.html">Struct wrapping</a></li> 
     23<li><a class="nav" href="except_wrapping.html">Exception wrapping</a></li> 
     24<li><a class="nav" href="pydobject.html">PydObject</a></li> 
     25<li><a class="nav" href="vsboost.html">vs. Boost.Python</a></li> 
     26<li><a class="nav" href="credits.html">Credits</a></li> 
     27</ul> 
    2528</div> 
    2629 
  • trunk/html_doc/credits.html

    r86 r114  
    1010<div id="nav"> 
    1111<p><big>Contents</big></p> 
    12 <a class="nav" href="index.html">Main</a><br /> 
    13 <a class="nav" href="install.html">Installation</a><br /> 
    14 <a class="nav" href="basics.html">The basics</a><br /> 
    15 <a class="nav" href="celerid.html">CeleriD</a><br /> 
    16 <a class="nav" href="conversion.html">Type conversion</a><br /> 
    17 <a class="nav" href="func_wrapping.html">Function wrapping</a><br /> 
    18 <a class="nav" href="class_wrapping.html">Class wrapping</a><br /> 
    19 <a class="nav" href="inherit.html">Inheritance</a><br /> 
    20 <a class="nav" href="struct_wrapping.html">Struct wrapping</a><br /> 
    21 <a class="nav" href="except_wrapping.html">Exception wrapping</a><br /> 
    22 <a class="nav" href="pydobject.html">PydObject</a><br /> 
    23 <a class="nav" href="vsboost.html">vs. Boost.Python</a><br /> 
    24 <a class="navcur" href="credits.html">Credits</a> 
     12<ul> 
     13<li><a class="nav" href="index.html">Main</a></li> 
     14<li><a class="nav" href="install.html">Installation</a></li> 
     15<li><a class="nav" href="basics.html">The basics</a></li> 
     16<li><a class="nav" href="celerid.html">CeleriD</a></li> 
     17<li><a class="nav" href="conversion.html">Type conversion</a></li> 
     18<li><a class="nav" href="adv_conversion.html">Advanced type conversion</a></li> 
     19<li><a class="nav" href="func_wrapping.html">Function wrapping</a></li> 
     20<li><a class="nav" href="class_wrapping.html">Class wrapping</a></li> 
     21<li><a class="nav" href="inherit.html">Inheritance</a></li> 
     22<li><a class="nav" href="struct_wrapping.html">Struct wrapping</a></li> 
     23<li><a class="nav" href="except_wrapping.html">Exception wrapping</a></li> 
     24<li><a class="nav" href="pydobject.html">PydObject</a></li> 
     25<li><a class="nav" href="vsboost.html">vs. Boost.Python</a></li> 
     26<li><a class="navcur" href="credits.html">Credits</a></li> 
     27</ul> 
    2528</div> 
    2629 
  • trunk/html_doc/except_wrapping.html

    r86 r114  
    1010<div id="nav"> 
    1111<p><big>Contents</big></p> 
    12 <a class="nav" href="index.html">Main</a><br /> 
    13 <a class="nav" href="install.html">Installation</a><br /> 
    14 <a class="nav" href="basics.html">The basics</a><br /> 
    15 <a class="nav" href="celerid.html">CeleriD</a><br /> 
    16 <a class="nav" href="conversion.html">Type conversion</a><br /> 
    17 <a class="nav" href="func_wrapping.html">Function wrapping</a><br /> 
    18 <a class="nav" href="class_wrapping.html">Class wrapping</a><br /> 
    19 <a class="nav" href="inherit.html">Inheritance</a><br /> 
    20 <a class="nav" href="struct_wrapping.html">Struct wrapping</a><br /> 
    21 <a class="navcur" href="except_wrapping.html">Exception wrapping</a><br /> 
    22 <a class="nav" href="pydobject.html">PydObject</a><br /> 
    23 <a class="nav" href="vsboost.html">vs. Boost.Python</a><br /> 
    24 <a class="nav" href="credits.html">Credits</a> 
     12<ul> 
     13<li><a class="nav" href="index.html">Main</a></li> 
     14<li><a class="nav" href="install.html">Installation</a></li> 
     15<li><a class="nav" href="basics.html">The basics</a></li> 
     16<li><a class="nav" href="celerid.html">CeleriD</a></li> 
     17<li><a class="nav" href="conversion.html">Type conversion</a></li> 
     18<li><a class="nav" href="adv_conversion.html">Advanced type conversion</a></li> 
     19<li><a class="nav" href="func_wrapping.html">Function wrapping</a></li> 
     20<li><a class="nav" href="class_wrapping.html">Class wrapping</a></li> 
     21<li><a class="nav" href="inherit.html">Inheritance</a></li> 
     22<li><a class="nav" href="struct_wrapping.html">Struct wrapping</a></li> 
     23<li><a class="navcur" href="except_wrapping.html">Exception wrapping</a></li> 
     24<li><a class="nav" href="pydobject.html">PydObject</a></li> 
     25<li><a class="nav" href="vsboost.html">vs. Boost.Python</a></li> 
     26<li><a class="nav" href="credits.html">Credits</a></li> 
     27</ul> 
    2528</div> 
    2629 
  • trunk/html_doc/func_wrapping.html

    r86 r114  
    1010<div id="nav"> 
    1111<p><big>Contents</big></p> 
    12 <a class="nav" href="index.html">Main</a><br /> 
    13 <a class="nav" href="install.html">Installation</a><br /> 
    14 <a class="nav" href="basics.html">The basics</a><br /> 
    15 <a class="nav" href="celerid.html">CeleriD</a><br /> 
    16 <a class="nav" href="conversion.html">Type conversion</a><br /> 
    17 <a class="navcur" href="func_wrapping.html">Function wrapping</a><br /> 
    18 <a class="nav" href="class_wrapping.html">Class wrapping</a><br /> 
    19 <a class="nav" href="inherit.html">Inheritance</a><br /> 
    20 <a class="nav" href="struct_wrapping.html">Struct wrapping</a><br /> 
    21 <a class="nav" href="except_wrapping.html">Exception wrapping</a><br /> 
    22 <a class="nav" href="pydobject.html">PydObject</a><br /> 
    23 <a class="nav" href="vsboost.html">vs. Boost.Python</a><br /> 
    24 <a class="nav" href="credits.html">Credits</a> 
     12<ul> 
     13<li><a class="nav" href="index.html">Main</a></li> 
     14<li><a class="nav" href="install.html">Installation</a></li> 
     15<li><a class="nav" href="basics.html">The basics</a></li> 
     16<li><a class="nav" href="celerid.html">CeleriD</a></li> 
     17<li><a class="nav" href="conversion.html">Type conversion</a></li> 
     18<li><a class="nav" href="adv_conversion.html">Advanced type conversion</a></li> 
     19<li><a class="navcur" href="func_wrapping.html">Function wrapping</a></li> 
     20<li><a class="nav" href="class_wrapping.html">Class wrapping</a></li> 
     21<li><a class="nav" href="inherit.html">Inheritance</a></li> 
     22<li><a class="nav" href="struct_wrapping.html">Struct wrapping</a></li> 
     23<li><a class="nav" href="except_wrapping.html">Exception wrapping</a></li> 
     24<li><a class="nav" href="pydobject.html">PydObject</a></li> 
     25<li><a class="nav" href="vsboost.html">vs. Boost.Python</a></li> 
     26<li><a class="nav" href="credits.html">Credits</a></li> 
     27</ul> 
    2528</div> 
    2629 
  • trunk/html_doc/index.html

    r113 r114  
    1010<div id="nav"> 
    1111<p><big>Contents</big></p> 
    12 <a class="navcur" href="index.html">Main</a><br /> 
    13 <a class="nav" href="install.html">Installation</a><br /> 
    14 <a class="nav" href="basics.html">The basics</a><br /> 
    15 <a class="nav" href="celerid.html">CeleriD</a><br /> 
    16 <a class="nav" href="conversion.html">Type conversion</a><br /> 
    17 <a class="nav" href="func_wrapping.html">Function wrapping</a><br /> 
    18 <a class="nav" href="class_wrapping.html">Class wrapping</a><br /> 
    19 <a class="nav" href="inherit.html">Inheritance</a><br /> 
    20 <a class="nav" href="struct_wrapping.html">Struct wrapping</a><br /> 
    21 <a class="nav" href="except_wrapping.html">Exception wrapping</a><br /> 
    22 <a class="nav" href="pydobject.html">PydObject</a><br /> 
    23 <a class="nav" href="vsboost.html">vs. Boost.Python</a><br /> 
    24 <a class="nav" href="credits.html">Credits</a> 
     12<ul> 
     13<li><a class="navcur" href="index.html">Main</a></li> 
     14<li><a class="nav" href="install.html">Installation</a></li> 
     15<li><a class="nav" href="basics.html">The basics</a></li> 
     16<li><a class="nav" href="celerid.html">CeleriD</a></li> 
     17<li><a class="nav" href="conversion.html">Type conversion</a></li> 
     18<li><a class="nav" href="adv_conversion.html">Advanced type conversion</a></li> 
     19<li><a class="nav" href="func_wrapping.html">Function wrapping</a></li> 
     20<li><a class="nav" href="class_wrapping.html">Class wrapping</a></li> 
     21<li><a class="nav" href="inherit.html">Inheritance</a></li> 
     22<li><a class="nav" href="struct_wrapping.html">Struct wrapping</a></li> 
     23<li><a class="nav" href="except_wrapping.html">Exception wrapping</a></li> 
     24<li><a class="nav" href="pydobject.html">PydObject</a></li> 
     25<li><a class="nav" href="vsboost.html">vs. Boost.Python</a></li> 
     26<li><a class="nav" href="credits.html">Credits</a></li> 
     27</ul> 
    2528</div> 
    2629 
  • trunk/html_doc/inherit.html

    r102 r114  
    1010<div id="nav"> 
    1111<p><big>Contents</big></p> 
    12 <a class="nav" href="index.html">Main</a><br /> 
    13 <a class="nav" href="install.html">Installation</a><br /> 
    14 <a class="nav" href="basics.html">The basics</a><br /> 
    15 <a class="nav" href="celerid.html">CeleriD</a><br /> 
    16 <a class="nav" href="conversion.html">Type conversion</a><br /> 
    17 <a class="nav" href="func_wrapping.html">Function wrapping</a><br /> 
    18 <a class="nav" href="class_wrapping.html">Class wrapping</a><br /> 
    19 <a class="navcur" href="inherit.html">Inheritance</a><br /> 
    20 <a class="nav" href="struct_wrapping.html">Struct wrapping</a><br /> 
    21 <a class="nav" href="except_wrapping.html">Exception wrapping</a><br /> 
    22 <a class="nav" href="pydobject.html">PydObject</a><br /> 
    23 <a class="nav" href="vsboost.html">vs. Boost.Python</a><br /> 
    24 <a class="nav" href="credits.html">Credits</a> 
     12<ul> 
     13<li><a class="nav" href="index.html">Main</a></li> 
     14<li><a class="nav" href="install.html">Installation</a></li> 
     15<li><a class="nav" href="basics.html">The basics</a></li> 
     16<li><a class="nav" href="celerid.html">CeleriD</a></li> 
     17<li><a class="nav" href="conversion.html">Type conversion</a></li> 
     18<li><a class="nav" href="adv_conversion.html">Advanced type conversion</a></li> 
     19<li><a class="nav" href="func_wrapping.html">Function wrapping</a></li> 
     20<li><a class="nav" href="class_wrapping.html">Class wrapping</a></li> 
     21<li><a class="navcur" href="inherit.html">Inheritance</a></li> 
     22<li><a class="nav" href="struct_wrapping.html">Struct wrapping</a></li> 
     23<li><a class="nav" href="except_wrapping.html">Exception wrapping</a></li> 
     24<li><a class="nav" href="pydobject.html">PydObject</a></li> 
     25<li><a class="nav" href="vsboost.html">vs. Boost.Python</a></li> 
     26<li><a class="nav" href="credits.html">Credits</a></li> 
     27</ul> 
    2528</div> 
    2629 
  • trunk/html_doc/install.html

    r113 r114  
    1010<div id="nav"> 
    1111<p><big>Contents</big></p> 
    12 <a class="nav" href="index.html">Main</a><br /> 
    13 <a class="navcur" href="install.html">Installation</a><br /> 
    14 <a class="nav" href="basics.html">The basics</a><br /> 
    15 <a class="nav" href="celerid.html">CeleriD</a><br /> 
    16 <a class="nav" href="conversion.html">Type conversion</a><br /> 
    17 <a class="nav" href="func_wrapping.html">Function wrapping</a><br /> 
    18 <a class="nav" href="class_wrapping.html">Class wrapping</a><br /> 
    19 <a class="nav" href="inherit.html">Inheritance</a><br /> 
    20 <a class="nav" href="struct_wrapping.html">Struct wrapping</a><br /> 
    21 <a class="nav" href="except_wrapping.html">Exception wrapping</a><br /> 
    22 <a class="nav" href="pydobject.html">PydObject</a><br /> 
    23 <a class="nav" href="vsboost.html">vs. Boost.Python</a><br /> 
    24 <a class="nav" href="credits.html">Credits</a> 
     12<ul> 
     13<li><a class="nav" href="index.html">Main</a></li> 
     14<li><a class="navcur" href="install.html">Installation</a></li> 
     15<li><a class="nav" href="basics.html">The basics</a></li> 
     16<li><a class="nav" href="celerid.html">CeleriD</a></li> 
     17<li><a class="nav" href="conversion.html">Type conversion</a></li> 
     18<li><a class="nav" href="adv_conversion.html">Advanced type conversion</a></li> 
     19<li><a class="nav" href="func_wrapping.html">Function wrapping</a></li> 
     20<li><a class="nav" href="class_wrapping.html">Class wrapping</a></li> 
     21<li><a class="nav" href="inherit.html">Inheritance</a></li> 
     22<li><a class="nav" href="struct_wrapping.html">Struct wrapping</a></li> 
     23<li><a class="nav" href="except_wrapping.html">Exception wrapping</a></li> 
     24<li><a class="nav" href="pydobject.html">PydObject</a></li> 
     25<li><a class="nav" href="vsboost.html">vs. Boost.Python</a></li> 
     26<li><a class="nav" href="credits.html">Credits</a></li> 
     27</ul> 
    2528</div> 
    2629 
  • trunk/html_doc/pyd.css

    r108 r114  
    2727} 
    2828/* navbar links */ 
    29 a.nav
     29div#nav a
    3030    text-decoration: none; 
    3131    font-weight: bold; 
     32} 
     33div#nav ul { 
     34    list-style-type: none; 
     35    padding: 0; 
     36    margin-bottom: 0; 
     37    margin-left: 1em; 
     38    text-indent: -1em; 
     39} 
     40a.nav { 
    3241    color: #f0f0f0; 
    3342} 
    3443a.nav:visited { 
    35     text-decoration: none; 
    36     font-weight: bold; 
    3744    color: #f0f0f0; 
    3845} 
    3946a.nav:hover { 
    40     text-decoration: none; 
    4147    color: black; 
    4248    background-color: #d8d8d8; 
     
    4450/* the current navbar link */ 
    4551a.navcur { 
    46     text-decoration: none; 
    47     font-weight: bold; 
    4852    color: black; 
    4953    background-color: #d8d8d8; 
    5054} 
    5155a.navcur:visited { 
    52     text-decoration: none; 
    53     font-weight: bold; 
    5456    color: black; 
    5557} 
    5658a.navcur:hover { 
    57     text-decoration: none; 
    5859    color: #f0f0f0; 
    5960    background-color: #305880; 
  • trunk/html_doc/pydobject.html

    r86 r114  
    1010<div id="nav"> 
    1111<p><big>Contents</big></p> 
    12 <a class="nav" href="index.html">Main</a><br /> 
    13 <a class="nav" href="install.html">Installation</a><br /> 
    14 <a class="nav" href="basics.html">The basics</a><br /> 
    15 <a class="nav" href="celerid.html">CeleriD</a><br /> 
    16 <a class="nav" href="conversion.html">Type conversion</a><br /> 
    17 <a class="nav" href="func_wrapping.html">Function wrapping</a><br /> 
    18 <a class="nav" href="class_wrapping.html">Class wrapping</a><br /> 
    19 <a class="nav" href="inherit.html">Inheritance</a><br /> 
    20 <a class="nav" href="struct_wrapping.html">Struct wrapping</a><br /> 
    21 <a class="nav" href="except_wrapping.html">Exception wrapping</a><br /> 
    22 <a class="navcur" href="pydobject.html">PydObject</a><br /> 
    23 <a class="nav" href="vsboost.html">vs. Boost.Python</a><br /> 
    24 <a class="nav" href="credits.html">Credits</a> 
     12<ul> 
     13<li><a class="nav" href="index.html">Main</a></li> 
     14<li><a class="nav" href="install.html">Installation</a></li> 
     15<li><a class="nav" href="basics.html">The basics</a></li> 
     16<li><a class="nav" href="celerid.html">CeleriD</a></li> 
     17<li><a class="nav" href="conversion.html">Type conversion</a></li> 
     18<li><a class="nav" href="adv_conversion.html">Advanced type conversion</a></li> 
     19<li><a class="nav" href="func_wrapping.html">Function wrapping</a></li> 
     20<li><a class="nav" href="class_wrapping.html">Class wrapping</a></li> 
     21<li><a class="nav" href="inherit.html">Inheritance</a></li> 
     22<li><a class="nav" href="struct_wrapping.html">Struct wrapping</a></li> 
     23<li><a class="nav" href="except_wrapping.html">Exception wrapping</a></li> 
     24<li><a class="navcur" href="pydobject.html">PydObject</a></li> 
     25<li><a class="nav" href="vsboost.html">vs. Boost.Python</a></li> 
     26<li><a class="nav" href="credits.html">Credits</a></li> 
     27</ul> 
    2528</div> 
    2629 
  • trunk/html_doc/struct_wrapping.html

    r113 r114  
    1010<div id="nav"> 
    1111<p><big>Contents</big></p> 
    12 <a class="nav" href="index.html">Main</a><br /> 
    13 <a class="nav" href="install.html">Installation</a><br /> 
    14 <a class="nav" href="basics.html">The basics</a><br /> 
    15 <a class="nav" href="celerid.html">CeleriD</a><br /> 
    16 <a class="nav" href="conversion.html">Type conversion</a><br /> 
    17 <a class="nav" href="func_wrapping.html">Function wrapping</a><br /> 
    18 <a class="nav" href="class_wrapping.html">Class wrapping</a><br /> 
    19 <a class="nav" href="inherit.html">Inheritance</a><br /> 
    20 <a class="navcur" href="struct_wrapping.html">Struct wrapping</a><br /> 
    21 <a class="nav" href="except_wrapping.html">Exception wrapping</a><br /> 
    22 <a class="nav" href="pydobject.html">PydObject</a><br /> 
    23 <a class="nav" href="vsboost.html">vs. Boost.Python</a><br /> 
    24 <a class="nav" href="credits.html">Credits</a> 
     12<ul> 
     13<li><a class="nav" href="index.html">Main</a></li> 
     14<li><a class="nav" href="install.html">Installation</a></li> 
     15<li><a class="nav" href="basics.html">The basics</a></li> 
     16<li><a class="nav" href="celerid.html">CeleriD</a></li> 
     17<li><a class="nav" href="conversion.html">Type conversion</a></li> 
     18<li><a class="nav" href="adv_conversion.html">Advanced type conversion</a></li> 
     19<li><a class="nav" href="func_wrapping.html">Function wrapping</a></li> 
     20<li><a class="nav" href="class_wrapping.html">Class wrapping</a></li> 
     21<li><a class="nav" href="inherit.html">Inheritance</a></li> 
     22<li><a class="navcur" href="struct_wrapping.html">Struct wrapping</a></li> 
     23<li><a class="nav" href="except_wrapping.html">Exception wrapping</a></li> 
     24<li><a class="nav" href="pydobject.html">PydObject</a></li> 
     25<li><a class="nav" href="vsboost.html">vs. Boost.Python</a></li> 
     26<li><a class="nav" href="credits.html">Credits</a></li> 
     27</ul> 
    2528</div> 
    2629 
  • trunk/html_doc/vsboost.html

    r86 r114  
    1010<div id="nav"> 
    1111<p><big>Contents</big></p> 
    12 <a class="nav" href="index.html">Main</a><br /> 
    13 <a class="nav" href="install.html">Installation</a><br /> 
    14 <a class="nav" href="basics.html">The basics</a><br /> 
    15 <a class="nav" href="celerid.html">CeleriD</a><br /> 
    16 <a class="nav" href="conversion.html">Type conversion</a><br /> 
    17 <a class="nav" href="func_wrapping.html">Function wrapping</a><br /> 
    18 <a class="nav" href="class_wrapping.html">Class wrapping</a><br /> 
    19 <a class="nav" href="inherit.html">Inheritance</a><br /> 
    20 <a class="nav" href="struct_wrapping.html">Struct wrapping</a><br /> 
    21 <a class="nav" href="except_wrapping.html">Exception wrapping</a><br /> 
    22 <a class="nav" href="pydobject.html">PydObject</a><br /> 
    23 <a class="navcur" href="vsboost.html">vs. Boost.Python</a><br /> 
    24 <a class="nav" href="credits.html">Credits</a> 
     12<ul> 
     13<li><a class="nav" href="index.html">Main</a></li> 
     14<li><a class="nav" href="install.html">Installation</a></li> 
     15<li><a class="nav" href="basics.html">The basics</a></li> 
     16<li><a class="nav" href="celerid.html">CeleriD</a></li> 
     17<li><a class="nav" href="conversion.html">Type conversion</a></li> 
     18<li><a class="nav" href="adv_conversion.html">Advanced type conversion</a></li> 
     19<li><a class="nav" href="func_wrapping.html">Function wrapping</a></li> 
     20<li><a class="nav" href="class_wrapping.html">Class wrapping</a></li> 
     21<li><a class="nav" href="inherit.html">Inheritance</a></li> 
     22<li><a class="nav" href="struct_wrapping.html">Struct wrapping</a></li> 
     23<li><a class="nav" href="except_wrapping.html">Exception wrapping</a></li> 
     24<li><a class="nav" href="pydobject.html">PydObject</a></li> 
     25<li><a class="navcur" href="vsboost.html">vs. Boost.Python</a></li> 
     26<li><a class="nav" href="credits.html">Credits</a></li> 
     27</ul> 
    2528</div> 
    2629 
  • trunk/infrastructure/pyd/make_object.d

    r113 r114  
    4646import pyd.lib_abstract : 
    4747    objToStr, 
    48     toString 
     48    toString, 
     49    ParameterTypeTuple, 
     50    ReturnType 
    4951; 
    5052 
     
    6870} 
    6971 
     72class to_conversion_wrapper(dg_t) { 
     73    alias ParameterTypeTuple!(dg_t)[0] T; 
     74    alias ReturnType!(dg_t) Intermediate; 
     75    dg_t dg; 
     76    this(dg_t fn) { dg = fn; } 
     77    PyObject* opCall(T t) { 
     78        static if (is(Intermediate == PyObject*)) { 
     79            return dg(t); 
     80        } else { 
     81            return _py(dg(t)); 
     82        } 
     83    } 
     84} 
     85class from_conversion_wrapper(dg_t) { 
     86    alias ParameterTypeTuple!(dg_t)[0] Intermediate; 
     87    alias ReturnType!(dg_t) T; 
     88    dg_t dg; 
     89    this(dg_t fn) { dg = fn; } 
     90    T opCall(PyObject* o) { 
     91        static if (is(Intermediate == PyObject*)) { 
     92            return dg(o); 
     93        } else { 
     94            return dg(d_type!(Intermediate)(o)); 
     95        } 
     96    } 
     97} 
     98 
     99template to_converter_registry(From) { 
     100    PyObject* delegate(From) dg=null; 
     101} 
     102template from_converter_registry(To) { 
     103    To delegate(PyObject*) dg=null; 
     104} 
     105 
     106void d_to_python(dg_t) (dg_t dg) { 
     107    static if (is(dg_t == delegate) && is(ReturnType!(dg_t) == PyObject*)) { 
     108        to_converter_registry!(ParameterTypeTuple!(dg_t)[0]).dg = dg; 
     109    } else { 
     110        auto o = new to_conversion_wrapper!(dg_t)(dg); 
     111        to_converter_registry!(typeof(o).T).dg = &o.opCall; 
     112    } 
     113} 
     114void python_to_d(dg_t) (dg_t dg) { 
     115    static if (is(dg_t == delegate) && is(ParameterTypeTuple!(dg_t)[0] == PyObject*)) { 
     116        from_converter_registry!(ReturnType!(dg_t)).dg = dg; 
     117    } else { 
     118        auto o = new from_conversion_wrapper!(dg_t)(dg); 
     119        from_converter_registry!(typeof(o).T).dg = &o.opCall; 
     120    } 
     121} 
     122 
    70123/** 
    71124 * Returns a new (owned) reference to a Python object based on the passed 
     
    79132 */ 
    80133PyObject* _py(T) (T t) { 
     134    static if (!is(T == PyObject*) && is(typeof(t is null))) { 
     135        if (t is null) { 
     136            Py_INCREF(Py_None); 
     137            return Py_None; 
     138        } 
     139    } 
    81140    static if (is(T : bool)) { 
    82141        PyObject* temp = (t) ? Py_True : Py_False; 
     
    94153        return PyComplex_FromDoubles(t.re, t.im); 
    95154    } else static if (is(T : char[])) { 
    96         if (t is null) { 
    97             Py_INCREF(Py_None); 
    98             return Py_None; 
    99         } 
    100155        return PyString_FromString((t ~ \0).ptr); 
    101156    } else static if (is(T : wchar[])) { 
    102         if (t is null) { 
    103             Py_INCREF(Py_None); 
    104             return Py_None; 
    105         } 
    106157        return PyUnicode_FromWideChar(t, t.length); 
    107158    // Converts any array (static or dynamic) to a Python list 
    108159    } else static if (isArray!(T) || isStaticArray!(T)) { 
    109         if (t is null) { 
    110             Py_INCREF(Py_None); 
    111             return Py_None; 
    112         } 
    113160        PyObject* lst = PyList_New(t.length); 
    114161        PyObject* temp; 
     
    126173    // Converts any associative array to a Python dict 
    127174    } else static if (isAA!(T)) { 
    128         if (t is null) { 
    129             Py_INCREF(Py_None); 
    130             return Py_None; 
    131         } 
    132175        PyObject* dict = PyDict_New(); 
    133176        PyObject* ktemp, vtemp; 
     
    153196        return dict; 
    154197    } else static if (is(T == delegate) || is(T == function)) { 
    155         if (t is null) { 
    156             Py_INCREF(Py_None); 
    157             return Py_None; 
    158         } 
    159198        PydWrappedFunc_Ready!(T)(); 
    160199        return WrapPyObject_FromObject(t); 
    161200    } else static if (is(T : PydObject)) { 
    162         if (t is null) { 
    163             Py_INCREF(Py_None); 
    164             return Py_None; 
    165         } 
    166201        PyObject* temp = t.ptr(); 
    167202        Py_INCREF(temp); 
    168203        return temp; 
    169     // Convert wrapped type of a PyObject* 
     204    // The function expects to be passed a borrowed reference and return an 
     205    // owned reference. Thus, if passed a PyObject*, this will increment the 
     206    // reference count. 
     207    } else static if (is(T : PyObject*)) { 
     208        Py_INCREF(t); 
     209        return t; 
     210    // Convert wrapped type to a PyObject* 
    170211    } else static if (is(T == class)) { 
    171         if (t is null) { 
    172             Py_INCREF(Py_None); 
    173             return Py_None; 
    174         } 
    175212        // But only if it actually is a wrapped type. :-) 
    176213        PyTypeObject** type = t.classinfo in wrapped_classes; 
     
    195232            return WrapPyObject_FromObject(t); 
    196233        } 
    197     // The function expects to be passed a borrowed reference and return an 
    198     // owned reference. Thus, if passed a PyObject*, this will increment the 
    199     // reference count. 
    200     } else static if (is(T : PyObject*)) { 
    201         Py_INCREF(t); 
    202         return t; 
     234    } 
     235    // No conversion found, check runtime registry 
     236    if (to_converter_registry!(T).dg) { 
     237        return to_converter_registry!(T).dg(t); 
    203238    } 
    204239    PyErr_SetString(PyExc_RuntimeError, ("D conversion function _py failed with type " ~ objToStr(typeid(T))).ptr); 
     
    288323        } 
    289324        // Otherwise, throw up an exception. 
    290         could_not_convert!(T)(o); 
     325        //could_not_convert!(T)(o); 
    291326    } else static if (is(T == struct)) { // struct by value 
    292327        if (is_wrapped!(T*) && PyObject_TypeCheck(o, &wrapped_class_type!(T*))) {  
    293328            return *WrapPyObject_AsObject!(T*)(o); 
    294         } else could_not_convert!(T)(o); 
     329        }// else could_not_convert!(T)(o); 
    295330    } else static if (is(typeof(*(T.init)) == struct)) { // pointer to struct    
    296331        if (is_wrapped!(T) && PyObject_TypeCheck(o, &wrapped_class_type!(T))) { 
    297332            return WrapPyObject_AsObject!(T)(o); 
    298         } else could_not_convert!(T)(o); 
     333        }// else could_not_convert!(T)(o); 
    299334    } else static if (is(T == delegate)) { 
    300335        // Get the original wrapped delegate out if this is a wrapped delegate 
     
    304339        } else if (PyCallable_Check(o)) { 
    305340            return PydCallable_AsDelegate!(T)(o); 
    306         } else could_not_convert!(T)(o); 
     341        }// else could_not_convert!(T)(o); 
    307342    } else static if (is(T == function)) { 
    308343        // We can only make it a function pointer if we originally wrapped a 
     
    310345        if (is_wrapped!(T) && PyObject_TypeCheck(o, &wrapped_class_type!(T))) { 
    311346            return WrapPyObject_AsObject!(T)(o); 
    312         } else could_not_convert!(T)(o); 
     347        }// else could_not_convert!(T)(o); 
    313348    /+ 
    314349    } else static if (is(wchar[] : T)) { 
     
    390425        handle_exception(); 
    391426        return res == 1; 
    392     } else { 
     427    }/+ else { 
    393428        could_not_convert!(T)(o); 
    394     } 
     429    }+/ 
     430    if (from_converter_registry!(T).dg) { 
     431        return from_converter_registry!(T).dg(o); 
     432    } 
     433    could_not_convert!(T)(o); 
    395434} 
    396435 
  • trunk/raw_html/class_wrapping.html

    r113 r114  
    134134&gt;&gt;&gt; f.i 
    1351350 
    136 &gt;&gt;&gt; f.i = 20 
     136&gt;&gt;&gt; f.i = <span class="number">20</span> 
    137137&gt;&gt;&gt; f.foo(<span class="string">"Hello! i is "</span>) 
    138138Hello! i is 20 
    139 &gt;&gt;&gt; f = Foo(10, 10
     139&gt;&gt;&gt; f = Foo(<span class="number">10</span>, <span class="number">10</span>
    140140&gt;&gt;&gt; f.i 
    14114120 
    142 &gt;&gt;&gt; g = Foo(30
     142&gt;&gt;&gt; g = Foo(<span class="number">30</span>
    143143&gt;&gt;&gt; g.i 
    14414430 
     
    149149&gt;&gt;&gt; <span class="keyword">class</span> MyFoo(Foo): 
    150150...     <span class="keyword">def</span> bar(self): 
    151 ...         <span class="keyword">print</span> <span class="string">"Hey, i+3 is"</span>, self.i + 3 
     151...         <span class="keyword">print</span> <span class="string">"Hey, i+3 is"</span>, self.i + <span class="number">3</span> 
    152152...  
    153 &gt;&gt;&gt; h = MyFoo(3
     153&gt;&gt;&gt; h = MyFoo(<span class="number">3</span>
    154154&gt;&gt;&gt; h.bar() 
    155155Hey, i+3 is 6 
  • trunk/raw_html/header_template.html

    r86 r114  
    11<div id="nav"> 
    22<p><big>Contents</big></p> 
    3 <a class="%(index)s" href="index.html">Main</a><br /> 
    4 <a class="%(install)s" href="install.html">Installation</a><br /> 
    5 <a class="%(basics)s" href="basics.html">The basics</a><br /> 
    6 <a class="%(celerid)s" href="celerid.html">CeleriD</a><br /> 
    7 <a class="%(conversion)s" href="conversion.html">Type conversion</a><br /> 
    8 <a class="%(func_wrapping)s" href="func_wrapping.html">Function wrapping</a><br /> 
    9 <a class="%(class_wrapping)s" href="class_wrapping.html">Class wrapping</a><br /> 
    10 <a class="%(inherit)s" href="inherit.html">Inheritance</a><br /> 
    11 <a class="%(struct_wrapping)s" href="struct_wrapping.html">Struct wrapping</a><br /> 
    12 <a class="%(except_wrapping)s" href="except_wrapping.html">Exception wrapping</a><br /> 
    13 <a class="%(pydobject)s" href="pydobject.html">PydObject</a><br /> 
    14 <a class="%(vsboost)s" href="vsboost.html">vs. Boost.Python</a><br /> 
    15 <a class="%(credits)s" href="credits.html">Credits</a> 
     3<ul> 
     4<li><a class="%(index)s" href="index.html">Main</a></li> 
     5<li><a class="%(install)s" href="install.html">Installation</a></li> 
     6<li><a class="%(basics)s" href="basics.html">The basics</a></li> 
     7<li><a class="%(celerid)s" href="celerid.html">CeleriD</a></li> 
     8<li><a class="%(conversion)s" href="conversion.html">Type conversion</a></li> 
     9<li><a class="%(adv_conversion)s" href="adv_conversion.html">Advanced type conversion</a></li> 
     10<li><a class="%(func_wrapping)s" href="func_wrapping.html">Function wrapping</a></li> 
     11<li><a class="%(class_wrapping)s" href="class_wrapping.html">Class wrapping</a></li> 
     12<li><a class="%(inherit)s" href="inherit.html">Inheritance</a></li> 
     13<li><a class="%(struct_wrapping)s" href="struct_wrapping.html">Struct wrapping</a></li> 
     14<li><a class="%(except_wrapping)s" href="except_wrapping.html">Exception wrapping</a></li> 
     15<li><a class="%(pydobject)s" href="pydobject.html">PydObject</a></li> 
     16<li><a class="%(vsboost)s" href="vsboost.html">vs. Boost.Python</a></li> 
     17<li><a class="%(credits)s" href="credits.html">Credits</a></li> 
     18</ul> 
    1619</div>