Changeset 114
- Timestamp:
- 07/06/07 00:38:29 (1 year ago)
- Files:
-
- trunk/examples/testdll/test.py (modified) (1 diff)
- trunk/examples/testdll/testdll.d (modified) (3 diffs)
- trunk/html_doc/adv_conversion.html (added)
- trunk/html_doc/basics.html (modified) (1 diff)
- trunk/html_doc/celerid.html (modified) (1 diff)
- trunk/html_doc/class_wrapping.html (modified) (3 diffs)
- trunk/html_doc/conversion.html (modified) (1 diff)
- trunk/html_doc/credits.html (modified) (1 diff)
- trunk/html_doc/except_wrapping.html (modified) (1 diff)
- trunk/html_doc/func_wrapping.html (modified) (1 diff)
- trunk/html_doc/index.html (modified) (1 diff)
- trunk/html_doc/inherit.html (modified) (1 diff)
- trunk/html_doc/install.html (modified) (1 diff)
- trunk/html_doc/pyd.css (modified) (2 diffs)
- trunk/html_doc/pydobject.html (modified) (1 diff)
- trunk/html_doc/struct_wrapping.html (modified) (1 diff)
- trunk/html_doc/vsboost.html (modified) (1 diff)
- trunk/infrastructure/pyd/make_object.d (modified) (11 diffs)
- trunk/raw_html/adv_conversion.html (added)
- trunk/raw_html/class_wrapping.html (modified) (2 diffs)
- trunk/raw_html/header_template.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/examples/testdll/test.py
r100 r114 77 77 print 78 78 79 print "Testing custom conversion function" 80 print testdll.conv1() 81 testdll.conv2(20) 82 83 print 84 79 85 print '--------' 80 86 print 'SUCCESS' trunk/examples/testdll/testdll.d
r110 r114 91 91 } 92 92 93 94 struct A { 95 int i; 96 } 97 93 98 Foo spam(Foo f) { 94 99 f.foo(); … … 101 106 } 102 107 108 A conv1() { 109 A a; 110 a.i = 12; 111 return a; 112 } 113 void conv2(A a) { 114 writefln(a.i); 115 } 116 103 117 extern(C) void PydMain() { 104 118 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 105 122 def!(foo); 106 123 // Python does not support function overloading. This allows us to wrap … … 116 133 def!(dg_test); 117 134 def!(throws); 135 def!(conv1); 136 def!(conv2); 118 137 119 138 module_init(); trunk/html_doc/basics.html
r102 r114 10 10 <div id="nav"> 11 11 <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> 25 28 </div> 26 29 trunk/html_doc/celerid.html
r102 r114 10 10 <div id="nav"> 11 11 <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> 25 28 </div> 26 29 trunk/html_doc/class_wrapping.html
r113 r114 10 10 <div id="nav"> 11 11 <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> 25 28 </div> 26 29 … … 150 153 >>> f.i 151 154 0 152 >>> f.i = 20155 >>> f.i = <span class="number">20</span> 153 156 >>> f.foo(<span class="string">"Hello! i is "</span>) 154 157 Hello! i is 20 155 >>> f = Foo( 10, 10)158 >>> f = Foo(<span class="number">10</span>, <span class="number">10</span>) 156 159 >>> f.i 157 160 20 158 >>> g = Foo( 30)161 >>> g = Foo(<span class="number">30</span>) 159 162 >>> g.i 160 163 30 … … 165 168 >>> <span class="keyword">class</span> MyFoo(Foo): 166 169 ... <span class="keyword">def</span> bar(self): 167 ... <span class="keyword">print</span> <span class="string">"Hey, i+3 is"</span>, self.i + 3170 ... <span class="keyword">print</span> <span class="string">"Hey, i+3 is"</span>, self.i + <span class="number">3</span> 168 171 ... 169 >>> h = MyFoo( 3)172 >>> h = MyFoo(<span class="number">3</span>) 170 173 >>> h.bar() 171 174 Hey, i+3 is 6 trunk/html_doc/conversion.html
r113 r114 10 10 <div id="nav"> 11 11 <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> 25 28 </div> 26 29 trunk/html_doc/credits.html
r86 r114 10 10 <div id="nav"> 11 11 <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> 25 28 </div> 26 29 trunk/html_doc/except_wrapping.html
r86 r114 10 10 <div id="nav"> 11 11 <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> 25 28 </div> 26 29 trunk/html_doc/func_wrapping.html
r86 r114 10 10 <div id="nav"> 11 11 <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> 25 28 </div> 26 29 trunk/html_doc/index.html
r113 r114 10 10 <div id="nav"> 11 11 <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> 25 28 </div> 26 29 trunk/html_doc/inherit.html
r102 r114 10 10 <div id="nav"> 11 11 <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> 25 28 </div> 26 29 trunk/html_doc/install.html
r113 r114 10 10 <div id="nav"> 11 11 <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> 25 28 </div> 26 29 trunk/html_doc/pyd.css
r108 r114 27 27 } 28 28 /* navbar links */ 29 a.nav{29 div#nav a { 30 30 text-decoration: none; 31 31 font-weight: bold; 32 } 33 div#nav ul { 34 list-style-type: none; 35 padding: 0; 36 margin-bottom: 0; 37 margin-left: 1em; 38 text-indent: -1em; 39 } 40 a.nav { 32 41 color: #f0f0f0; 33 42 } 34 43 a.nav:visited { 35 text-decoration: none;36 font-weight: bold;37 44 color: #f0f0f0; 38 45 } 39 46 a.nav:hover { 40 text-decoration: none;41 47 color: black; 42 48 background-color: #d8d8d8; … … 44 50 /* the current navbar link */ 45 51 a.navcur { 46 text-decoration: none;47 font-weight: bold;48 52 color: black; 49 53 background-color: #d8d8d8; 50 54 } 51 55 a.navcur:visited { 52 text-decoration: none;53 font-weight: bold;54 56 color: black; 55 57 } 56 58 a.navcur:hover { 57 text-decoration: none;58 59 color: #f0f0f0; 59 60 background-color: #305880; trunk/html_doc/pydobject.html
r86 r114 10 10 <div id="nav"> 11 11 <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> 25 28 </div> 26 29 trunk/html_doc/struct_wrapping.html
r113 r114 10 10 <div id="nav"> 11 11 <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> 25 28 </div> 26 29 trunk/html_doc/vsboost.html
r86 r114 10 10 <div id="nav"> 11 11 <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> 25 28 </div> 26 29 trunk/infrastructure/pyd/make_object.d
r113 r114 46 46 import pyd.lib_abstract : 47 47 objToStr, 48 toString 48 toString, 49 ParameterTypeTuple, 50 ReturnType 49 51 ; 50 52 … … 68 70 } 69 71 72 class 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 } 85 class 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 99 template to_converter_registry(From) { 100 PyObject* delegate(From) dg=null; 101 } 102 template from_converter_registry(To) { 103 To delegate(PyObject*) dg=null; 104 } 105 106 void 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 } 114 void 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 70 123 /** 71 124 * Returns a new (owned) reference to a Python object based on the passed … … 79 132 */ 80 133 PyObject* _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 } 81 140 static if (is(T : bool)) { 82 141 PyObject* temp = (t) ? Py_True : Py_False; … … 94 153 return PyComplex_FromDoubles(t.re, t.im); 95 154 } else static if (is(T : char[])) { 96 if (t is null) {97 Py_INCREF(Py_None);98 return Py_None;99 }100 155 return PyString_FromString((t ~ \0).ptr); 101 156 } else static if (is(T : wchar[])) { 102 if (t is null) {103 Py_INCREF(Py_None);104 return Py_None;105 }106 157 return PyUnicode_FromWideChar(t, t.length); 107 158 // Converts any array (static or dynamic) to a Python list 108 159 } else static if (isArray!(T) || isStaticArray!(T)) { 109 if (t is null) {110 Py_INCREF(Py_None);111 return Py_None;112 }113 160 PyObject* lst = PyList_New(t.length); 114 161 PyObject* temp; … … 126 173 // Converts any associative array to a Python dict 127 174 } else static if (isAA!(T)) { 128 if (t is null) {129 Py_INCREF(Py_None);130 return Py_None;131 }132 175 PyObject* dict = PyDict_New(); 133 176 PyObject* ktemp, vtemp; … … 153 196 return dict; 154 197 } else static if (is(T == delegate) || is(T == function)) { 155 if (t is null) {156 Py_INCREF(Py_None);157 return Py_None;158 }159 198 PydWrappedFunc_Ready!(T)(); 160 199 return WrapPyObject_FromObject(t); 161 200 } else static if (is(T : PydObject)) { 162 if (t is null) {163 Py_INCREF(Py_None);164 return Py_None;165 }166 201 PyObject* temp = t.ptr(); 167 202 Py_INCREF(temp); 168 203 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* 170 211 } else static if (is(T == class)) { 171 if (t is null) {172 Py_INCREF(Py_None);173 return Py_None;174 }175 212 // But only if it actually is a wrapped type. :-) 176 213 PyTypeObject** type = t.classinfo in wrapped_classes; … … 195 232 return WrapPyObject_FromObject(t); 196 233 } 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); 203 238 } 204 239 PyErr_SetString(PyExc_RuntimeError, ("D conversion function _py failed with type " ~ objToStr(typeid(T))).ptr); … … 288 323 } 289 324 // Otherwise, throw up an exception. 290 could_not_convert!(T)(o);325 //could_not_convert!(T)(o); 291 326 } else static if (is(T == struct)) { // struct by value 292 327 if (is_wrapped!(T*) && PyObject_TypeCheck(o, &wrapped_class_type!(T*))) { 293 328 return *WrapPyObject_AsObject!(T*)(o); 294 } else could_not_convert!(T)(o);329 }// else could_not_convert!(T)(o); 295 330 } else static if (is(typeof(*(T.init)) == struct)) { // pointer to struct 296 331 if (is_wrapped!(T) && PyObject_TypeCheck(o, &wrapped_class_type!(T))) { 297 332 return WrapPyObject_AsObject!(T)(o); 298 } else could_not_convert!(T)(o);333 }// else could_not_convert!(T)(o); 299 334 } else static if (is(T == delegate)) { 300 335 // Get the original wrapped delegate out if this is a wrapped delegate … … 304 339 } else if (PyCallable_Check(o)) { 305 340 return PydCallable_AsDelegate!(T)(o); 306 } else could_not_convert!(T)(o);341 }// else could_not_convert!(T)(o); 307 342 } else static if (is(T == function)) { 308 343 // We can only make it a function pointer if we originally wrapped a … … 310 345 if (is_wrapped!(T) && PyObject_TypeCheck(o, &wrapped_class_type!(T))) { 311 346 return WrapPyObject_AsObject!(T)(o); 312 } else could_not_convert!(T)(o);347 }// else could_not_convert!(T)(o); 313 348 /+ 314 349 } else static if (is(wchar[] : T)) { … … 390 425 handle_exception(); 391 426 return res == 1; 392 } else {427 }/+ else { 393 428 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); 395 434 } 396 435 trunk/raw_html/class_wrapping.html
r113 r114 134 134 >>> f.i 135 135 0 136 >>> f.i = 20136 >>> f.i = <span class="number">20</span> 137 137 >>> f.foo(<span class="string">"Hello! i is "</span>) 138 138 Hello! i is 20 139 >>> f = Foo( 10, 10)139 >>> f = Foo(<span class="number">10</span>, <span class="number">10</span>) 140 140 >>> f.i 141 141 20 142 >>> g = Foo( 30)142 >>> g = Foo(<span class="number">30</span>) 143 143 >>> g.i 144 144 30 … … 149 149 >>> <span class="keyword">class</span> MyFoo(Foo): 150 150 ... <span class="keyword">def</span> bar(self): 151 ... <span class="keyword">print</span> <span class="string">"Hey, i+3 is"</span>, self.i + 3151 ... <span class="keyword">print</span> <span class="string">"Hey, i+3 is"</span>, self.i + <span class="number">3</span> 152 152 ... 153 >>> h = MyFoo( 3)153 >>> h = MyFoo(<span class="number">3</span>) 154 154 >>> h.bar() 155 155 Hey, i+3 is 6 trunk/raw_html/header_template.html
r86 r114 1 1 <div id="nav"> 2 2 <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> 16 19 </div>
