Commit 6bd451cd authored by SVN-Git Migration's avatar SVN-Git Migration

Imported Upstream version 1.6.2

parent f547f920
......@@ -35,7 +35,7 @@ set PY=c:\python%PY_MAJ%%PY_MIN%
set PYLIB=python%PY_MAJ%%PY_MIN%
set PYTHONPATH=%WORKDIR%\Source
set PYTHON=%PY%\python.exe
set wc_SVNVERSION=L:\BuildRoot\Win32-MSVC71-1.4.6\subversion-1.4.6\Release\bin\svnversion.exe
set PYSVNMODULE=_pysvn_%PY_MAJ%_%PY_MIN%.pyd
rem Need python and SVN on the path
PATH %PY%;%SUBVERSION%\%BUILD_TYPE%\bin;%PATH%
......
MAJOR=1
MINOR=6
PATCH=1
PATCH=2
BUILD=0
......@@ -1960,13 +1960,16 @@ Return the contents of path as a string, file_text.
<h4><a name="pysvn_transaction_changed"><a href="#pysvn_module">pysvn</a>.<a href="#pysvn_transaction">Transaction</a>.changed</a></h4>
<pre>
file_text = \
changed()
changed( [copy_info=False] )
</pre>
<p>
Return a dict of all changes in the transaction. The keys in
the dict are the path names and the values are tuples contraining
action, kind, text_mod, prop_mod.
</p>
<p>
The optional copy_info parameter when True will return the copy from revision and copy from path information.
</p>
<ul>
<li>action - string - a single letter indicating the action
'A' for add, 'R' for modify, 'D' for delete</li>
......@@ -1975,6 +1978,8 @@ action, kind, text_mod, prop_mod.
modified</li>
<li>prop_mod - int - is != 0 if the properties in this path
have been modified</li>
<li>copyfrom_rev - int - when path has been copied this is its copy from revision number</li>
<li>copyfrom_path - int - when path has been copied this is its copy from path</li>
</ul>
<h4><a name="pysvn_transaction_propdel"><a href="#pysvn_module">pysvn</a>.<a href="#pysvn_transaction">Transaction</a>.propdel</a></h4>
......
......@@ -30,7 +30,7 @@ code {background-color: #dddddd; }
<li>Subversion development package
</ul>
</li>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=3180">PyCXX V5.4.1</a> which is included in the pysvn source kit.</li>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=3180">PyCXX V5.4.2</a> which is included in the pysvn source kit.</li>
</ul>
<p>Some distributions will split python and subversion into more the one package.</p>
<p>You will need to find all the packages that give you the options listed above.</p>
......@@ -44,7 +44,7 @@ and <a href="http://www.jrsoftware.org/">INNO</a> 4.0.10 to create the installat
<ol>
<li>build subversion (tested with SVN 1.4.6 and svn 1.5.0)</li>
<li>fetch and expand the pysvn source code into <em>extdir</em></li>
<li>Expand pycxx-5.4.1.tar.gz into <em>extdir</em>\Import if not using a source kit</li>
<li>Expand pycxx-5.4.2.tar.gz into <em>extdir</em>\Import if not using a source kit</li>
<li>edit Builder\builder_custom_init.cmd to match the locations of the sources.</li>
<li><code>cd Builder</code></li>
<li><code>builder_custom_init.cmd</code></li>
......@@ -63,7 +63,7 @@ and <a href="http://www.jrsoftware.org/">INNO</a> 4.0.10 to create the installat
<ol>
<li>Install subversion</li>
<li>get the pysvn source code</li>
<li><code>tar xzf pycxx-5.4.1.tar.gz</code> into <em>extdir</em>/Import if not using a source kit</li>
<li><code>tar xzf pycxx-5.4.2.tar.gz</code> into <em>extdir</em>/Import if not using a source kit</li>
<li><code>cd Source</code></li>
<li>Create the Makefile using <code>python setup.py configure</code></li>
<li><code>make</code></li>
......
import pysvn
import sys
import os
def make_tag( from_url, tag_base_url, version ):
client = pysvn.Client()
client.callback_get_log_message = lambda : (True, 'Tag version '+version)
client.callback_get_login = callback_getLogin
try:
from_files = client.ls( from_url, recurse=False )
print 'Info: Found', from_url
except pysvn.ClientError, e:
print 'Error: From does not exist',from_url
return
try:
tag_files = client.ls( tag_base_url, recurse=False )
print 'Info: Found', tag_base_url
except pysvn.ClientError, e:
print 'Error: Tag base does not exist',tag_base_url
return
cur_versions = [os.path.basename(f['name']) for f in tag_files]
if version in cur_versions:
print 'Error: Already tagged',version
return
try:
to_url = tag_base_url + '/' + version
print 'Info: Copy',repr(from_url), repr(to_url)
client.copy( from_url, to_url )
print 'Info: Copy complete'
except pysvn.ClientError, e:
print 'Error: ', str(e)
return
def callback_getLogin( realm, username, may_save ):
print 'May save:',may_save
print 'Realm:',realm
if username:
print 'Username:',username
else:
sys.stdout.write( 'Username: ' )
username = sys.stdin.readline().strip()
if len(username) == 0:
return 0, '', '', False
sys.stdout.write( 'Password: ' )
password = sys.stdin.readline().strip()
save_password = 'x'
while save_password.lower() not in ['y','ye','yes','n', 'no','']:
sys.stdout.write( 'Save password? [y/n] ' )
save_password = sys.stdin.readline().strip()
return 1, username, password, save_password in ['y','ye','yes']
def main():
if len(sys.argv) != 2:
print 'Usage: %s version' % sys.argv[0]
return
version = sys.argv[1]
from_url = 'https://cxx.svn.sourceforge.net/svnroot/cxx/trunk/CXX'
tag_base_url = 'https://cxx.svn.sourceforge.net/svnroot/cxx/tags'
make_tag( from_url, tag_base_url, version )
if __name__ == '__main__':
main()
......@@ -454,6 +454,9 @@ namespace Py
PythonType & supportGetattro(void);
PythonType & supportSetattro(void);
PythonType & supportCompare(void);
#if PY_MAJOR_VERSION > 2 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 1)
PythonType & supportRichCompare(void);
#endif
PythonType & supportRepr(void);
PythonType & supportStr(void);
PythonType & supportHash(void);
......@@ -521,12 +524,13 @@ namespace Py
virtual Object getattro( const Object & );
virtual int setattro( const Object &, const Object & );
virtual int compare( const Object & );
virtual Object rich_compare( const Object &, int op );
virtual Object repr();
virtual Object str();
virtual long hash();
virtual Object call( const Object &, const Object & );
virtual Object iter();
virtual PyObject* iternext();
virtual Object iter();
virtual PyObject* iternext();
// Sequence methods
virtual int sequence_length();
......
......@@ -40,7 +40,7 @@
#define PYCXX_VERSION_MAJOR 5
#define PYCXX_VERSION_MINOR 4
#define PYCXX_VERSION_PATCH 1
#define PYCXX_VERSION_PATCH 2
#define PYCXX_MAKEVERSION( major, minor, patch ) ((major<<16)|(minor<<8)|(patch))
#define PYCXX_VERSION PYCXX_MAKEVERSION( PYCXX_VERSION_MAJOR, PYCXX_VERSION_MINOR, PYCXX_VERSION_PATCH )
#endif
......@@ -280,8 +280,8 @@ test_List()
Py::List::iterator l1, l2;
for(l1= a.begin(), l2 = ans.begin();
l1 != a.end() && l2 != ans.end();
++l1, ++l2)
l1 != a.end() && l2 != ans.end();
++l1, ++l2)
{
if(*l1 != *l2) return "failed 1" + a.as_string();
}
......@@ -309,6 +309,7 @@ test_Dict()
return "failed 1b " + a.as_string();
v = a.values();
#if 0
std::sort(v.begin(), v.end());
......@@ -381,6 +382,8 @@ test_STL()
{
return "failed count test";
}
#if 0
std::sort(w.begin(), w.end());
if (w != wans)
......@@ -397,15 +400,13 @@ test_STL()
d[ "three" ] = s2;
d[ "four" ] = s2;
Py::Dict::iterator it( d.begin() );
// it = d.begin(); // this (using the assignment operator) is causing
// a problem; if I just use the copy ctor it works fine.
Py::Dict::iterator it = d.begin();
for( ; it != d.end(); ++it )
{
Py::Dict::value_type vt( *it );
Py::Dict::value_type vt( *it );
Py::String rs = vt.second.repr();
std::string ls = rs.operator std::string();
fprintf( stderr, "%s\n", ls.c_str() );
std::cout << "dict value " << ls.c_str() << std::endl;
}
return "ok";
......@@ -558,11 +559,28 @@ private:
debug_check_ref_queue();
std::cout << "Example Test starting" << std::endl;
try
{
PyObject *p = NULL;
std::cout << "Trying to convert a NULL to an Py::Int" << std::endl;
Py::Int k( p );
std::cout << "Failed to raise error" << std::endl;
}
catch (Py::TypeError& e)
{
std::cout << "Correctly caught " << Py::type(e) << std::endl;
std::cout << " Py::Exception value: " << Py::value(e) << std::endl;
std::cout << " Py::Exception traceback: " << Py::trace(e) << std::endl;
e.clear();
}
try
{
Py::String s("this should fail");
PyObject *p = s.ptr();
std::cout << "Trying to convert a Py::String to an Py::Int" << std::endl;
Py::Int k(s.ptr());
Py::Int k( p );
std::cout << "Failed to raise error" << std::endl;
}
catch (Py::TypeError& e)
{
......@@ -571,6 +589,7 @@ private:
std::cout << " Py::Exception traceback: " << Py::trace(e) << std::endl;
e.clear();
}
debug_check_ref_queue();
std::string result = test_boolean();
......
//
// Copyright (c) 2008 Barry A. Scott
//
//
// simple_moduile.cxx
//
// This module defines a single function.
//
#ifdef _MSC_VER
// disable warning C4786: symbol greater than 255 character,
// nessesary to ignore as <map> causes lots of warning
#pragma warning(disable: 4786)
#endif
#include "CXX/Objects.hxx"
#include "CXX/Extensions.hxx"
#include <assert.h>
class cls: public Py::PythonExtension< cls >
{
public:
cls()
{
}
virtual ~cls()
{
}
static void init_type(void)
{
behaviors().name( "cls" );
behaviors().doc( "documentation for cls class" );
behaviors().supportGetattr();
add_varargs_method( "cls_func", &cls::cls_func );
}
// override functions from PythonExtension
virtual Py::Object getattr( const char *name )
{
return getattr_methods( name );
}
Py::Object cls_func( const Py::Tuple &args )
{
std::cout << "Called with " << args.length() << " normal arguments." << std::endl;
return Py::None();
}
};
class simple_module : public Py::ExtensionModule<simple_module>
{
public:
simple_module()
: Py::ExtensionModule<simple_module>( "simple" ) // this must be name of the file on disk e.g. simple.so or simple.pyd
{
cls::init_type();
add_varargs_method("cls", &simple_module::factory_cls, "documentation for cls()");
add_keyword_method("func", &simple_module::func, "documentation for func()");
// after initialize the moduleDictionary with exist
initialize( "documentation for the simple module" );
Py::Dict d( moduleDictionary() );
d["var"] = Py::String( "var value" );
}
virtual ~simple_module()
{}
private:
Py::Object func( const Py::Tuple &args, const Py::Dict &kws )
{
std::cout << "Called with " << args.length() << " normal arguments." << std::endl;
Py::List names( kws.keys() );
std::cout << "and with " << names.length() << " keyword arguments:" << std::endl;
for( Py::List::size_type i=0; i< names.length(); i++ )
{
Py::String name( names[i] );
std::cout << " " << name << std::endl;
}
return Py::None();
}
Py::Object factory_cls( const Py::Tuple &rargs )
{
return Py::asObject( new cls );
}
};
extern "C" void initsimple()
{
#if defined(PY_WIN32_DELAYLOAD_PYTHON_DLL)
Py::InitialisePythonIndirectPy::Interface();
#endif
static simple_module* simple = new simple_module;
}
// symbol required for the debug version
extern "C" void initsimple_d()
{
initsimple();
}
import simple
simple.func()
simple.func( 4, 5 )
simple.func( 4, 5, name=6, value=7 )
cls = simple.cls()
cls.cls_func()
cls.cls_func( 4 )
......@@ -2010,6 +2010,7 @@ virtual int setattr( const char *, const Object &amp; );
virtual Object getattro( const Object &amp; );
virtual int setattro( const Object &amp;, const Object &amp; );
virtual int compare( const Object &amp; );
virtual int rich_compare( const Object &amp;, int op );
virtual Object repr();
virtual Object str();
virtual long hash();
......@@ -2075,6 +2076,7 @@ void supportSetattr(void);
void supportGetattro(void);
void supportSetattro(void);
void supportCompare(void);
void supportRichCompare(void);
void supportRepr(void);
void supportStr(void);
void supportHash(void);
......
......@@ -32,20 +32,20 @@ p.param {background-color: #eeeeee; border-top: lightskyblue solid 4}
<h3>Windows Installation and Demo</h3>
<ol>
<li>Fetch <a href="http://prdownloads.sourceforge.net/cxx/pycxx-5.4.1.tar.gz">
http://prdownloads.sourceforge.net/cxx/pycxx-5.4.1.tar.gz</a></li>
<li>Fetch <a href="http://prdownloads.sourceforge.net/cxx/pycxx-5.4.2.tar.gz">
http://prdownloads.sourceforge.net/cxx/pycxx-5.4.2.tar.gz</a></li>
<li>Expand the archive into a directory of your choosing C:\ for example.
Note: WinZip can expand .tar.gz files.</li>
<li>Install the PyCXX files:
<ol>
<li><pre>C:> cd \pycxx-5.4.1</pre></li>
<li><pre>C:\pycxx-5.4.1> python setup.py install</pre></li>
<li><pre>C:> cd \pycxx-5.4.2</pre></li>
<li><pre>C:\pycxx-5.4.2> python setup.py install</pre></li>
</ol>
</li>
<li>Install the PyCXX Demo:
<ol>
<li><pre>C:> cd \pycxx-5.4.1\Demo</pre></li>
<li><pre>C:\pycxx-5.4.1\Demo> python setup.py install</pre></li>
<li><pre>C:> cd \pycxx-5.4.2\Demo</pre></li>
<li><pre>C:\pycxx-5.4.2\Demo> python setup.py install</pre></li>
</ol>
</li>
<li>Run the demo:
......@@ -67,18 +67,18 @@ Note: WinZip can expand .tar.gz files.</li>
<p>Note: distutils is not available for Python 1.5.2</p>
<ol>
<li>Fetch <a href="http://prdownloads.sourceforge.net/cxx/pycxx-5.4.1.tar.gz">
http://prdownloads.sourceforge.net/cxx/pycxx-5.4.1.tar.gz</a>
<li>Fetch <a href="http://prdownloads.sourceforge.net/cxx/pycxx-5.4.2.tar.gz">
http://prdownloads.sourceforge.net/cxx/pycxx-5.4.2.tar.gz</a>
<li>Login as root. root access is typically needed on Unix systems to install the PyCXX files into the Python directories.
<li>Expand the archive into a directory of your choosing ~\ for example.
<li>Install the PyCXX files:
<ol>
<li><pre># cd ~\pycxx-5.4.1</pre>
<li><pre># cd ~\pycxx-5.4.2</pre>
<li><pre># python setup.py install</pre>
</ol>
<li>Install the PyCXX Demo:
<ol>
<li><pre># cd ~\pycxx-5.4.1\Demo</pre>
<li><pre># cd ~\pycxx-5.4.2\Demo</pre>
<li><pre># python setup.py install</pre>
</ol>
<li>Run the demos:
......@@ -101,8 +101,8 @@ of Makefiles and Project files are provided.</p>
<h3>Windows Installation and Demo</h3>
<p>
<ol>
<li>Fetch <a href="http://prdownloads.sourceforge.net/cxx/pycxx-5.4.1.tar.gz">
http://prdownloads.sourceforge.net/cxx/pycxx-5.4.1.tar.gz</a>
<li>Fetch <a href="http://prdownloads.sourceforge.net/cxx/pycxx-5.4.2.tar.gz">
http://prdownloads.sourceforge.net/cxx/pycxx-5.4.2.tar.gz</a>
<li>Expand the archive into a directory of your choosing C:\ for example. WinZip can expand .tar.gz files.
<li>Build the example. Using Microsoft .NET 2003 C++ for python version 2.4 or later load the workspace corresponsing to the version of
Python you wish the work with.
......@@ -121,7 +121,7 @@ Python you wish the work with.
</ul>
<li>Run the example. (I'll assume you are testing Python 2.3)
<ul>
<li>cd c:\pycxx-5.4.1\pyds23
<li>cd c:\pycxx-5.4.2\pyds23
<li>c:\python21\python -c "import example;example.test()"
</ul>
</ol>
......@@ -129,8 +129,8 @@ Python you wish the work with.
<h3>Unix and Mac OS X Installation and Demo</h3>
<p>
<ol>
<li>Fetch <a href="http://prdownloads.sourceforge.net/cxx/pycxx-5.4.1.tar.gz">
http://prdownloads.sourceforge.net/cxx/pycxx-5.4.1.tar.gz</a>
<li>Fetch <a href="http://prdownloads.sourceforge.net/cxx/pycxx-5.4.2.tar.gz">
http://prdownloads.sourceforge.net/cxx/pycxx-5.4.2.tar.gz</a>
<li>Expand the archive into a directory of your choosing ~/ for example.
<li>Select to makefile for your system and python version.
<ul>
......@@ -145,11 +145,14 @@ http://prdownloads.sourceforge.net/cxx/pycxx-5.4.1.tar.gz</a>
<li>example_linux_py22.mak - Linux Python 2.2
<li>example_linux_py23.mak - Linux Python 2.3
<li>example_linux_py24.mak - Linux Python 2.4
<li>example_linux_py25.mak - Linux Python 2.5
<li>example_linux_py26.mak - Linux Python 2.6
<li>example_fink_10.3_py24.mak - Mac OS X 10.3 fink Python 2.4
<li>example_fink_10.4_py24.mak - Mac OS X 10.4 fink Python 2.4
<li>example_mac_py23.mak - Mac OS X Apple Python 2.3
<li>example_mac_py24.mak - Mac OS X Python 2.4
<li>example_mac_py25.mak - Mac OS X Python 2.5
<li>example_mac_py26.mak - Mac OS X Python 2.6
</ul>
<li>Build the example. Use GNU make<br>
$ make -f <var>example-makefile</var> example.so
......@@ -173,12 +176,17 @@ is not compiled and linked to support C and C++.</p>
<h2>Revision History</h2>
<h3>Version 5.4.2 (11-Oct-2008)</h3>
<p>Add support for rich compare.</p>
<p>Add the simplest code for a module with a single function and a single class (Demo/simple.cxx)</p>
<p>Fix long standing bugs with Dict::iterator</p>
<h3>Version 5.4.1 (28-Jun-2008)</h2>
<p>Add Boolean type from Vivian De Smedt.</p>
<p>Patch from Dmitry Kostjuchenko to which improves PyCXX's method calling
speed/performance by almost 2 times.</p>
<p>More PY_LONG_LONG support.</p>
<p>No long allow creation of Py::Int from PY_LONG_LONG as long long cannot fix. Use Py::Long.</p>
<p>No longer allow creation of Py::Int from PY_LONG_LONG as long long cannot fit. Use Py::Long.</p>
<p>Py:Dict can now be constructed from a Py::Object.</p>
<h3>Version 5.4.0 (20-Jan-2007)</h3>
......
......@@ -13,13 +13,26 @@
Project Page</a> at&nbsp;<a href="http://sourceforge.net"><img SRC="http://sourceforge.net/sflogo.php?group_id=3180&type=1" alt="SourceForge Home" nosave height="31" width="88" align="abscenter"></a>
gives you access to the releases, the Subversion repository, and more.</b>
<p>
<hr>
<h2>Python 3.0 support</h2>
<p>Python 3 will be supported by PyCXX 6.0.0 which I hope to release close to the release of Python 3.0.</p>
<p>Python 2 will be continue to be supported with PyCXX 5.</p>
<p>My aim is to add features to PyCXX 5 that will easy the porting of code to Python 3 using PyCXX 6</p>
<hr>
<h2>Version 5.4.2 (11-Oct-2008)</h2>
<p>Add support for rich compare.</p>
<p>Add the simplest code for a module with a single function and a single class (Demo/simple.cxx)</p>
<p>Fix long standing bugs with Dict::iterator</p>
<hr>
<h2>Version 5.4.1 (28-Jun-2008)</h2>
<p>Add Boolean type from Vivian De Smedt.</p>
<p>Patch from Dmitry Kostjuchenko to which improves PyCXX method's calling
speed/performance by almost 2 times.</p>
<p>More PY_LONG_LONG support.</p>
<p>No long allow creation of Py::Int from PY_LONG_LONG as long long cannot fix. Use Py::Long.</p>
<p>No longer allow creation of Py::Int from PY_LONG_LONG as long long cannot fit. Use Py::Long.</p>
<p>Py:Dict can now be constructed from a Py::Object.</p>
<hr>
......
......@@ -41,6 +41,41 @@
namespace Py
{
void Object::validate()
{
// release pointer if not the right type
if( !accepts( p ) )
{
#if defined( _CPPRTTI ) || defined( __GNUG__ )
std::string s( "PyCXX: Error creating object of type " );
s += (typeid( *this )).name();
if( p != 0 )
{
String from_repr = repr();
s += " from ";
s += from_repr.as_std_string();
}
else
{
s += " from (nil)";
}
#endif
release();
if( PyErr_Occurred() )
{ // Error message already set
throw Exception();
}
// Better error message if RTTI available
#if defined( _CPPRTTI ) || defined( __GNUG__ )
throw TypeError( s );
#else
throw TypeError( "PyCXX: type error." );
#endif
}
}
//================================================================================
//
// Implementation of MethodTable
......@@ -177,6 +212,7 @@ extern "C"
static PyObject* getattro_handler (PyObject*, PyObject*);
static int setattro_handler (PyObject*, PyObject*, PyObject*);
static int compare_handler (PyObject*, PyObject*);
static PyObject* richcompare_handler (PyObject*, PyObject*, int op);
static PyObject* repr_handler (PyObject*);
static PyObject* str_handler (PyObject*);
static long hash_handler (PyObject*);
......@@ -455,6 +491,14 @@ PythonType & PythonType::supportCompare()
return *this;
}
#if PY_MAJOR_VERSION > 2 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 1)
PythonType & PythonType::supportRichCompare()
{
table->tp_richcompare = richcompare_handler;
return *this;
}
#endif
PythonType & PythonType::supportRepr()
{
table->tp_repr = repr_handler;
......@@ -569,6 +613,21 @@ extern "C" int compare_handler( PyObject *self, PyObject *other )
}
}
#if PY_MAJOR_VERSION > 2 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 1)
extern "C" PyObject* richcompare_handler( PyObject *self, PyObject *other, int op )
{
try
{
PythonExtensionBase *p = static_cast<PythonExtensionBase *>( self );
return new_reference_to( p->rich_compare( Py::Object( other ), op ) );
}
catch( Py::Exception & )
{
return NULL; // indicate error
}
}
#endif
extern "C" PyObject* repr_handler( PyObject *self )
{
try
......@@ -1143,6 +1202,11 @@ int PythonExtensionBase::setattro( const Py::Object &, const Py::Object & )
int PythonExtensionBase::compare( const Py::Object & )
{ missing_method( compare ); return -1; }
#if PY_MAJOR_VERSION > 2 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 1)
Py::Object PythonExtensionBase::rich_compare( const Py::Object &, int op )
{ missing_method( rich_compare ); return Py::None(); }
#endif
Py::Object PythonExtensionBase::repr()
{ missing_method( repr ); return Py::Nothing(); }
......
......@@ -20,6 +20,13 @@ call setup-msvc71
echo on
devenv example_py24.sln %ACTION% "%BUILD_TYPE%" /project "example"
devenv example_py24.sln %ACTION% "%BUILD_TYPE%" /project "pycxx_iter"
devenv example_py24.sln %ACTION% "%BUILD_TYPE%" /project "simple"
devenv example_py25.sln %ACTION% "%BUILD_TYPE%" /project "example"
devenv example_py25.sln %ACTION% "%BUILD_TYPE%" /project "pycxx_iter"
devenv example_py25.sln %ACTION% "%BUILD_TYPE%" /project "simple"
devenv example_py26.sln %ACTION% "%BUILD_TYPE%" /project "example"
devenv example_py26.sln %ACTION% "%BUILD_TYPE%" /project "pycxx_iter"
devenv example_py26.sln %ACTION% "%BUILD_TYPE%" /project "simple"
endlocal
endlocal
......@@ -4,16 +4,26 @@
# include this mak file after defining the variables it needs
#
COMMON_OBJECTS=cxxsupport.o cxx_extensions.o cxxextensions.o IndirectPythonInterface.o
EXAMPLE_OBJECTS=example.o range.o rangetest.o $(COMMON_OBJECTS)
PYCXX_ITER_OBJECTS=pycxx_iter.o $(COMMON_OBJECTS)
SIMPLE_OBJECTS=simple.o
EXAMPLE_OBJECTS=example.o range.o rangetest.o
PYCXX_ITER_OBJECTS=pycxx_iter.o