pygccxml-commit Mailing List for C++ Python language bindings (Page 77)
Brought to you by:
mbaas,
roman_yakovenko
You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(190) |
Apr
(166) |
May
(170) |
Jun
(75) |
Jul
(105) |
Aug
(131) |
Sep
(99) |
Oct
(84) |
Nov
(67) |
Dec
(54) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(66) |
Feb
(49) |
Mar
(25) |
Apr
(62) |
May
(21) |
Jun
(34) |
Jul
(9) |
Aug
(21) |
Sep
(5) |
Oct
|
Nov
(63) |
Dec
(34) |
2008 |
Jan
(10) |
Feb
(42) |
Mar
(26) |
Apr
(25) |
May
(6) |
Jun
(40) |
Jul
(18) |
Aug
(29) |
Sep
(6) |
Oct
(32) |
Nov
(14) |
Dec
(56) |
2009 |
Jan
(127) |
Feb
(52) |
Mar
(2) |
Apr
(10) |
May
(29) |
Jun
(3) |
Jul
|
Aug
(16) |
Sep
(4) |
Oct
(11) |
Nov
(8) |
Dec
(14) |
2010 |
Jan
(31) |
Feb
(1) |
Mar
(7) |
Apr
(9) |
May
(1) |
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
(8) |
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Matthias B. <mb...@us...> - 2006-04-09 15:12:29
|
Update of /cvsroot/pygccxml/source/pyplusplus/file_writers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10214/file_writers Modified Files: writer.py multiple_files.py Log Message: Added some doc strings and comments Index: writer.py =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/file_writers/writer.py,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** writer.py 6 Apr 2006 06:16:08 -0000 1.14 --- writer.py 9 Apr 2006 15:12:21 -0000 1.15 *************** *** 23,27 **** def _get_extmodule(self): return self.__extmodule ! extmodule = property( _get_extmodule ) def write(self): --- 23,29 ---- def _get_extmodule(self): return self.__extmodule ! extmodule = property( _get_extmodule, ! doc="""The root of the code creator tree. ! @type: module_t""") def write(self): *************** *** 43,46 **** --- 45,59 ---- def write_file( fpath, content ): + """Write a source file. + + This method writes the string content into the specified file. + An additional fixed header is written at the top of the file before + content. + + @param fpath: File name + @type fpath: str + @param content: The content of the file + @type content: str + """ _logging_.logger.debug( 'write code to file "%s" - started' % fpath ) start_time = time.clock() Index: multiple_files.py =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/file_writers/multiple_files.py,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** multiple_files.py 6 Apr 2006 06:16:08 -0000 1.16 --- multiple_files.py 9 Apr 2006 15:12:21 -0000 1.17 *************** *** 19,26 **** def __init__(self, extmodule, directory_path): writer.writer_t.__init__(self, extmodule) self.__directory_path = directory_path self._create_dir() ! self.__include_creators = [] self.split_header_names = [] # List of include file names for split files self.split_method_names = [] # List of methods from the split files --- 19,33 ---- def __init__(self, extmodule, directory_path): + """Constructor. + + @param extmodule: The root of a code creator tree + @type extmodule: module_t + @param directory_path: The output directory where the source files are written + @type directory_path: str + """ writer.writer_t.__init__(self, extmodule) self.__directory_path = directory_path self._create_dir() ! self.__include_creators = [] # List of include_t creators that contain the generated headers self.split_header_names = [] # List of include file names for split files self.split_method_names = [] # List of methods from the split files *************** *** 28,31 **** --- 35,40 ---- def _create_dir( self ): + """Create the output directory if it doesn't already exist. + """ if os.path.exists( self.__directory_path ) and not os.path.isdir(self.__directory_path): raise RuntimeError( 'directory_path should contain path to directory.' ) *************** *** 35,41 **** def _get_directory_path(self): return self.__directory_path ! directory_path = property( _get_directory_path ) def create_header( self, file_name, function_name ): tmpl = os.linesep.join([ "#ifndef __%(file_name)s_hpp__pyplusplus_wrapper__" --- 44,62 ---- def _get_directory_path(self): return self.__directory_path ! directory_path = property( _get_directory_path, ! doc="""The name of the output directory. ! @type: str ! """ ) def create_header( self, file_name, function_name ): + """Return the content of a header file. + + @param file_name: A string that uniquely identifies the file name + @type file_name: str + @param function_name: The name of the register_xyz() function + @type function_name: str + @returns: The content for a header file + @rtype: str + """ tmpl = os.linesep.join([ "#ifndef __%(file_name)s_hpp__pyplusplus_wrapper__" *************** *** 54,57 **** --- 75,90 ---- def create_source( self, file_name, function_name, creators ): + """Return the content of a cpp file. + + @param file_name: The base name of the corresponding include file (without extension) + @type file_name: str + @param function_name: The name of the register_xyz() function + @type function_name: str + @param creators: The code creators that create the register_xyz() function + @type creators: list of code_creator_t + @returns: The content for a cpp file + @rtype: str + """ + answer = [] if self.extmodule.license: *************** *** 62,66 **** answer.append( '#include "%s%s"' % ( file_name, self.HEADER_EXT ) ) ! include_creators = filter( lambda creator: isinstance( creator, code_creators.include_t ) and not isinstance( creator, code_creators.precompiled_header_t ) --- 95,100 ---- answer.append( '#include "%s%s"' % ( file_name, self.HEADER_EXT ) ) ! ! # Include all 'global' include files... include_creators = filter( lambda creator: isinstance( creator, code_creators.include_t ) and not isinstance( creator, code_creators.precompiled_header_t ) *************** *** 69,73 **** , include_creators ) answer.append( os.linesep.join(includes) ) ! affect_creators = filter( lambda x: isinstance( x, code_creators.namespace_alias_t ) or isinstance( x, code_creators.namespace_using_t ) --- 103,108 ---- , include_creators ) answer.append( os.linesep.join(includes) ) ! ! # Write all 'global' namespace_alias_t and namespace_using_t creators first... affect_creators = filter( lambda x: isinstance( x, code_creators.namespace_alias_t ) or isinstance( x, code_creators.namespace_using_t ) *************** *** 82,91 **** answer.append( '' ) answer.append( os.linesep.join(namespace_aliases) ) ! for creator in creators: if isinstance( creator, code_creators.class_t ) and creator.wrapper: answer.append( '' ) answer.append( creator.wrapper.create() ) ! answer.append( '' ) answer.append( 'void %s(){' % function_name ) --- 117,128 ---- answer.append( '' ) answer.append( os.linesep.join(namespace_aliases) ) ! ! # Write wrapper classes... for creator in creators: if isinstance( creator, code_creators.class_t ) and creator.wrapper: answer.append( '' ) answer.append( creator.wrapper.create() ) ! ! # Write the register() function... answer.append( '' ) answer.append( 'void %s(){' % function_name ) *************** *** 97,105 **** --- 134,152 ---- def split_class( self, class_creator): + """Write the .h/.cpp file for one class. + + Writes a .h/.cpp file for the given class. The files use the class name + as base file name. + + @param class_creator: The class creator for one particular class + @type class_creator: class_t + """ function_name = 'register_%s_class' % class_creator.alias file_path = os.path.join( self.directory_path, class_creator.alias ) + # Write the .h file... header_name = file_path + self.HEADER_EXT self.write_file( header_name , self.create_header( class_creator.alias, function_name ) ) + # Write the .cpp file... self.write_file( file_path + self.SOURCE_EXT , self.create_source( class_creator.alias *************** *** 107,111 **** --- 154,163 ---- , [class_creator] )) if class_creator.wrapper: + # The wrapper has already been written above, so replace the create() + # method with a new 'method' that just returns an empty string because + # this method is later called again for the main source file. class_creator.wrapper.create = lambda: '' + # Replace the create() method so that only the register() method is called + # (this is called later for the main source file). class_creator.create = lambda: function_name +'();' self.__include_creators.append( code_creators.include_t( header_name ) ) *************** *** 114,117 **** --- 166,180 ---- def split_creators( self, creators, pattern, function_name, registrator_pos ): + """Write non-class creators into a particular .h/.cpp file. + + @param creators: The code creators that should be written + @type creators: list of code_creator_t + @param pattern: Name pattern that is used for constructing the final output file name + @type pattern: str + @param function_name: The name of the register_xyz() function + @type function_name: str + @param registrator_pos: The position of the code creator that creates the code to invoke the register_xyz() function. + @type registrator_pos: int + """ if not creators: return *************** *** 135,138 **** --- 198,203 ---- def split_enums( self ): + """Write all enumerations into a separate .h/.cpp file. + """ enums_creators = filter( lambda x: isinstance(x, code_creators.enum_t ) , self.extmodule.body.creators ) *************** *** 141,144 **** --- 206,211 ---- def split_global_variables( self ): + """Write all global variables into a separate .h/.cpp file. + """ creators = filter( lambda x: isinstance(x, code_creators.global_variable_t ) , self.extmodule.body.creators ) *************** *** 148,151 **** --- 215,220 ---- def split_free_functions( self ): + """Write all free functions into a separate .h/.cpp file. + """ creators = filter( lambda x: isinstance(x, code_creators.function_t ) , self.extmodule.body.creators ) *************** *** 166,172 **** self.extmodule.do_include_dirs_optimization() ! class_creators = filter( lambda x: isinstance(x, code_creators.class_t ) , self.extmodule.body.creators ) map( self.split_class, class_creators ) --- 235,243 ---- self.extmodule.do_include_dirs_optimization() ! ! # Obtain a list of all class creators... class_creators = filter( lambda x: isinstance(x, code_creators.class_t ) , self.extmodule.body.creators ) + # ...and write a .h/.cpp file for each class map( self.split_class, class_creators ) |
From: Roman <rom...@us...> - 2006-04-09 06:55:18
|
Update of /cvsroot/pygccxml/source/pyplusplus In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23941/pyplusplus Modified Files: __init__.py Log Message: incrementing packages version Index: __init__.py =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/__init__.py,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** __init__.py 9 Apr 2006 05:17:14 -0000 1.26 --- __init__.py 9 Apr 2006 06:55:14 -0000 1.27 *************** *** 48,52 **** import module_builder ! __version__ = '0.7.0' #Known issues: --- 48,52 ---- import module_builder ! __version__ = '0.7.1' #Known issues: |
From: Roman <rom...@us...> - 2006-04-09 06:55:17
|
Update of /cvsroot/pygccxml/source/pygccxml In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23941/pygccxml Modified Files: __init__.py Log Message: incrementing packages version Index: __init__.py =================================================================== RCS file: /cvsroot/pygccxml/source/pygccxml/__init__.py,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** __init__.py 15 Mar 2006 09:27:06 -0000 1.21 --- __init__.py 9 Apr 2006 06:55:14 -0000 1.22 *************** *** 34,38 **** import pygccxml.utils as utils ! __version__ = '0.7.1' #TODO: --- 34,38 ---- import pygccxml.utils as utils ! __version__ = '0.7.2' #TODO: |
From: Roman <rom...@us...> - 2006-04-09 05:54:31
|
Update of /cvsroot/pygccxml/source/release_manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22829/release_manager Modified Files: setup_pyplusplus.py Log Message: fixing small bug Index: setup_pyplusplus.py =================================================================== RCS file: /cvsroot/pygccxml/source/release_manager/setup_pyplusplus.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** setup_pyplusplus.py 9 Apr 2006 05:17:16 -0000 1.1 --- setup_pyplusplus.py 9 Apr 2006 05:54:24 -0000 1.2 *************** *** 13,17 **** , author_email="rom...@gm..." , url='http://pyplusplus.sourceforge.net' ! , scripts=os.listdir( os.path.join( 'pyplusplus', 'scripts' ) ) , packages=[ 'pyplusplus' , 'pyplusplus.gui' --- 13,18 ---- , author_email="rom...@gm..." , url='http://pyplusplus.sourceforge.net' ! , scripts= map( lambda script_name: os.path.join( 'pyplusplus', 'scripts', script_name ) ! , os.listdir( os.path.join( 'pyplusplus', 'scripts' ) ) ) , packages=[ 'pyplusplus' , 'pyplusplus.gui' |
From: Roman <rom...@us...> - 2006-04-09 05:17:57
|
Update of /cvsroot/pygccxml/source/pyplusplus/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1480/pyplusplus/docs Modified Files: pyplusplus.rest Added Files: code_creators_uml.png pyplusplus_uml.vsd Removed Files: code_creators.png code_generation_process.png default.css generate_docs.py pyplusplus.png pyplusplus.vsd Log Message: I hope those are last big changes in the project to this release. Those changes give us an ability to create "setups" in one click cd release_manager python release_builder.py Enjoy --- pyplusplus.png DELETED --- --- NEW FILE: pyplusplus_uml.vsd --- (This appears to be a binary file; contents omitted.) --- pyplusplus.vsd DELETED --- Index: pyplusplus.rest =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/docs/pyplusplus.rest,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** pyplusplus.rest 6 Apr 2006 17:44:46 -0000 1.7 --- pyplusplus.rest 9 Apr 2006 05:17:14 -0000 1.8 *************** *** 106,110 **** .. _`AST`: http://en.wikipedia.org/wiki/Abstract_syntax_tree ! .. _`class diagram`: ./code_creators.png At the end of this step you have code creators tree, that is ready to be written --- 106,110 ---- .. _`AST`: http://en.wikipedia.org/wiki/Abstract_syntax_tree ! .. _`class diagram`: ./code_creators_uml.png At the end of this step you have code creators tree, that is ready to be written *************** *** 187,202 **** .. _`pygccxml` : ./../pygccxml/pygccxml.html .. _`boost.python`: http://www.boost.org/libs/python/doc/index.html - .. _`SourceForge`: http://sourceforge.net/index.php - .. _`Docutils`: http://docutils.sourceforge.net .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org .. _`Boost Software License`: http://boost.org/more/license_info.html ! .. _`Eric 3.4`: http://www.die-offenbachs.de/detlev/eric3.html ! .. _`Debian Linux`: http://www.debian.org ! .. _`UML diagram` : ./declarations.png ! .. _`Parser package` : ./parser.png ! .. _`ReleaseForge` : http://releaseforge.sourceforge.net ! .. _`boost::type_traits` : http://www.boost.org/libs/type_traits/index.html ! .. _`boost.rational` : http://www.boost.org/ .. Local Variables: --- 187,194 ---- .. _`pygccxml` : ./../pygccxml/pygccxml.html .. _`boost.python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org .. _`Boost Software License`: http://boost.org/more/license_info.html ! .. Local Variables: --- code_creators.png DELETED --- --- generate_docs.py DELETED --- --- code_generation_process.png DELETED --- --- NEW FILE: code_creators_uml.png --- (This appears to be a binary file; contents omitted.) --- default.css DELETED --- |
From: Roman <rom...@us...> - 2006-04-09 05:17:57
|
Update of /cvsroot/pygccxml/source/pyplusplus/docs/tutorials In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1480/pyplusplus/docs/tutorials Modified Files: module_builder.rest Added Files: pyplusplus_demo.png tutorials.rest Log Message: I hope those are last big changes in the project to this release. Those changes give us an ability to create "setups" in one click cd release_manager python release_builder.py Enjoy Index: module_builder.rest =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/docs/tutorials/module_builder.rest,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** module_builder.rest 6 Apr 2006 06:20:06 -0000 1.1 --- module_builder.rest 9 Apr 2006 05:17:15 -0000 1.2 *************** *** 5,10 **** .. contents:: Table of contents - **All written here is relevant to CVS version.** - ------------------- What is pyplusplus? --- 5,8 ---- *************** *** 14,75 **** -------- ! Concepts -------- - `pyplusplus`_ introduces few concepts: ! **code creator** ---------------- - Class, that is responsible to create some specific code. For example, - ``include_t`` code creator is responsible to create C++ include directive. ! **compound code creator** ------------------------- ! Code creator, that contains an ordered set of other code creators. For example, ! ``module_t`` is compaund code creator, because it keeps all code creators. - **code creators tree** - ---------------------- - Good definition is needed, meanwhile I can make next anology of code creators - with XML DOM - 1) code creators - DOM nodes - 2) code creators tree - XML DOM - 3) module - DOM Document - **module creator** - ------------------ - Factory, that is repososible to create all necessary code creators, for a - given set of C++ declarations. - - **file writer(s)** - ------------------ - Classes, that are responsible for writing all code produced by ``module_t`` - into file(s). - -------- - Overview - -------- - Code generation process using `pyplusplus`_ consists from few steps: - 1. Read C++ declarations. - 2. Create code creators tree. - 3. Customize code creators. - 4. Write code to files. - Later, in this article I am going to explain every step. Before doing this, I - would like to give you small advice: please `download`_ `pyplusplus`_ `GUI`_ and run - it. There is one good reason for doing this: code generator wizard. `pyplusplus`_ - GUI contains small and simple wizard that will generate `pyplusplus`_ code from - your settings. You have to know nothing about API - just few clicks with you - mouse and you will get the code. Enjoy. - .. _`download`: ./download.html - .. _`GUI`: ./examples/pyplusplus_demo.png - To do: add reference to the code!!! ----------------------------- --- 12,59 ---- -------- ! Preamble -------- ! I guess you decided to try to use `pyplusplus`_ API. Good! So lets start. ! First of all take a look on two files: ! * `hello_world.hpp`_ - C++ source code, that we want to export to Python ! * `generate_code.py`_ - Python code, that uses `pyplusplus`_ to export ! declarations from the source file ! ! .. _`hello_world.hpp` : ./module_builder_hello_world.html ! .. _`generate_code.py` : ./module_builder_generate_code.html ! ! ---------------- ! module_builder_t ---------------- ! `pyplusplus`_ is built from a few packages, but there is only one package you ! should realy to be familiar with - ``module_builder``. The main purpose of this ! package is to provide simple and user friendly interface to `pyplusplus`_ ! internals. The main class within this package is ``module_builder_t``. The ! instance of this class will guide you through the whole process. Next few ! paragraphs will tell you more about this class. ! ------------------------- ! module_builder_t.__init__ ! ------------------------- ! ``module_builder_t.__init__`` methods takes few arguments: ! ! 1. files - list of all C++ source files, that declarations from them you want ! to export. ! ! ----------------------------- --- NEW FILE: tutorials.rest --- ========= tutorials ========= .. contents:: Table of contents ------------------- What is pyplusplus? ------------------- .. include:: ./../definition.rest ------------------- Graphical interface ------------------- `pyplusplus`_ includes a `graphical interface`_. `Graphical interface`_ is invoked with the ``pyplusplus_gui`` command, or with ``pyplusplus_gui.pyw`` in the scripts subdirectory of the `Python`_ installation directory. My advise to you is to start with `graphical interface`_, because: * you don't have to learn new API * few clicks with mouse and you have `boost.python`_ code for your file(s) * it is very easy to evaluate `pyplusplus`_ using it * you can check whether `GCC-XML`_ is able to compile your code or not * you can use it as a guide to `boost.python`_ library * you can use it as a wizard to `pyplusplus`_ package .. _`graphical interface` : ./pyplusplus_demo.png .. _`Graphical interface` : ./pyplusplus_demo.png --------------- Getting started --------------- I suppose you decided to do some coding with `pyplusplus`_. `Module builder`_ tutorials will help you. .. _`Module builder` : ./module_builder.html -------- Advanced -------- To be written. I think I should cover here the usage of code creators and code creator's tree. Meanwhile you can take a look on the content of ``examples/custom_code_creator`` directory. It contains example how to create your own code creator. To be more specific it exposes ``get*`` and ``set*`` methods as a property. .. _`pyplusplus` : ./pyplusplus.html .. _`pygccxml` : ./../pygccxml/pygccxml.html .. _`boost.python`: http://www.boost.org/libs/python/doc/index.html .. _`SourceForge`: http://sourceforge.net/index.php .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org .. Local Variables: mode: indented-text indent-tabs-mode: nil sentence-end-double-space: t fill-column: 70 End: --- NEW FILE: pyplusplus_demo.png --- (This appears to be a binary file; contents omitted.) |
From: Roman <rom...@us...> - 2006-04-09 05:17:54
|
Update of /cvsroot/pygccxml/source/pygccxml/unittests/data In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1480/pygccxml/unittests/data Modified Files: core_cache.hpp Log Message: I hope those are last big changes in the project to this release. Those changes give us an ability to create "setups" in one click cd release_manager python release_builder.py Enjoy Index: core_cache.hpp =================================================================== RCS file: /cvsroot/pygccxml/source/pygccxml/unittests/data/core_cache.hpp,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** core_cache.hpp 6 Apr 2006 06:39:54 -0000 1.52 --- core_cache.hpp 9 Apr 2006 05:17:13 -0000 1.53 *************** *** 24,26 **** ! //touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch \ No newline at end of file --- 24,26 ---- ! //touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch//touch \ No newline at end of file |
From: Roman <rom...@us...> - 2006-04-09 05:17:54
|
Update of /cvsroot/pygccxml/source/pyplusplus/docs/examples In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1480/pyplusplus/docs/examples Modified Files: examples.rest Log Message: I hope those are last big changes in the project to this release. Those changes give us an ability to create "setups" in one click cd release_manager python release_builder.py Enjoy Index: examples.rest =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/docs/examples/examples.rest,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** examples.rest 6 Apr 2006 06:15:59 -0000 1.4 --- examples.rest 9 Apr 2006 05:17:14 -0000 1.5 *************** *** 26,45 **** disappointed. ! ------------------- ! 3rd party libraries ! ------------------- ! There are of course "ready to run" examples: ! * unit tests ! ! * "custom_code_creator" - exports get\\set functions as class properties ! ! * `py_easybmp`_ - exports `EasyBMP`_ library ! ! * `py_date_time`_ - exports `boost.date_time`_ library. This example is most ! complex and complete one. ! .. _`GUI`: ./pyplusplus_demo.png .. _`boost.python`: http://www.boost.org/libs/python/doc/index.html .. _`pyplusplus` : ./../pyplusplus.html --- 26,51 ---- disappointed. ! ------- ! EasyBMP ! ------- ! `EasyBMP`_ is a small cross-platform library that provide you functionality ! needed to work with Windows bitmap (BMP) image files. I took me only few minutes ! to create Python bindings for the library. Read more `here`__. ! __ : ./easybmp/easybmp.html ! --------------- ! boost.date_time ! --------------- ! ! I thought that running unit tests is not enough. I wanted to check `pyplusplus`_ ! on big and complex projects. Also I wanted to check, whether it realy simple ! to create fully working Python bindings for such projects. The short answer it is ! not. The long answer is `here`__. ! ! __ : ./date_time/date_time.html ! ! .. _`GUI`: ./../tutorials/pyplusplus_demo.png .. _`boost.python`: http://www.boost.org/libs/python/doc/index.html .. _`pyplusplus` : ./../pyplusplus.html |
From: Roman <rom...@us...> - 2006-04-09 05:17:53
|
Update of /cvsroot/pygccxml/source/pyplusplus/gui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1480/pyplusplus/gui Modified Files: ui_runner.py Log Message: I hope those are last big changes in the project to this release. Those changes give us an ability to create "setups" in one click cd release_manager python release_builder.py Enjoy Index: ui_runner.py =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/gui/ui_runner.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ui_runner.py 6 Apr 2006 13:15:22 -0000 1.1 --- ui_runner.py 9 Apr 2006 05:17:15 -0000 1.2 *************** *** 1,2 **** --- 1,8 ---- + #! /usr/bin/python + # Copyright 2004 Roman Yakovenko. + # Distributed under the Boost Software License, Version 1.0. (See + # accompanying file LICENSE_1_0.txt or copy at + # http://www.boost.org/LICENSE_1_0.txt) + import os import sys *************** *** 5,7 **** import ui ! ui.show_demo() --- 11,14 ---- import ui ! if __name__ == '__main__': ! ui.show_demo() \ No newline at end of file |
From: Roman <rom...@us...> - 2006-04-09 05:17:49
|
Update of /cvsroot/pygccxml/source/pyplusplus In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1480/pyplusplus Modified Files: __init__.py Log Message: I hope those are last big changes in the project to this release. Those changes give us an ability to create "setups" in one click cd release_manager python release_builder.py Enjoy Index: __init__.py =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/__init__.py,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** __init__.py 9 Mar 2006 10:59:41 -0000 1.25 --- __init__.py 9 Apr 2006 05:17:14 -0000 1.26 *************** *** 37,44 **** L{file_writers} sub-package. - There is a high-level API which is currently work in progress and - which can be found in the L{pypp_api<experimental.pypp_api>} module. - - """ --- 37,40 ---- |
From: Roman <rom...@us...> - 2006-04-09 05:17:49
|
Update of /cvsroot/pygccxml/source/pygccxml/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1480/pygccxml/docs Modified Files: pygccxml.rest Added Files: declarations_uml.png parser_uml.png pygccxml_uml.vsd Removed Files: core_class_hierarchy.hpp core_class_hierarchy.hpp.xml declarations.png default.css example.py example_output.txt generate_docs.py parser.png pygccxml.vsd Log Message: I hope those are last big changes in the project to this release. Those changes give us an ability to create "setups" in one click cd release_manager python release_builder.py Enjoy --- parser.png DELETED --- --- example.py DELETED --- --- NEW FILE: pygccxml_uml.vsd --- (This appears to be a binary file; contents omitted.) --- generate_docs.py DELETED --- --- NEW FILE: parser_uml.png --- (This appears to be a binary file; contents omitted.) --- core_class_hierarchy.hpp.xml DELETED --- --- declarations.png DELETED --- --- core_class_hierarchy.hpp DELETED --- --- example_output.txt DELETED --- --- NEW FILE: declarations_uml.png --- (This appears to be a binary file; contents omitted.) --- pygccxml.vsd DELETED --- Index: pygccxml.rest =================================================================== RCS file: /cvsroot/pygccxml/source/pygccxml/docs/pygccxml.rest,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** pygccxml.rest 6 Apr 2006 06:15:57 -0000 1.6 --- pygccxml.rest 9 Apr 2006 05:16:31 -0000 1.7 *************** *** 37,50 **** ------------- First of all let's see a small and simple `example`_. This example prints all ! declarations found in the `core_class_hierarchy.hpp`_ file. Also, for instances ! that describe a C++ class it will print base and derived class names. This example ! is also interesting because it `shows`_ us how simple it is to find all base ! and derived classes. If someone is still curious how it looks "in the real ! life" he may look at the `original XML file`_ generated by `GCC-XML`_. ! .. _`original XML file` : ./core_class_hierarchy.hpp.xml ! .. _`core_class_hierarchy.hpp` : ./core_class_hierarchy.hpp ! .. _`shows` : ./example_output.txt ! .. _`example` : ./example.py I like it, but what else can you propose? --- 37,49 ---- ------------- First of all let's see a small and simple `example`_. This example prints all ! declarations found in the global namespace after `GCC-XML`_ has parsed ! `core_class_hierarchy.hpp`_ file. Also it prints all clasess, and for every class ! it will print it's base and derived classes. It was simple task, right? If you ! are still curious how it looks "in the real life", I mean how xml file ! is look like, you may look at the `original XML file`_ generated by `GCC-XML`_. ! .. _`original XML file` : ./example/core_class_hierarchy.hpp.xml ! .. _`core_class_hierarchy.hpp` : ./example/core_class_hierarchy.hpp ! .. _`example` : ./example/example.py I like it, but what else can you propose? *************** *** 317,322 **** .. _`Boost Software License`: http://boost.org/more/license_info.html .. _`Debian Linux`: http://www.debian.org ! .. _`UML diagram` : ./declarations.png ! .. _`Parser package` : ./parser.png .. _`ReleaseForge` : http://releaseforge.sourceforge.net .. _`boost::type_traits` : http://www.boost.org/libs/type_traits/index.html --- 316,321 ---- .. _`Boost Software License`: http://boost.org/more/license_info.html .. _`Debian Linux`: http://www.debian.org ! .. _`UML diagram` : ./declarations_uml.png ! .. _`Parser package` : ./parser_uml.png .. _`ReleaseForge` : http://releaseforge.sourceforge.net .. _`boost::type_traits` : http://www.boost.org/libs/type_traits/index.html --- default.css DELETED --- |
From: Roman <rom...@us...> - 2006-04-09 05:17:25
|
Update of /cvsroot/pygccxml/source/pyplusplus/module_creator In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1480/pyplusplus/module_creator Modified Files: creator.py Log Message: I hope those are last big changes in the project to this release. Those changes give us an ability to create "setups" in one click cd release_manager python release_builder.py Enjoy Index: creator.py =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/module_creator/creator.py,v retrieving revision 1.64 retrieving revision 1.65 diff -C2 -d -r1.64 -r1.65 *** creator.py 6 Apr 2006 06:16:09 -0000 1.64 --- creator.py 9 Apr 2006 05:17:15 -0000 1.65 *************** *** 13,16 **** --- 13,17 ---- #TODO: don't export functions that returns non const pointer to fundamental types + #TODO: add print decl_wrapper.readme messages class creator_t( declarations.decl_visitor_t ): |
From: Roman <rom...@us...> - 2006-04-09 05:17:25
|
Update of /cvsroot/pygccxml/source/pygccxml/docs/example In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1480/pygccxml/docs/example Added Files: core_class_hierarchy.hpp core_class_hierarchy.hpp.xml example.py www_configuration.py Log Message: I hope those are last big changes in the project to this release. Those changes give us an ability to create "setups" in one click cd release_manager python release_builder.py Enjoy --- NEW FILE: core_class_hierarchy.hpp --- // Copyright 2004 Roman Yakovenko. // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef __core_class_hierarchy_hpp__ #define __core_class_hierarchy_hpp__ //TODO("To add virtual inheritance case"); namespace core{ namespace class_hierarchy{ class base_t{ public: virtual ~base_t(){}; }; class other_base_t{ }; class derived_public_t : public base_t{ }; class derived_protected_t : protected base_t{ }; class derived_private_t : private base_t{ }; class multi_derived_t : derived_private_t, protected base_t, private other_base_t{ }; } } #endif//__core_class_hierarchy_hpp__ --- NEW FILE: example.py --- # Copyright 2004 Roman Yakovenko. # Distributed under the Boost Software License, Version 1.0. (See # accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) from pygccxml import parser from pygccxml import declarations #configure GCC-XML parser config = parser.config_t( gccxml_path=r'/home/roman/gccxml/bin/gccxml' ) #parsing source file global_ns = parser.parse( ['core_class_hierarchy.hpp'], config ) #printing all declarations found in file and its includes declarations.print_declarations( global_ns ) #selecting all classes all_decls = declarations.make_flatten( global_ns ) all_classes = filter( lambda decl: isinstance( decl, declarations.class_t ) , all_decls ) #print all base and derived class names for class_ in all_classes: print class_.name print '\tbases: ', `[base.related_class.name for base in class_.bases]` print '\tderived: ', `[derive.related_class.name for derive in class_.derived]` --- NEW FILE: www_configuration.py --- expose_to_web=False --- NEW FILE: core_class_hierarchy.hpp.xml --- <?xml version="1.0"?> <GCC_XML> <Namespace id="_1" name="::" members="_3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 " mangled="_Z2::"/> <Namespace id="_2" name="std" context="_1" members="" mangled="_Z3std"/> <Variable id="_3" name="_ZTIN4core15class_hierarchy15multi_derived_tE" type="_20c" context="_1" location="f0:30" file="f0" line="30" extern="1" artificial="1"/> <Variable id="_4" name="_ZTIN4core15class_hierarchy17derived_private_tE" type="_22c" context="_1" location="f0:27" file="f0" line="27" extern="1" artificial="1"/> <Variable id="_5" name="_ZTIN4core15class_hierarchy19derived_protected_tE" type="_22c" context="_1" location="f0:24" file="f0" line="24" extern="1" artificial="1"/> <Variable id="_6" name="_ZTIN4core15class_hierarchy16derived_public_tE" type="_24c" context="_1" location="f0:21" file="f0" line="21" extern="1" artificial="1"/> <Variable id="_7" name="_ZTIN4core15class_hierarchy6base_tE" type="_26c" context="_1" location="f0:13" file="f0" line="13" extern="1" artificial="1"/> <Function id="_8" name="__builtin_expect" returns="_28" context="_1" location="f1:15" file="f1" line="15" extern="1"> <Argument type="_28"/> <Argument type="_28"/> </Function> <Function id="_9" name="__builtin_prefetch" returns="_29" context="_1" location="f1:16" file="f1" line="16" extern="1"> <Argument type="_30"/> <Ellipsis/> </Function> <Function id="_10" name="__builtin_return" returns="_29" context="_1" location="f1:12" file="f1" line="12" extern="1" attributes="nothrow noreturn"> <Argument type="_31"/> </Function> <Function id="_11" name="__builtin_return_address" returns="_31" context="_1" location="f1:13" file="f1" line="13" extern="1"> <Argument type="_32"/> </Function> <Function id="_12" name="__builtin_frame_address" returns="_31" context="_1" location="f1:14" file="f1" line="14" extern="1"> <Argument type="_32"/> </Function> <Function id="_13" name="__builtin_nansl" returns="_33" context="_1" mangled="nansl" location="f1:22" file="f1" line="22" extern="1" attributes="nothrow const"> <Argument type="_34"/> </Function> <Function id="_14" name="__builtin_nansf" returns="_35" context="_1" mangled="nansf" location="f1:21" file="f1" line="21" extern="1" attributes="nothrow const"> <Argument type="_34"/> </Function> <Function id="_15" name="__builtin_nans" returns="_36" context="_1" mangled="nans" location="f1:20" file="f1" line="20" extern="1" attributes="nothrow const"> <Argument type="_34"/> </Function> <Function id="_16" name="__builtin_infl" returns="_33" context="_1" location="f1:19" file="f1" line="19" extern="1" attributes="nothrow const"/> <Function id="_17" name="__builtin_inff" returns="_35" context="_1" location="f1:18" file="f1" line="18" extern="1" attributes="nothrow const"/> <Function id="_18" name="__builtin_inf" returns="_36" context="_1" location="f1:17" file="f1" line="17" extern="1" attributes="nothrow const"/> <Namespace id="_19" name="core" context="_1" members="_37 " mangled="_Z4core"/> <Struct id="_20" name="__vmi_class_type_info_pseudo3" context="_1" mangled="29__vmi_class_type_info_pseudo3" location="f0:30" file="f0" line="30" members="_38 _39 _40 _41 " bases=""/> <CvQualifiedType id="_20c" type="_20" const="1"/> <Struct id="_22" name="__vmi_class_type_info_pseudo1" context="_1" mangled="29__vmi_class_type_info_pseudo1" location="f0:24" file="f0" line="24" members="_42 _43 _44 _45 " bases=""/> <CvQualifiedType id="_22c" type="_22" const="1"/> <Struct id="_24" name="__si_class_type_info_pseudo" context="_1" mangled="27__si_class_type_info_pseudo" location="f2:0" file="f2" line="0" members="" bases=""/> <CvQualifiedType id="_24c" type="_24" const="1"/> <Struct id="_26" name="__class_type_info_pseudo" context="_1" mangled="24__class_type_info_pseudo" location="f2:0" file="f2" line="0" members="" bases=""/> <CvQualifiedType id="_26c" type="_26" const="1"/> <FundamentalType id="_28" name="long int"/> <FundamentalType id="_29" name="void"/> <PointerType id="_30" type="_29c"/> <PointerType id="_31" type="_29"/> <FundamentalType id="_32" name="unsigned int"/> <FundamentalType id="_33" name="long double"/> <PointerType id="_34" type="_47c"/> <FundamentalType id="_35" name="float"/> <FundamentalType id="_36" name="double"/> <Namespace id="_37" name="class_hierarchy" context="_19" members="_49 _50 _51 _52 _53 _54 " mangled="_ZN4core15class_hierarchyE"/> <Field id="_38" name="" type="_55" context="_20" location="f0:30" file="f0" line="30"/> <Field id="_39" name="" type="_56" context="_20" location="f0:30" file="f0" line="30"/> <Field id="_40" name="" type="_56" context="_20" location="f0:30" file="f0" line="30"/> <Field id="_41" name="" type="_57" context="_20" location="f0:30" file="f0" line="30"/> <Field id="_42" name="" type="_55" context="_22" location="f0:24" file="f0" line="24"/> <Field id="_43" name="" type="_56" context="_22" location="f0:24" file="f0" line="24"/> <Field id="_44" name="" type="_56" context="_22" location="f0:24" file="f0" line="24"/> <Field id="_45" name="" type="_58" context="_22" location="f0:24" file="f0" line="24"/> <Class id="_49" name="multi_derived_t" context="_37" mangled="N4core15class_hierarchy15multi_derived_tE" location="f0:30" file="f0" line="30" members="_59 _60 _61 " bases="private:_50 protected:_54 private:_53 "/> <Class id="_50" name="derived_private_t" context="_37" mangled="N4core15class_hierarchy17derived_private_tE" location="f0:27" file="f0" line="27" members="_62 _63 _64 " bases="private:_54 "/> <Class id="_51" name="derived_protected_t" context="_37" mangled="N4core15class_hierarchy19derived_protected_tE" location="f0:24" file="f0" line="24" members="_65 _66 _67 " bases="protected:_54 "/> <Class id="_52" name="derived_public_t" context="_37" mangled="N4core15class_hierarchy16derived_public_tE" location="f0:21" file="f0" line="21" members="_68 _69 _70 " bases="_54 "/> <Class id="_53" name="other_base_t" context="_37" mangled="N4core15class_hierarchy12other_base_tE" location="f0:18" file="f0" line="18" members="_71 _72 " bases=""/> <Class id="_54" name="base_t" context="_37" mangled="N4core15class_hierarchy6base_tE" location="f0:13" file="f0" line="13" members="_73 _74 _75 " bases=""/> <Struct id="_55" name="__type_info_pseudo" context="_1" mangled="18__type_info_pseudo" location="f2:0" file="f2" line="0" members="" bases=""/> <FundamentalType id="_56" name="int"/> <ArrayType id="_57" min="0" max="3" type="_76"/> <ArrayType id="_58" min="0" max="1" type="_76"/> <Constructor id="_59" name="multi_derived_t" artificial="1" throw="" context="_49" mangled="_ZN4core15class_hierarchy15multi_derived_tC1ERKS1_ *INTERNAL* " location="f0:30" file="f0" line="30"> <Argument name="_ctor_arg" type="_77"/> </Constructor> <Constructor id="_60" name="multi_derived_t" artificial="1" throw="" context="_49" mangled="_ZN4core15class_hierarchy15multi_derived_tC1Ev *INTERNAL* " location="f0:30" file="f0" line="30"/> <Destructor id="_61" name="multi_derived_t" virtual="1" artificial="1" context="_49" mangled="_ZN4core15class_hierarchy15multi_derived_tD1Ev *INTERNAL* " location="f0:30" file="f0" line="30"> </Destructor> <Constructor id="_62" name="derived_private_t" artificial="1" throw="" context="_50" mangled="_ZN4core15class_hierarchy17derived_private_tC1ERKS1_ *INTERNAL* " location="f0:27" file="f0" line="27"> <Argument name="_ctor_arg" type="_78"/> </Constructor> <Constructor id="_63" name="derived_private_t" artificial="1" throw="" context="_50" mangled="_ZN4core15class_hierarchy17derived_private_tC1Ev *INTERNAL* " location="f0:27" file="f0" line="27"/> <Destructor id="_64" name="derived_private_t" virtual="1" artificial="1" context="_50" mangled="_ZN4core15class_hierarchy17derived_private_tD1Ev *INTERNAL* " location="f0:27" file="f0" line="27"> </Destructor> <Constructor id="_65" name="derived_protected_t" artificial="1" throw="" context="_51" mangled="_ZN4core15class_hierarchy19derived_protected_tC1ERKS1_ *INTERNAL* " location="f0:24" file="f0" line="24"> <Argument name="_ctor_arg" type="_79"/> </Constructor> <Constructor id="_66" name="derived_protected_t" artificial="1" throw="" context="_51" mangled="_ZN4core15class_hierarchy19derived_protected_tC1Ev *INTERNAL* " location="f0:24" file="f0" line="24"/> <Destructor id="_67" name="derived_protected_t" virtual="1" artificial="1" context="_51" mangled="_ZN4core15class_hierarchy19derived_protected_tD1Ev *INTERNAL* " location="f0:24" file="f0" line="24"> </Destructor> <Constructor id="_68" name="derived_public_t" artificial="1" throw="" context="_52" mangled="_ZN4core15class_hierarchy16derived_public_tC1ERKS1_ *INTERNAL* " location="f0:21" file="f0" line="21"> <Argument name="_ctor_arg" type="_80"/> </Constructor> <Constructor id="_69" name="derived_public_t" artificial="1" throw="" context="_52" mangled="_ZN4core15class_hierarchy16derived_public_tC1Ev *INTERNAL* " location="f0:21" file="f0" line="21"/> <Destructor id="_70" name="derived_public_t" virtual="1" artificial="1" context="_52" mangled="_ZN4core15class_hierarchy16derived_public_tD1Ev *INTERNAL* " location="f0:21" file="f0" line="21"> </Destructor> <Constructor id="_71" name="other_base_t" artificial="1" throw="" context="_53" mangled="_ZN4core15class_hierarchy12other_base_tC1ERKS1_ *INTERNAL* " location="f0:18" file="f0" line="18"> <Argument name="_ctor_arg" type="_81"/> </Constructor> <Constructor id="_72" name="other_base_t" artificial="1" throw="" context="_53" mangled="_ZN4core15class_hierarchy12other_base_tC1Ev *INTERNAL* " location="f0:18" file="f0" line="18"/> <Constructor id="_73" name="base_t" artificial="1" throw="" context="_54" mangled="_ZN4core15class_hierarchy6base_tC1ERKS1_ *INTERNAL* " location="f0:13" file="f0" line="13"> <Argument name="_ctor_arg" type="_82"/> </Constructor> <Constructor id="_74" name="base_t" artificial="1" throw="" context="_54" mangled="_ZN4core15class_hierarchy6base_tC1Ev *INTERNAL* " location="f0:13" file="f0" line="13"/> <Destructor id="_75" name="base_t" virtual="1" context="_54" mangled="_ZN4core15class_hierarchy6base_tD1Ev *INTERNAL* " location="f0:15" file="f0" line="15" endline="15"> </Destructor> <Struct id="_76" name="__base_class_type_info_pseudo" context="_1" mangled="29__base_class_type_info_pseudo" location="f2:0" file="f2" line="0" members="" bases=""/> <ReferenceType id="_77" type="_49c"/> <ReferenceType id="_78" type="_50c"/> <ReferenceType id="_79" type="_51c"/> <ReferenceType id="_80" type="_52c"/> <ReferenceType id="_81" type="_53c"/> <ReferenceType id="_82" type="_54c"/> <FundamentalType id="_47" name="char"/> <CvQualifiedType id="_47c" type="_47" const="1"/> <CvQualifiedType id="_29c" type="_29" const="1"/> <CvQualifiedType id="_54c" type="_54" const="1"/> <CvQualifiedType id="_53c" type="_53" const="1"/> <CvQualifiedType id="_52c" type="_52" const="1"/> <CvQualifiedType id="_51c" type="_51" const="1"/> <CvQualifiedType id="_50c" type="_50" const="1"/> <CvQualifiedType id="_49c" type="_49" const="1"/> <File id="f0" name="core_class_hierarchy.hpp"/> <File id="f1" name="/usr/local/share/gccxml-0.6/GCC/3.3/gccxml_builtins.h"/> <File id="f2" name="<internal>"/> </GCC_XML> |
Update of /cvsroot/pygccxml/source/release_manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1480/release_manager Added Files: clean_source_dir.py file_system_iter.py release_builder.py setup_pygccxml.py setup_pyplusplus.py sf-how-to.txt thanks_to.txt tools.txt Log Message: I hope those are last big changes in the project to this release. Those changes give us an ability to create "setups" in one click cd release_manager python release_builder.py Enjoy --- NEW FILE: tools.txt --- AdBlock Add Bookmark Here fireFTP LinkChecker Linky --- NEW FILE: clean_source_dir.py --- # Copyright 2004 Roman Yakovenko. # Distributed under the Boost Software License, Version 1.0. (See # accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) import os from file_system_iter import files_iterator, folders_iterator to_be_deleted_file_exts = [ '*.pyc' , '*.so' , '*.os' , '*.cpp~' , '*.hpp~' , '*.dll' , '*.obj' , '*.a' , '*.def' , '*.exp' , '*.lib' , '*.scons' , '*.bak' , '*.pdb' , '*.htm' , '*.idb' , '*.pdb' , '*.dat' , '*.ncb' ] to_be_deleted_files = [ '.sconsign' ] if __name__ == '__main__': sources_dir = os.path.join( os.path.abspath( os.curdir ), '..' ) for file in files_iterator( sources_dir, to_be_deleted_file_exts ): print 'removing : ', file os.remove( file ) for file in files_iterator( sources_dir ): if os.path.split( file )[1] in to_be_deleted_files: print 'removing : ', file os.remove( file ) --- NEW FILE: sf-how-to.txt --- How to load web pages on SF ? Phil Schwartz wrote: I will add it shortly. As for the SF website interface, perhaps I can help a bit. It took me some time to figure it out, but I've been a SF user for several years so I know a lot about their interface. Basically, you need to ssh into your shell acount on SF. The easiest way to do it is: $ ssh rom...@py... Once you're logged in (after supplying your password, of course). You can then cd to your website directory: $ cd /home/groups/p/py/pygccxml/htdocs You can verify the existence of your web directory as such: $ l -d /home/groups/p/py/pygccxml You can then simply edit the index.html page with your favorite editor (vi, emacs, pico, etc). Additionally, you can edit the files on your local system and use scp to transfer them to your project's homepage. This is the method that I use to update my websites (kodos, releaseforge, scratchy, denyhosts, faqtor, etc...). cd www scp * rom...@py...:/home/groups/p/py/pygccxml/htdocs --- NEW FILE: file_system_iter.py --- # Copyright 2004 Roman Yakovenko. # Distributed under the Boost Software License, Version 1.0. (See # accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) import os from types import * ##If you want include files that doesn't have extension then use filter like '*.' def _make_list( argument ): if type(argument) in StringTypes: if argument: return [argument] else: return [] elif type(argument) is ListType: return argument else: raise TypeError( 'Argument "%s" must be or list of strings or string.' % argument ) class base_files_iterator: def __init__(self, file_exts, is_include_exts = True): self.__file_exts = _make_list( file_exts ) self.__is_include_exts = is_include_exts def _is_to_skip(self, file_path): if not self.__file_exts: return 0 file_ext = os.path.splitext( file_path )[1] if not file_ext: file_ext = '.' + file_ext file_ext = '*' + file_ext if file_ext.lower() in self.__file_exts: return not self.__is_include_exts else: return self.__is_include_exts def _subfolders_and_files(self, folder_path): files, folders = [], [] folder_contents = os.listdir(folder_path) for object_name in folder_contents: object_path = os.path.join(folder_path, object_name) if os.path.isfile( object_path ) and not self._is_to_skip( object_path ): files.append( object_path ) elif os.path.isdir( object_path ): folders.append( object_path ) else: pass return folders, files def __iter__(self): raise NotImplementedError def next(self): raise NotImplementedError def restart(self): raise NotImplementedError class files_iterator_generator(base_files_iterator): def __init__(self, folders, file_ext_filter = '', is_include_filter = True, is_recursive = True): base_files_iterator.__init__(self, file_ext_filter, is_include_filter) self.__folders = _make_list( folders ) self.__is_recursive = is_recursive self.__file_generator = None def __walk(self): folders = self.__folders[:] while folders: sub_folders, files = self._subfolders_and_files( folders.pop(0) ) if self.__is_recursive: for folder in sub_folders: folders.append( folder ) for file_os in files: yield file_os def __iter__(self): self.__file_generator = self.__walk() return self def next(self): return self.__file_generator.next() def restart(self): self.__file_generator = None class folders_iterator_generator: def __init__(self, folders, is_recursive = 1): self.__folders = [] for root in _make_list( folders ): self.__folders.extend( self.__sub_folders( root ) ) self.__is_recursive = is_recursive self.__folder_generator = None def __sub_folders(self, folder_path): sub_folders = [] folder_contains = os.listdir(folder_path) for object_in_folder in folder_contains: full_path = os.path.join(folder_path, object_in_folder) if os.path.isdir( full_path ): sub_folders.append( full_path ) return sub_folders def __walk(self): folders = self.__folders[:] for curr_folder in folders: yield curr_folder if self.__is_recursive: for f in folders_iterator_generator( [curr_folder], True ): yield f def __iter__(self): self.__folder_generator = self.__walk() return self def next(self): return self.__folder_generator.next() def restart(self): self.__folder_generator = None #preserving backward computability names file_iter = files_iterator_generator folder_iter = folders_iterator_generator #new names files_iterator = files_iterator_generator folders_iterator = folders_iterator_generator if '__main__' == __name__: #lFileCount = 0 #for file_os in files_iterator( r'C:\Program Files\Microsoft Visual Studio\VC98\Include\stlport', ['*.h', '*.'], True, False): #print file_os #lFileCount += 1 #print lFileCount for folder in folders_iterator( '/home/roman/language-binding', False ): print folder for folder in folders_iterator( '/home/roman/language-binding', True ): print folder --- NEW FILE: release_builder.py --- # Copyright 2004 Roman Yakovenko. # Distributed under the Boost Software License, Version 1.0. (See # accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) import os import sys import shutil from sets import Set as set from file_system_iter import files_iterator, folders_iterator class release_builder_t( object ): def __init__( self ): object.__init__( self ) #source code root directory self.scroot_dir, curr_dir = os.path.split( os.path.abspath( os.curdir ) ) #This file should be run from release_manager directory if curr_dir != 'release_manager': raise RuntimeError( 'Current working directory should be release_manager' ) #next release root dir self.nrroot_dir = os.path.join( self.scroot_dir, '__next_release__' ) self.packages = {} for pkg in ('pygccxml', 'pyplusplus'): self.packages[ pkg ] = os.path.join( self.nrroot_dir , pkg + self.get_version( pkg ) ) def get_version( self, package_name ): init_file_path = os.path.join( self.scroot_dir, package_name, '__init__.py' ) init_file = file( init_file_path ) for line in init_file: if line.startswith( '__version__' ): version = line.split( '=' )[1] return version.strip().strip("'") raise RuntimeError( "Unable to find version for package %s!" % package_name ) def log( self, message ): print '[release builder]', message #def run_unitests( self ): #self.log( 'running unittests' ) #for package in self.__packages: #self.log( 'running unittests for package "%s"' % package.__name__ ) #sys_snapshot = self.__take_sys_snapshot() #sys.path.append( os.path.join( package.__path__[0], 'unittests' ) ) #test_all = __import__( 'test_all' ) #was_successful = test_all.run_suite() #self.__restore_sys_snapshot( sys_snapshot ) #if not was_successful: #raise RuntimeError( '%s unittest failed' % package.__name__) #self.log( 'running unittests - done' ) def create_dist_packages( self ): self.log( 'creating next release directory "%s" ' % self.nrroot_dir ) if os.path.exists( self.nrroot_dir ): shutil.rmtree( self.nrroot_dir ) os.mkdir( self.nrroot_dir ) map( os.mkdir, self.packages.values() ) for pkg, pkg_nr_dir in self.packages.items(): self.log( 'creating target directory for package "%s"' % pkg ) shutil.copy( os.path.join( self.scroot_dir, 'release_manager', 'setup_%s.py' % pkg ) , os.path.join( pkg_nr_dir, 'setup.py' ) ) pkg_nr_sc_dir = os.path.join( pkg_nr_dir, pkg ) shutil.copytree( os.path.join( self.scroot_dir, pkg ), pkg_nr_sc_dir ) pkg_nr_docs_dir = os.path.join( pkg_nr_dir, 'docs' ) shutil.copytree( os.path.join( self.scroot_dir, pkg, 'docs' ), pkg_nr_docs_dir ) shutil.rmtree( os.path.join( pkg_nr_sc_dir, 'docs' ) ) shutil.move( os.path.join( pkg_nr_sc_dir, 'unittests' ) , os.path.join( pkg_nr_dir, 'unittests' ) ) if pkg == 'pyplusplus': shutil.move( os.path.join( pkg_nr_sc_dir, 'examples' ) , os.path.join( pkg_nr_dir, 'examples' ) ) shutil.rmtree( os.path.join( pkg_nr_sc_dir, 'experimental' ) ) shutil.rmtree( os.path.join( pkg_nr_docs_dir, 'ConferenceIsrael2006' ) ) shutil.rmtree( os.path.join( pkg_nr_dir, 'examples', 'tnfox' ) ) self.log( 'removing special directories') def generate_docs(self): self.log( 'generating documentation' ) options = [ '--output "%(output)s"' , '--docformat epytext' , '--url http://www.language-binding.net' , '--name %(name)s' , ' %(packages)s' ] cmd_line = "epydoc " + ' '.join( options ) os.system(cmd_line % { 'output' : os.path.join( self.packages['pygccxml'], 'docs', 'auto_docs' ) , 'name' : 'pygccxml' , 'packages' : os.path.join( self.packages['pygccxml'], 'pygccxml' ) } ) os.system(cmd_line % { 'output' : os.path.join( self.packages['pyplusplus'], 'docs', 'auto_docs' ) , 'name' : 'pyplusplus' , 'packages' : ' '.join( [os.path.join( self.packages['pygccxml'], 'pygccxml' ) , os.path.join( self.packages['pyplusplus'], 'pyplusplus' ) ] ) } ) self.log( 'generating documentation - done' ) def clean_directories(self): dir_names = [ 'cvs', 'temp', 'debug', 'release' ] file_exts = [ '*.pyc', '*.so', '*.os', '*.cpp~', '*.hpp~', '*.dll', '*.obj', '*.a' , '*.def', '*.vsd', '*.sxd', '*.exp', '*.lib', '*.scons', '*.bak' , '*.pdb', '*.idb', '*.pdb', '*.dat', '*.ncb', '*.suo' ] files = [ '.sconsign', 'place_holder', 'www_configuration.py' ] self.log( 'creaning target directory' ) self.log( 'removing special directories') tmp = [] for dir_ in folders_iterator( self.nrroot_dir ): if os.path.split( dir_ )[1].lower() in dir_names: tmp.append( dir_ ) tmp.sort() tmp.reverse() map( shutil.rmtree, tmp ) self.log( 'removing special directories - done') self.log( 'removing special files') map( os.remove, files_iterator( self.nrroot_dir, file_exts ) ) for file_ in files_iterator( self.nrroot_dir ): if os.path.split( file_ )[1] in files: os.remove( file_ ) self.log( 'removing special files - done') self.log( 'creaning target directory - done' ) if __name__ == "__main__": rb = release_builder_t() #srb.run_unitests() rb.create_dist_packages() rb.generate_docs() rb.clean_directories() --- NEW FILE: thanks_to.txt --- Yulia - my wife for patience Brad King - the author of GCCXML Thomas Heller - good SAX example Detlev Offenbach - eric3 - Python IDE --- NEW FILE: setup_pygccxml.py --- # Copyright 2004 Roman Yakovenko. # Distributed under the Boost Software License, Version 1.0. (See # accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) import os from distutils import sysconfig from distutils.core import setup setup( name="pygccxml" , description="GCC-XML generated file reader" , author="Roman Yakovenko" , packages=[ 'pygccxml' , 'pygccxml.declarations' , 'pygccxml.parser' , 'pygccxml.utils' ] ) --- NEW FILE: setup_pyplusplus.py --- # Copyright 2004 Roman Yakovenko. # Distributed under the Boost Software License, Version 1.0. (See # accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) import os from distutils import sysconfig from distutils.core import setup setup( name="pyplusplus" , description="pyplusplus is a framework of components for creating C++ code generator for boost.python library" , author="Roman Yakovenko" , author_email="rom...@gm..." , url='http://pyplusplus.sourceforge.net' , scripts=os.listdir( os.path.join( 'pyplusplus', 'scripts' ) ) , packages=[ 'pyplusplus' , 'pyplusplus.gui' , 'pyplusplus.file_writers' , 'pyplusplus.code_creators' , 'pyplusplus.module_creator' , 'pyplusplus.code_repository' , 'pyplusplus.decl_wrappers' , 'pyplusplus.module_builder' , 'pyplusplus.utils' , 'pyplusplus._logging_'] ) |
Update of /cvsroot/pygccxml/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1480 Removed Files: clean_source_dir.py file_system_iter.py release_builder.py setup_pygccxml.py setup_pyplusplus.py sf-how-to.txt thanks_to.txt tools.txt Log Message: I hope those are last big changes in the project to this release. Those changes give us an ability to create "setups" in one click cd release_manager python release_builder.py Enjoy --- tools.txt DELETED --- --- clean_source_dir.py DELETED --- --- sf-how-to.txt DELETED --- --- file_system_iter.py DELETED --- --- release_builder.py DELETED --- --- thanks_to.txt DELETED --- --- setup_pygccxml.py DELETED --- --- setup_pyplusplus.py DELETED --- |
From: Roman <rom...@us...> - 2006-04-09 05:11:59
|
Update of /cvsroot/pygccxml/source/pygccxml/docs/example In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31959/example Log Message: Directory /cvsroot/pygccxml/source/pygccxml/docs/example added to the repository |
From: Roman <rom...@us...> - 2006-04-09 05:11:48
|
Update of /cvsroot/pygccxml/source/release_manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31898/release_manager Log Message: Directory /cvsroot/pygccxml/source/release_manager added to the repository |
From: Roman <rom...@us...> - 2006-04-06 17:44:53
|
Update of /cvsroot/pygccxml/source/pyplusplus/examples/tutorials In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19394/pyplusplus/examples/tutorials Modified Files: generate_code.py hello_world.hpp Log Message: 1. adding scripts to run py++ gui from command line 2. updating pyplusplus introduction Index: hello_world.hpp =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/examples/tutorials/hello_world.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** hello_world.hpp 6 Apr 2006 06:16:08 -0000 1.2 --- hello_world.hpp 6 Apr 2006 17:44:46 -0000 1.3 *************** *** 4,7 **** --- 4,13 ---- // http://www.boost.org/LICENSE_1_0.txt) + /****************************************************************************************** + * * + * ANY CHANGE IN THIS FILE MUST BE REFLECTED IN docs/tutorials DIRECTORY * + * * + *****************************************************************************************/ + #ifndef __hello_world_hpp__ #define __hello_world_hpp__ Index: generate_code.py =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/examples/tutorials/generate_code.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** generate_code.py 6 Apr 2006 06:29:37 -0000 1.1 --- generate_code.py 6 Apr 2006 17:44:46 -0000 1.2 *************** *** 5,8 **** --- 5,14 ---- # http://www.boost.org/LICENSE_1_0.txt) + ############################################################################# + ## # + ## ANY CHANGE IN THIS FILE MUST BE REFLECTED IN docs/tutorials DIRECTORY # + ## # + ############################################################################# + import os from environment import settings |
From: Roman <rom...@us...> - 2006-04-06 17:44:52
|
Update of /cvsroot/pygccxml/source/pyplusplus/docs/tutorials In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19394/pyplusplus/docs/tutorials Modified Files: www_configuration.py Log Message: 1. adding scripts to run py++ gui from command line 2. updating pyplusplus introduction Index: www_configuration.py =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/docs/tutorials/www_configuration.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** www_configuration.py 6 Apr 2006 06:20:06 -0000 1.1 --- www_configuration.py 6 Apr 2006 17:44:46 -0000 1.2 *************** *** 1,2 **** ! name = 'tutorials' ! main_html_file = 'module_builder.html' \ No newline at end of file --- 1 ---- ! name = 'tutorials' \ No newline at end of file |
From: Roman <rom...@us...> - 2006-04-06 17:44:51
|
Update of /cvsroot/pygccxml/source/pyplusplus/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19394/pyplusplus/scripts Added Files: pyplusplus_gui pyplusplus_gui.pyw Log Message: 1. adding scripts to run py++ gui from command line 2. updating pyplusplus introduction --- NEW FILE: pyplusplus_gui --- #!/usr/bin/python # # Call the graphical interface for pyplusplus. # # Copyright 2004 Roman Yakovenko. # Distributed under the Boost Software License, Version 1.0. (See # accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) from pyplusplus.gui import show_demo show_demo() --- NEW FILE: pyplusplus_gui.pyw --- #!/usr/bin/python # # Call the graphical interface for pyplusplus. # # Copyright 2004 Roman Yakovenko. # Distributed under the Boost Software License, Version 1.0. (See # accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) from pyplusplus.gui import show_demo show_demo() |
From: Roman <rom...@us...> - 2006-04-06 17:44:51
|
Update of /cvsroot/pygccxml/source/pyplusplus/examples/tnfox In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19394/pyplusplus/examples/tnfox Modified Files: environment.py Log Message: 1. adding scripts to run py++ gui from command line 2. updating pyplusplus introduction Index: environment.py =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/examples/tnfox/environment.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** environment.py 6 Apr 2006 06:16:07 -0000 1.6 --- environment.py 6 Apr 2006 17:44:46 -0000 1.7 *************** *** 30,34 **** , "FOXPYTHONDLL"] # For debugging purposes to get far smaller bindings, you can define FX_DISABLEGUI ! defined_symbols.append("FX_DISABLEGUI=1") if 'big'==sys.byteorder: --- 30,34 ---- , "FOXPYTHONDLL"] # For debugging purposes to get far smaller bindings, you can define FX_DISABLEGUI ! #defined_symbols.append("FX_DISABLEGUI=1") if 'big'==sys.byteorder: |
From: Roman <rom...@us...> - 2006-04-06 17:44:51
|
Update of /cvsroot/pygccxml/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19394 Modified Files: setup_pyplusplus.py Log Message: 1. adding scripts to run py++ gui from command line 2. updating pyplusplus introduction Index: setup_pyplusplus.py =================================================================== RCS file: /cvsroot/pygccxml/source/setup_pyplusplus.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** setup_pyplusplus.py 6 Apr 2006 06:20:06 -0000 1.9 --- setup_pyplusplus.py 6 Apr 2006 17:44:47 -0000 1.10 *************** *** 13,16 **** --- 13,17 ---- , author_email="rom...@gm..." , url='http://pyplusplus.sourceforge.net' + , scripts=os.listdir( os.path.join( 'pyplusplus', 'scripts' ) ) , packages=[ 'pyplusplus' , 'pyplusplus.gui' |
From: Roman <rom...@us...> - 2006-04-06 17:44:50
|
Update of /cvsroot/pygccxml/source/pyplusplus/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19394/pyplusplus/docs Modified Files: pyplusplus.rest Log Message: 1. adding scripts to run py++ gui from command line 2. updating pyplusplus introduction Index: pyplusplus.rest =================================================================== RCS file: /cvsroot/pygccxml/source/pyplusplus/docs/pyplusplus.rest,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** pyplusplus.rest 6 Apr 2006 12:34:45 -0000 1.6 --- pyplusplus.rest 6 Apr 2006 17:44:46 -0000 1.7 *************** *** 17,21 **** This introduction will describe code generation process using `pyplusplus`_. I hope, that after you finished to read it, you will understand how powerful ! `pyplusplus`_. ----------------------- --- 17,21 ---- This introduction will describe code generation process using `pyplusplus`_. I hope, that after you finished to read it, you will understand how powerful ! `pyplusplus`_ is. ----------------------- *************** *** 24,40 **** `boost.python`_ library allows you to expose C++ code to `Python`_ in quick and ! elegant way. Almost the whole process of exposing declarations can be automated. ! Lets see the code generation process definition: ! ! .. image:: ./code_generation_process.png ! ! ! Next few paragraphs will explain more about every step. *"read declarations"* --------------------- ! `pyplusplus`_ uses `pygccxml`_ to read all declaration from source files. *"build module"* --- 24,46 ---- `boost.python`_ library allows you to expose C++ code to `Python`_ in quick and ! elegant way. Almost the whole process of exposing declarations can be automated ! by use of `pyplusplus`_. Code generation process, using `pyplusplus`_ consists ! from few steps. Next paragraphs will tell you more about every step. *"read declarations"* --------------------- ! `pyplusplus`_ does not reinvent the wheel. `pyplusplus`_ uses 'GCC C++ compiler`_ ! to parse C++ source files. To be more precision, the tool chain looks like this: + 1. source code is passed to `GCC-XML`_ + 2. `GCC-XML`_ passes it to 'GCC C++ compiler`_ + 3. `GCC-XML`_ generates an XML description of a C++ program from GCC's internal + representation. + 4. `pyplusplus`_ uses `pygccxml`_ package to read `GCC-XML`_ generated file. + + In short, you can be sure, that all your declarations are read correctly. + + .. _`GCC C++ compiler` : http://www.gnu.org/software/gcc *"build module"* *************** *** 46,53 **** 1. which declarations should be exported ! 2. how this specific declaration should be exported ! Of course `pyplusplus`_ can not answer those question, but it provides maximum ! help for you to implement an user requirements. How can `pyplusplus`_ help you with first question? `pyplusplus`_ provides very --- 52,61 ---- 1. which declarations should be exported ! 2. how this specific declaration should be exported or, if I change a little ! a question, what code should be written in order I get access from Python ! to that functionality ! Of course, `pyplusplus`_ can not answer those question, but it provides maximum ! help to implement an user requirements. How can `pyplusplus`_ help you with first question? `pyplusplus`_ provides very *************** *** 55,59 **** For example in one line of code you can select all free functions that have ! two arguments, where first one is ``int &`` and second one is any: :: --- 63,68 ---- For example in one line of code you can select all free functions that have ! two arguments, where the first argument has type ``int &`` and the type of the ! second argument is any: :: |
From: Roman <rom...@us...> - 2006-04-06 17:42:59
|
Update of /cvsroot/pygccxml/source/pyplusplus/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17957/scripts Log Message: Directory /cvsroot/pygccxml/source/pyplusplus/scripts added to the repository |
From: Roman <rom...@us...> - 2006-04-06 17:10:12
|
Update of /cvsroot/pygccxml/source/pyplusplus/docs/examples In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27022/pyplusplus/docs/examples Removed Files: pyplusplus_demo.png Log Message: removing old screenshot --- pyplusplus_demo.png DELETED --- |