Thread: [pygccxml-commit] SF.net SVN: pygccxml:[1393] pyplusplus_dev/docs
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2008-08-14 07:31:27
|
Revision: 1393 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1393&view=rev Author: roman_yakovenko Date: 2008-08-14 07:31:30 +0000 (Thu, 14 Aug 2008) Log Message: ----------- documentation changes: replace "next" with "the following" Modified Paths: -------------- index.rest pygccxml_dev/docs/design.rest pygccxml_dev/docs/download.rest pygccxml_dev/docs/pygccxml.rest pygccxml_dev/docs/query_interface.rest pygccxml_dev/docs/upgrade_issues.rest pyplusplus_dev/docs/comparisons/pyste.rest pyplusplus_dev/docs/documentation/architecture.rest pyplusplus_dev/docs/documentation/containers.rest pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest pyplusplus_dev/docs/documentation/ctypes/unions.rest pyplusplus_dev/docs/documentation/functions/call_policies.rest pyplusplus_dev/docs/documentation/functions/default_args.rest pyplusplus_dev/docs/documentation/functions/overloading.rest pyplusplus_dev/docs/documentation/functions/registration_order.rest pyplusplus_dev/docs/documentation/functions/transformation/inout.rest pyplusplus_dev/docs/documentation/functions/transformation/input.rest pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest pyplusplus_dev/docs/documentation/functions/transformation/name_mangling.rest pyplusplus_dev/docs/documentation/functions/transformation/output.rest pyplusplus_dev/docs/documentation/functions/transformation/output_static_array.rest pyplusplus_dev/docs/documentation/functions/transformation/transfer_ownership.rest pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest pyplusplus_dev/docs/documentation/how_to/absolute_relative_paths.rest pyplusplus_dev/docs/documentation/how_to/best_practices.rest pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest pyplusplus_dev/docs/documentation/how_to/templates.rest pyplusplus_dev/docs/documentation/inserting_code.rest pyplusplus_dev/docs/documentation/multi_module_development.rest pyplusplus_dev/docs/documentation/properties.rest pyplusplus_dev/docs/documentation/split_module.rest pyplusplus_dev/docs/documentation/warnings.rest pyplusplus_dev/docs/download.rest pyplusplus_dev/docs/examples/boost/boost.rest pyplusplus_dev/docs/history/history.rest pyplusplus_dev/docs/peps/dsl_challenge.rest pyplusplus_dev/docs/pyplusplus.rest pyplusplus_dev/docs/quotes.rest pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/easy_extending_guide.rest pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.rest Modified: index.rest =================================================================== --- index.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ index.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -38,7 +38,7 @@ --------------- `Boost`_ provides free peer-reviewed portable C++ source libraries. `pyboost`_ -package export next libraries to Python: +package export the following libraries to Python: * `Boost.Date_Time`_ - date time library designed to provide a basis for performing efficient time calculations Modified: pygccxml_dev/docs/design.rest =================================================================== --- pygccxml_dev/docs/design.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pygccxml_dev/docs/design.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -184,7 +184,7 @@ ``file_configuration_t`` - a class, that contains some data and description how -to treat the data. ``file_configuration_t`` can contain reference to the next types +to treat the data. ``file_configuration_t`` can contain reference to the the following types of data: (1) path to C++ source file Modified: pygccxml_dev/docs/download.rest =================================================================== --- pygccxml_dev/docs/download.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pygccxml_dev/docs/download.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -58,7 +58,7 @@ pygccxml -------- In command prompt or shell change current directory to be "pygccxml-X.Y.Z". -"X.Y.Z" is version of `pygccxml`_. Type next command: +"X.Y.Z" is version of `pygccxml`_. Type the following command: | ``python setup.py install`` Modified: pygccxml_dev/docs/pygccxml.rest =================================================================== --- pygccxml_dev/docs/pygccxml.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pygccxml_dev/docs/pygccxml.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -39,7 +39,7 @@ Query interface --------------- `pygccxml`_ provides simple and powerful API to query declarations tree. How many -lines is needed to write next query? +lines is needed to write the following query? :: select all free functions from the project Modified: pygccxml_dev/docs/query_interface.rest =================================================================== --- pygccxml_dev/docs/query_interface.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pygccxml_dev/docs/query_interface.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -38,7 +38,7 @@ User interface -------------- -As you already know, ``pygccxml.declarations`` package defines next classes: +As you already know, ``pygccxml.declarations`` package defines the following classes: * ``scopedef_t`` - base class for all classes, that can contain other declarations @@ -205,7 +205,7 @@ }; ``clone`` member function `call policies`_ is ``return_value_policy<manage_new_object>()``. -Next code applies the `call policies`_ on all ``clone`` member functions within the +The following code applies the `call policies`_ on all ``clone`` member functions within the project: .. code-block:: Python @@ -216,7 +216,7 @@ Another example, from `Py++`_ project. Sometimes it is desirable to -exclude declaration, from being exported to Python. Next code will exclude +exclude declaration, from being exported to Python. The following code will exclude ``clone`` member function from being exported: .. code-block:: Python @@ -226,7 +226,7 @@ As you can see this class allows you to write less code. Basically using this class you don't have to write loops. If will do it for you. Also if you insist to write loops, ``mdecl_wrapper_t`` class implements ``__len__``, ``__getitem__`` -and ``__iter__`` methods. So you can write next code: +and ``__iter__`` methods. So you can write the following code: .. code-block:: Python Modified: pygccxml_dev/docs/upgrade_issues.rest =================================================================== --- pygccxml_dev/docs/upgrade_issues.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pygccxml_dev/docs/upgrade_issues.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -99,7 +99,7 @@ ------------------------------------------ Both versions of GCC-XML have a few issues, related to default arguments. GCC-XML 0.9 -fixes some issues, but introduces another ones. Take a look on next examples: +fixes some issues, but introduces another ones. Take a look on the following examples: * .. code-block:: C++ @@ -209,7 +209,7 @@ GCC-XML 0.9 mangles names different than the previous one. This change is the most dramatic one, because it may require from you to change the code. -Consider next C++ code: +Consider the following C++ code: .. code-block:: C++ Modified: pyplusplus_dev/docs/comparisons/pyste.rest =================================================================== --- pyplusplus_dev/docs/comparisons/pyste.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/comparisons/pyste.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -198,9 +198,9 @@ void do_smth(expensive_to_copy* x, const expensive_to_copy& y){ - //Pyste generates next code + //Pyste generates the following code //call_method< void >(self, "do_smth", x, y); - //Py++ generates next code + //Py++ generates the following code *this->get_override("do_smth")( boost::python::ptr(x), boost::ref(y) ); //------------------------------^^^^^^^^^^^^^^^^^^-----^^^^^^^^^^ } @@ -290,7 +290,7 @@ Features list ------------- `Py++`_ supports almost all features `Pyste`_ implements. `Py++`_, -version 0.8.0, does not implements next functionality, implemented by `Pyste`_: +version 0.8.0, does not implements the following functionality, implemented by `Pyste`_: * *pow* operator @@ -324,7 +324,7 @@ ------------------ Both `Pyste`_ and `Py++`_ generate working code. As we already saw in some -cases `Py++`_ do better job. `Py++`_ allows next customization on +cases `Py++`_ do better job. `Py++`_ allows the following customization on generated code: * To define std and user directories. *include_t* code creator will take @@ -409,7 +409,7 @@ This comparison was a little unfair. First of all `Pyste`_ is no more under active development\\support. Second, `Pyste`_ has been written 2 years ago and -had different goal. Next definitions will help you to understand the main +had different goal. The following definitions will help you to understand the main difference between `Pyste`_ and `Py++`_. `Pyste`_ Modified: pyplusplus_dev/docs/documentation/architecture.rest =================================================================== --- pyplusplus_dev/docs/documentation/architecture.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/architecture.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -26,7 +26,7 @@ On the earlier stage of the development, I realized, that all this functionality does not belong to code generator and should be implemented out side of it. `pygccxml`_ project was born. `pygccxml`_ made the code generator to be smaller -and C++ parser independent. It provides next services: +and C++ parser independent. It provides the following services: * definition of classes, that describe C++ declaration and types, and their analyzers ( type traits ) @@ -82,7 +82,7 @@ wrapping or hiding the API will not provide an additional value. The interface of all those services is pretty simple and well polished. -Before I explain how these services are integrated, take a look on next source +Before I explain how these services are integrated, take a look on the following source code: .. code-block:: Python @@ -111,7 +111,7 @@ good, it makes a lot of sense to configure the code generation engine, using the declarations tree. How does `Py++`_ add missing functionality to ``pygccxml.declarations`` classes? There were few possible solutions to the -problem. The next one was implemented: +problem. The following one was implemented: 1. ``pygccxml.parser`` package interface was extended. Instead of creating a concrete instance of declaration classes, ``pygccxml.parser`` package uses @@ -129,7 +129,7 @@ * the functionality provided by ``pygccxml.declarations`` and ``pygccxml.parser`` packages is available for ``pyplusplus.decl_wrappers`` classes -* classes defined in ``pyplusplus.decl_wrappers`` package implement next +* classes defined in ``pyplusplus.decl_wrappers`` package implement the following functionality: * setting reasonable defaults for the code generation engine( call policies, @@ -161,7 +161,7 @@ ----------------- Do you know how many ways exist to export member function? If you will try to -answer the question, consider next function characteristics and their mix: +answer the question, consider the following function characteristics and their mix: * virtuality( non virtual, virtual or pure virtual ) @@ -243,7 +243,7 @@ ~~~~~~~~~~~~~~~~~~~~~~ ``code_creators.module_t`` class is a top level ``code creator``. Take a look on -next possible "snapshot" of the ``code creators tree``: +the following possible "snapshot" of the ``code creators tree``: :: @@ -296,7 +296,7 @@ ---------------- ``File writers`` classes are responsible for writing ``code creators tree`` into -the files. `Py++`_ implements next strategies of writing ``code creators tree`` +the files. `Py++`_ implements the following strategies of writing ``code creators tree`` into files: * single file Modified: pyplusplus_dev/docs/documentation/containers.rest =================================================================== --- pyplusplus_dev/docs/documentation/containers.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/containers.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -40,7 +40,7 @@ `Boost.Python`_ mailing list or `documentation`_ for the new indexing suite. -Now, I am sure you have next question: if this suite is so good, why it is not +Now, I am sure you have the following question: if this suite is so good, why it is not in the main branch? The short answer is that this suite has some problems on MSVC 6.0 compiler and there are few users, that still use that compiler. The long answer is here: @@ -77,7 +77,7 @@ ------------------- By default, `Py++`_ works with built-in indexing suite. If you want to use -next version of indexing suite, you should tell this to the ``module_builder_t.__init__`` +indexing suite version 2, you should tell this to the ``module_builder_t.__init__`` method: .. code-block:: Python @@ -102,7 +102,7 @@ `Py++`_ defines ``indexing_suite1_t`` class. This class allows configure any detail of generated code: -* ``no_proxy`` - a boolean, if ``value_type`` is one of the next types +* ``no_proxy`` - a boolean, if ``value_type`` is one of the the following types * fundamental type @@ -119,11 +119,11 @@ * ``element_type`` - is a reference to container ``value_type`` or ``mapped_type``. -Next version of indexing suite API +Indexing suite version 2 API ---------------------------------- In this case there is no single place, where you can configure exported container -functionality. Please take a look on next C++ code: +functionality. Please take a look on the following C++ code: .. code-block:: C++ Modified: pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -77,7 +77,7 @@ ----------------- The functionality is going to be developed father and I intend to add -next features: +the following features: * to port this functionality to 64bit systems Modified: pyplusplus_dev/docs/documentation/ctypes/unions.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/unions.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/ctypes/unions.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -20,7 +20,7 @@ Example -------- -For this example I am going to use next code: +For this example I am going to use the following code: .. code-block:: C++ Modified: pyplusplus_dev/docs/documentation/functions/call_policies.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/call_policies.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -432,7 +432,7 @@ `Boost.Python`_ call policies are stateless classes, which do not care any information about the invoked function or object. In out case we have to pass -next information: +dependency_libraries information: * the size of array @@ -451,7 +451,7 @@ * default constructor -* call operator with next signature: +* call operator with the following signature: .. code-block:: C++ @@ -462,7 +462,7 @@ Pay attention: this operator will be invoked **after** the function. This call policy is **not thread-safe**! -For our case, next class could be defined: +For our case, the following class could be defined: .. code-block:: C++ @@ -490,7 +490,7 @@ ... }; -Next "get size" class treats this situation: +The following "get size" class treats this situation: .. code-block:: C++ Modified: pyplusplus_dev/docs/documentation/functions/default_args.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/default_args.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/default_args.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -9,7 +9,7 @@ ------------ There is more than one way to export function with default arguments. Before we -proceed, please take a look on next class: +proceed, please take a look on the following class: .. code-block:: C++ Modified: pyplusplus_dev/docs/documentation/functions/overloading.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/overloading.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/overloading.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -11,7 +11,7 @@ Things get a little bit complex, when you have to export overloaded functions. In general the solution is to explicitly say to compiler what function you want to export, by specifying its type. Before we proceed, please take a look -on next class: +on the following class: .. code-block:: C++ @@ -76,11 +76,11 @@ Overloaded template function ---------------------------- -I am sure you already know next fact, but still I want to remind it: +I am sure you already know the following fact, but still I want to remind it: * `GCC-XML`_ doesn't report about un-instantiated templates -It is very important to understand it. Lets take a look on next source code: +It is very important to understand it. Lets take a look on the following source code: .. code-block:: C++ Modified: pyplusplus_dev/docs/documentation/functions/registration_order.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/registration_order.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/registration_order.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -64,7 +64,7 @@ Registration order pitfalls --------------------------- -Do you want to guess what is the output of the next program: +Do you want to guess what is the output of the following program: .. code-block:: Python Modified: pyplusplus_dev/docs/documentation/functions/transformation/inout.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/inout.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/transformation/inout.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -34,7 +34,7 @@ Lets say that you need to expose ``hello_world`` function. As you know ``std::string`` is mapped to `Python`_ string, which is immutable type, so you -have to create small wrapper for the function. Next `Py++`_ code does it for you: +have to create small wrapper for the function. The following `Py++`_ code does it for you: .. code-block:: Python Modified: pyplusplus_dev/docs/documentation/functions/transformation/input.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/input.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/transformation/input.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -28,7 +28,7 @@ Lets say that you need to expose ``hello_world`` function. As you know ``std::string`` is mapped to `Python`_ string, which is immutable type, so you -have to create small wrapper for the function. Next `Py++`_ code does it for you: +have to create small wrapper for the function. The following `Py++`_ code does it for you: .. code-block:: Python Modified: pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -26,8 +26,8 @@ void write( char* buffer, int size ) const; }; -In order to expose ``write`` member function we need to create small wrapper: -Next `Py++`_ code does it for you: +In order to expose ``write`` member function we need to create small wrapper. +The following `Py++`_ code does it for you: .. code-block:: Python Modified: pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -34,7 +34,7 @@ }; In order to expose ``init`` member function we need to create small wrapper: -Next `Py++`_ code does it for you: +The following `Py++`_ code does it for you: .. code-block:: Python Modified: pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -38,7 +38,7 @@ Lets say that you need to expose ``hello_world`` function. As you know ``std::string`` is mapped to `Python`_ string, which is immutable type, so you -have to create small wrapper for the function. Next `Py++`_ code does it for you: +have to create small wrapper for the function. The following `Py++`_ code does it for you: .. code-block:: Python Modified: pyplusplus_dev/docs/documentation/functions/transformation/name_mangling.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/name_mangling.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/transformation/name_mangling.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -18,7 +18,7 @@ I am sure you want to ask why and where `Py++`_ uses name mangling? `Py++`_ uses name mangling to create function-wrappers for overloaded and\\or free functions. -Consider next use case: +Consider the following use case: .. code-block:: C++ Modified: pyplusplus_dev/docs/documentation/functions/transformation/output.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/output.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/transformation/output.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -30,7 +30,7 @@ Lets say that you need to expose ``hello_world`` function. As you know ``std::string`` is mapped to `Python`_ string, which is immutable type, so you -have to create small wrapper for the function. Next `Py++`_ code does it for you: +have to create small wrapper for the function. The following `Py++`_ code does it for you: .. code-block:: Python Modified: pyplusplus_dev/docs/documentation/functions/transformation/output_static_array.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/output_static_array.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/transformation/output_static_array.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -32,8 +32,8 @@ int x,y,z; }; -In order to expose ``get_values`` member function we need to create small wrapper: -Next `Py++`_ code does it for you: +In order to expose ``get_values`` member function we need to create small wrapper. +The following `Py++`_ code does it for you: .. code-block:: Python Modified: pyplusplus_dev/docs/documentation/functions/transformation/transfer_ownership.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/transfer_ownership.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/transformation/transfer_ownership.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -34,7 +34,7 @@ Lets say that you need to expose "do_smth" function. According to the FAQ, you have to create small wrapper, which will take ``std::auto_ptr`` as an argument. -Next `Py++`_ code does it for you: +The following `Py++`_ code does it for you: .. code-block:: Python Modified: pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -65,7 +65,7 @@ mb = module_builder.module_builder_t( ... ) get_size = mb.mem_fun( 'image_t::get_size' ) get_size.add_transformation( FT.output(0), FT.output(1) ) - #Next line has same effect + #the following line has same effect get_size.add_transformation( FT.output('width'), FT.output('height') ) `Py++`_ will generate a code, very similar to one found in Modified: pyplusplus_dev/docs/documentation/how_to/absolute_relative_paths.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/absolute_relative_paths.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/how_to/absolute_relative_paths.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -4,8 +4,7 @@ **Absolute\\relative paths** -Consider next fileers, the average number of characters per line is -less than 2. Please cs layout: +Consider the following layout: :: boost/ Modified: pyplusplus_dev/docs/documentation/how_to/best_practices.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/best_practices.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/how_to/best_practices.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -58,7 +58,7 @@ come to conclusion, that in order to improve compilation speed, user should be able to control( to be able to generate ) precompiled header file. He implemented an initial version of the functionality. After small discussion, - we agreed on next interface: + we agreed on the following interface: .. code-block:: Python @@ -86,7 +86,7 @@ * **Caveats** - Consider next file layout: + Consider the following file layout: :: boost/ @@ -101,7 +101,7 @@ .. code-block:: Python - #Next code will expose nothing + #the following code will expose nothing mb = module_builder( [ 'date_time/date_time.hpp' ], ... ) #while this one will work as expected Modified: pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -34,7 +34,7 @@ mb = module_builder_t( ... ) holder = mb.class_( 'holder< int >' ) holder.alias = 'IntHolder' - #next line has same effect as the previous one: + #the following line has same effect as the previous one: holder.rename( 'IntHolder' ) Another solution to the problem, is to use different strategy to split the generated Modified: pyplusplus_dev/docs/documentation/how_to/templates.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/templates.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/how_to/templates.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -8,7 +8,7 @@ Introduction ------------ -I would like to introduce next piece of code I will use for most exlanations. +I would like to introduce the following piece of code. I am going to use it for most exlanations. .. code-block:: C++ Modified: pyplusplus_dev/docs/documentation/inserting_code.rest =================================================================== --- pyplusplus_dev/docs/documentation/inserting_code.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/inserting_code.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -16,7 +16,7 @@ Insert code to module --------------------- -Almost every ``Boost.Python`` module has next structure: +Almost every ``Boost.Python`` module has the following structure: .. code-block:: C++ @@ -58,7 +58,7 @@ -------------------- ``class_t`` declaration defines few methods, which add user code to the generated one. -Lets take a look on next use case: +Lets take a look on the following use case: .. code-block:: C++ @@ -119,7 +119,7 @@ win = window_t( ) height, width = win.get_size() - If you will pass ``works_on_instance=False`` next code will be generated: + If you will pass ``works_on_instance=False`` the following code will be generated: .. code-block:: C++ @@ -153,13 +153,13 @@ ---------------------------- There are use cases, when you have to add code to `class wrapper`_. Please take a -look on next thread: http://mail.python.org/pipermail/c++-sig/2006-June/010791.html . +look on the following thread: http://mail.python.org/pipermail/c++-sig/2006-June/010791.html . .. _`class wrapper` : http://boost.org/libs/python/doc/tutorial/doc/html/python/exposing.html#python.class_virtual_functions -The short description is next: there are classes with parent/child relationship. +The short description is the following: there are classes with parent/child relationship. Parent keeps child class instances using raw pointer. When parent die, it also destroys children classes. It is not an option to switch to ``boost::shared_ptr``. Modified: pyplusplus_dev/docs/documentation/multi_module_development.rest =================================================================== --- pyplusplus_dev/docs/documentation/multi_module_development.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/multi_module_development.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -70,7 +70,7 @@ mb_core.build_code_creator( 'png' ) mb.write_module( 'png.cpp' ) -`Py++`_ will generate code very similar to the next one: +`Py++`_ will generate code very similar to the the following one: .. code-block:: C++ Modified: pyplusplus_dev/docs/documentation/properties.rest =================================================================== --- pyplusplus_dev/docs/documentation/properties.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/properties.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -61,7 +61,7 @@ Call policies ------------- -Consider next use case: +Consider the following use case: .. code-block:: C++ @@ -144,7 +144,7 @@ accessors, which constructs the property. `Py++`_ does it by analyzing name and type of the accessors. -`Py++`_ understands next coding conventions: +`Py++`_ understands the following coding conventions: * lowercase_with_underscores * UpperCamel Modified: pyplusplus_dev/docs/documentation/split_module.rest =================================================================== --- pyplusplus_dev/docs/documentation/split_module.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/split_module.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -50,7 +50,7 @@ as follows: * every class has it's own source & header file -* next declarations are split to separate source files: +* the following declarations are split to separate source files: * named & unnamed enumerations @@ -102,10 +102,10 @@ This mode solves the problem, I mentioned earlier - you have to expose huge class and you have problems to compile generated code. -`Py++`_ will split huge class to files using next strategy: +`Py++`_ will split huge class to files using the following strategy: * every generated source file can contain maximum 20 exposed declarations -* next declarations are split to separate source files: +* the following declarations are split to separate source files: * enumerations Modified: pyplusplus_dev/docs/documentation/warnings.rest =================================================================== --- pyplusplus_dev/docs/documentation/warnings.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/documentation/warnings.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -159,7 +159,7 @@ The `Py++`_ package defines all loggers in the ``pyplusplus._logging_`` package. Both packages define a ``loggers`` class. Those classes keep references to - different loggers. The ``loggers`` classes look very similar to the next class: + different loggers. The ``loggers`` classes look very similar to the following class: .. code-block:: Python Modified: pyplusplus_dev/docs/download.rest =================================================================== --- pyplusplus_dev/docs/download.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/download.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -32,7 +32,7 @@ ------------ In command prompt or shell change current directory to be "pyplusplus-X.Y.Z". -"X.Y.Z" is version of `Py++`_. Type next command: +"X.Y.Z" is version of `Py++`_. Type the following command: | ``python setup.py install`` Modified: pyplusplus_dev/docs/examples/boost/boost.rest =================================================================== --- pyplusplus_dev/docs/examples/boost/boost.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/examples/boost/boost.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -37,7 +37,7 @@ I believe that `Py++`_ is ready for hard work. It is quick, stable and flexible. `Py++`_ is a new tool and in my opinion I should prove its -usefulness. Using `Py++`_, I exposed next libraries to Python: +usefulness. Using `Py++`_, I exposed the following libraries to Python: * `Boost.Date_Time`_ * `Boost.CRC`_ Modified: pyplusplus_dev/docs/history/history.rest =================================================================== --- pyplusplus_dev/docs/history/history.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/history/history.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -61,7 +61,7 @@ **Keep reading.** If you use "function transformation" functionality, than it is possible the - generated code will **NOT** work. Consider next example: + generated code will **NOT** work. Consider the following example: .. code-block:: C++ @@ -466,7 +466,7 @@ Sorry for the inconvenience :-(. -3. Better split of extension module to files. From now next declarations will +3. Better split of extension module to files. From now the following declarations will have dedicated file: * named enumerations, defined within namespace Modified: pyplusplus_dev/docs/peps/dsl_challenge.rest =================================================================== --- pyplusplus_dev/docs/peps/dsl_challenge.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/peps/dsl_challenge.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -14,7 +14,7 @@ Py++ user interface ------------------- -I will use next C++ code as an example: +I will use the following C++ code as an example: .. code-block:: C++ @@ -39,7 +39,7 @@ 3. to rename ``x`` and ``y`` to ``X`` and ``Y`` -Today, in order to configure this class, the user has to write next code: +Today, in order to configure this class, the user has to write the following code: .. code-block:: Python @@ -117,7 +117,7 @@ PointTmpl = mb.module.template('Point') Point = PointTmpl( 'int' ) - This is a trivial example, which is why it looks grate. Consider next class: + This is a trivial example, which is why it looks grate. Consider the following class: .. code-block:: C++ @@ -163,7 +163,7 @@ --------- Using B-API the user is forced to write full declaration name, otherwise he faces -next problem: +the following problem: .. code-block:: Python Modified: pyplusplus_dev/docs/pyplusplus.rest =================================================================== --- pyplusplus_dev/docs/pyplusplus.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/pyplusplus.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -23,7 +23,7 @@ `Boost.Python`_ library allows you to expose C++ code to `Python`_ in quick and elegant way. Code generation process, using Py++ consists from few steps. -Next paragraphs will tell you more about every step. +The following paragraphs will tell you more about every step. *"read declarations"* Modified: pyplusplus_dev/docs/quotes.rest =================================================================== --- pyplusplus_dev/docs/quotes.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/quotes.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -134,7 +134,7 @@ .. _`pythonOCC` : http://www.minerva-plm.org/pythonOCC/ .. _`OpenCascade` : http://www.opencascade.org/ -* I am :-). I created Python bindings for next libraries: +* I am :-). I created Python bindings for the following libraries: * `Boost.Date_Time`_ * `Boost.CRC`_ Modified: pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/easy_extending_guide.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/easy_extending_guide.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/easy_extending_guide.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -36,7 +36,7 @@ Boost.Python doesn't handle ``C arrays``, the only exception are ``char*`` and ``wchar_t*``. -Consider next function: +Consider the following function: .. code-block:: C++ Modified: pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.rest 2008-08-13 19:45:24 UTC (rev 1392) +++ pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.rest 2008-08-14 07:31:30 UTC (rev 1393) @@ -32,7 +32,7 @@ add a missing functionality to Boost.Python library. Well, I quickly found out that the task is not a trivial one. -The next solution, I thought about, was to expose the exception class as-is and +The following solution, I thought about, was to expose the exception class as-is and to define new class in Python, which derives from it and the built-in ``Exception``. I implemented it and when I run the code I've got ``TypeError``: "Error when calling the metaclass bases multiple bases have instance lay-out conflict". This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2008-08-14 18:48:56
|
Revision: 1396 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1396&view=rev Author: roman_yakovenko Date: 2008-08-14 18:49:06 +0000 (Thu, 14 Aug 2008) Log Message: ----------- update documentation Modified Paths: -------------- pyplusplus_dev/docs/history/history.rest Added Paths: ----------- pyplusplus_dev/docs/documentation/functions/make_constructor.rest Added: pyplusplus_dev/docs/documentation/functions/make_constructor.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/make_constructor.rest (rev 0) +++ pyplusplus_dev/docs/documentation/functions/make_constructor.rest 2008-08-14 18:49:06 UTC (rev 1396) @@ -0,0 +1,78 @@ +================ +make_constructor +================ + +.. contents:: Table of contents + +------------ +Introduction +------------ + +`Boost.Python`_ allows us to register some function as `Python`_ class ``__init__`` +method. This could be done using `make_constructor`_ functionality. + +Not every function could be registered as ``__init__`` method. The function return +type should be a pointer or a smart pointer to the new class instance. + +------------- +Usage example +------------- +I am going to use the following code to demonstrate the functionality: + +.. code-block:: C++ + + #include <memory> + + namespace mc{ + + struct number_t{ + + static std::auto_ptr<number_t> create( int i, int j); + + int x; + }; + + std::auto_ptr<number_t> create(int i); + + }//namespace mc + +The code is pretty simple - it defines two ``create`` functions, which construct +new class ``number_t`` instances. + +`Py++`_ configuration is pretty simple: + +.. code-block:: Python + + from pyplusplus import module_builder + + mb = module_builder.module_builder_t( ... ) + mc = mb.namespace( 'mc ') + number = mc.class_( 'number_t' ) + number.add_fake_constructors( mc.calldefs( 'create' ) ) + #------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Basically you associate with the class the functions, you want to register as +the class ``__init__`` method. + +The method ``add_fake_constructors`` takes as argument a reference to "create" +function or a list of such. + +The generated code is pretty boring and the only thing I would like to mention +is that the function will **not** be exposed as a standalone function. + +The usage code is even more boring: + +.. code-block:: Python + + from your_module import number_t + + number = number_t( 1 ) + print number.x + number = number_t( 1, 2 ) + print number.x + +.. _`make_constructor`: http://www.boost.org/doc/libs/1_35_0/libs/python/doc/v2/make_function.html#make_constructor-spec +.. _`Py++` : ./../../pyplusplus.html +.. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html +.. _`Python`: http://www.python.org +.. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/history/history.rest =================================================================== --- pyplusplus_dev/docs/history/history.rest 2008-08-14 07:45:25 UTC (rev 1395) +++ pyplusplus_dev/docs/history/history.rest 2008-08-14 18:49:06 UTC (rev 1396) @@ -115,6 +115,7 @@ which will not break the existing code. I see few solutions to the problem: * change the alias of the functions + .. code-block:: Python from pyplusplus import module_builder @@ -140,10 +141,13 @@ 3. New and highly experimental feature was introduced - `Boost.Python and ctypes integration`_. - ../documentation/ctypes_integration.html .. _`Boost.Python and ctypes integration` : ../documentation/ctypes_integration.html +4. Support for `boost::python::make_constructor`_ functionality was added. + +.. _`boost::python::make_constructor` : ../documentation/functions/make_constructor.html + ------------- Version 0.9.5 ------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2008-10-12 19:41:11
|
Revision: 1434 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1434&view=rev Author: roman_yakovenko Date: 2008-10-12 19:41:04 +0000 (Sun, 12 Oct 2008) Log Message: ----------- fix broken links Modified Paths: -------------- pyplusplus_dev/docs/documentation/ctypes/unions.rest pyplusplus_dev/docs/documentation/how_to/best_practices.rest pyplusplus_dev/docs/history/history.rest Modified: pyplusplus_dev/docs/documentation/ctypes/unions.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/unions.rest 2008-10-12 19:12:57 UTC (rev 1433) +++ pyplusplus_dev/docs/documentation/ctypes/unions.rest 2008-10-12 19:41:04 UTC (rev 1434) @@ -47,7 +47,7 @@ .. code-block:: Python import ctypes - from <your module> import data_t + from <<<your module>>> import data_t #lets define our union class actual_data_t( ctypes.Union ): Modified: pyplusplus_dev/docs/documentation/how_to/best_practices.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/best_practices.rest 2008-10-12 19:12:57 UTC (rev 1433) +++ pyplusplus_dev/docs/documentation/how_to/best_practices.rest 2008-10-12 19:41:04 UTC (rev 1434) @@ -169,7 +169,7 @@ the whole project. -.. _`Py++` : ./../pyplusplus.html +.. _`Py++` : ./../../pyplusplus.html .. _`pygccxml` : ./../../../pygccxml/pygccxml.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org Modified: pyplusplus_dev/docs/history/history.rest =================================================================== --- pyplusplus_dev/docs/history/history.rest 2008-10-12 19:12:57 UTC (rev 1433) +++ pyplusplus_dev/docs/history/history.rest 2008-10-12 19:41:04 UTC (rev 1434) @@ -302,7 +302,7 @@ 5. Support for opaque types was added. Read more about this feature `here`__. -.. __ : ../documentation/functions/call_policies.html#special-case +.. __ : ../documentation/functions/call_policies/call_policies.html#special-case 6. It is possible to configure "Py++" to generate faster ( compilation time ) code for indexing suite version 2. See API documentation. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-26 19:49:53
|
Revision: 1622 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1622&view=rev Author: roman_yakovenko Date: 2009-01-26 19:49:49 +0000 (Mon, 26 Jan 2009) Log Message: ----------- changing alias used for C++ code blocks Modified Paths: -------------- pygccxml_dev/docs/design.rest pygccxml_dev/docs/history/history.rest pygccxml_dev/docs/query_interface.rest pygccxml_dev/docs/upgrade_issues.rest pyplusplus_dev/docs/comparisons/pyste.rest pyplusplus_dev/docs/documentation/containers.rest pyplusplus_dev/docs/documentation/ctypes/unions.rest pyplusplus_dev/docs/documentation/ctypes/variables.rest pyplusplus_dev/docs/documentation/functions/call_policies/as_tuple.rest pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest pyplusplus_dev/docs/documentation/functions/call_policies/return_addressof.rest pyplusplus_dev/docs/documentation/functions/call_policies/return_pointee_value.rest pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest pyplusplus_dev/docs/documentation/functions/default_args.rest pyplusplus_dev/docs/documentation/functions/make_constructor.rest pyplusplus_dev/docs/documentation/functions/overloading.rest pyplusplus_dev/docs/documentation/functions/registration_order.rest pyplusplus_dev/docs/documentation/functions/transformation/inout.rest pyplusplus_dev/docs/documentation/functions/transformation/input.rest pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest pyplusplus_dev/docs/documentation/functions/transformation/name_mangling.rest pyplusplus_dev/docs/documentation/functions/transformation/output.rest pyplusplus_dev/docs/documentation/functions/transformation/output_static_array.rest pyplusplus_dev/docs/documentation/functions/transformation/transfer_ownership.rest pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest pyplusplus_dev/docs/documentation/how_to/hints.rest pyplusplus_dev/docs/documentation/how_to/templates.rest pyplusplus_dev/docs/documentation/inserting_code.rest pyplusplus_dev/docs/documentation/multi_module_development.rest pyplusplus_dev/docs/documentation/properties.rest pyplusplus_dev/docs/documentation/warnings.rest pyplusplus_dev/docs/history/history.rest pyplusplus_dev/docs/peps/dsl_challenge.rest pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/easy_extending_guide.rest pyplusplus_dev/docs/troubleshooting_guide/shared_ptr/shared_ptr.rest Modified: pygccxml_dev/docs/design.rest =================================================================== --- pygccxml_dev/docs/design.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pygccxml_dev/docs/design.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -255,13 +255,13 @@ Well, `GCC-XML`_ has few bugs, which could not be fixed from it. For example -.. code-block:: C++ +.. code-block:: cpp namespace ns1{ namespace ns2{ enum fruit{ apple, orange }; } } -.. code-block:: C++ +.. code-block:: cpp void fix_enum( ns1::ns2::fruit arg=ns1::ns2::apple ); Modified: pygccxml_dev/docs/history/history.rest =================================================================== --- pygccxml_dev/docs/history/history.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pygccxml_dev/docs/history/history.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -47,7 +47,7 @@ Description: - .. code-block:: C++ + .. code-block:: cpp void do_smth( int, ... ) Modified: pygccxml_dev/docs/query_interface.rest =================================================================== --- pygccxml_dev/docs/query_interface.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pygccxml_dev/docs/query_interface.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -190,14 +190,14 @@ In order to help `Boost.Python`_ to manage objects life time, all functions should have `call policies`_. For example: -.. code-block:: C++ +.. code-block:: cpp struct A{ A* clone() const { return new A(); } ... }; -.. code-block:: C++ +.. code-block:: cpp struct B{ B* clone() const { return new B(); } Modified: pygccxml_dev/docs/upgrade_issues.rest =================================================================== --- pygccxml_dev/docs/upgrade_issues.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pygccxml_dev/docs/upgrade_issues.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -37,7 +37,7 @@ C++ code: -.. code-block:: C++ +.. code-block:: cpp struct xyz_t{ int do_smth( double ); @@ -85,7 +85,7 @@ For example: -.. code-block:: C++ +.. code-block:: cpp const long unsigned int initialized = 10122004; @@ -102,7 +102,7 @@ fixes some issues, but introduces another ones. Take a look on the following examples: * - .. code-block:: C++ + .. code-block:: cpp void fix_numeric( ull arg=(ull)-1 ); @@ -120,7 +120,7 @@ <Argument name="arg" type="_103" default="0xffffffffffffffffu"/> * - .. code-block:: C++ + .. code-block:: cpp void fix_function_call( int i=calc( 1,2,3) ); @@ -138,7 +138,7 @@ <Argument name="i" type="_34" default="function_call::calc(1, 2, 3)"/> * - .. code-block:: C++ + .. code-block:: cpp void typedef__func( const typedef_::alias& position = typedef_::alias() ); @@ -156,7 +156,7 @@ <Argument name="position" type="_1703" default="typedef_::original_name()"/> * - .. code-block:: C++ + .. code-block:: cpp void typedef__func2( const typedef_::alias& position = alias() ); @@ -175,7 +175,7 @@ * - .. code-block:: C++ + .. code-block:: cpp node* clone_tree( const std::vector<std::string> &types=std::vector<std::string>() ); @@ -211,7 +211,7 @@ Consider the following C++ code: -.. code-block:: C++ +.. code-block:: cpp template< unsigned long i1> struct item_t{ Modified: pyplusplus_dev/docs/comparisons/pyste.rest =================================================================== --- pyplusplus_dev/docs/comparisons/pyste.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/comparisons/pyste.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -186,15 +186,15 @@ * code creator that generates body of "overridden" virtual functions: - .. code-block:: C++ + .. code-block:: cpp struct expensive_to_copy{...}; - .. code-block:: C++ + .. code-block:: cpp void do_smth( expensive_to_copy* x, const expensive_to_copy& y ){...} - .. code-block:: C++ + .. code-block:: cpp void do_smth(expensive_to_copy* x, const expensive_to_copy& y){ @@ -332,7 +332,7 @@ * To define namespace alias. - .. code-block:: C++ + .. code-block:: cpp namespace dt = boost::date_time; @@ -341,7 +341,7 @@ * Classes and functions support 2 modes of code generation. Example: - .. code-block:: C++ + .. code-block:: cpp struct world{ void set(std::string msg) { this->msg = msg; } @@ -351,7 +351,7 @@ First mode: - .. code-block:: C++ + .. code-block:: cpp class_<world>("world") .def("greet", &world::greet) @@ -361,7 +361,7 @@ Second mode: - .. code-block:: C++ + .. code-block:: cpp if( true ){ typedef class_<world> world_exposer_t; Modified: pyplusplus_dev/docs/documentation/containers.rest =================================================================== --- pyplusplus_dev/docs/documentation/containers.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/containers.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -125,7 +125,7 @@ In this case there is no single place, where you can configure exported container functionality. Please take a look on the following C++ code: -.. code-block:: C++ +.. code-block:: cpp struct item{ ... Modified: pyplusplus_dev/docs/documentation/ctypes/unions.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/unions.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/ctypes/unions.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -22,7 +22,7 @@ For this example I am going to use the following code: - .. code-block:: C++ + .. code-block:: cpp struct data_t{ union actual_data_t{ Modified: pyplusplus_dev/docs/documentation/ctypes/variables.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/variables.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/ctypes/variables.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -21,7 +21,7 @@ Lets say you have the following C++ code: - .. code-block:: C++ + .. code-block:: cpp struct bytes_t{ bytes_t(){ Modified: pyplusplus_dev/docs/documentation/functions/call_policies/as_tuple.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/as_tuple.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/call_policies/as_tuple.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -16,7 +16,7 @@ Example ------- -.. code-block:: C++ +.. code-block:: cpp struct vector3{ ... Modified: pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -21,7 +21,7 @@ The call policies in `Py++`_ are named exactly as in `Boost.Python`_, only the syntax is slightly different. For instance, this call policy: -.. code-block:: C++ +.. code-block:: cpp return_internal_reference< 1, with_custodian_and_ward<1, 2> >() @@ -41,7 +41,7 @@ C++ code: - .. code-block:: C++ + .. code-block:: cpp struct data{...}; const data& do_smth( const data& d, int x ); @@ -130,7 +130,7 @@ * `Py++`_ generates code with - .. code-block:: C++ + .. code-block:: cpp /* undefined call policies */ @@ -157,7 +157,7 @@ Example: -.. code-block:: C++ +.. code-block:: cpp struct identity_impl_t{}; typedef identity_impl_t* identity; Modified: pyplusplus_dev/docs/documentation/functions/call_policies/return_addressof.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/return_addressof.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/call_policies/return_addressof.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -21,7 +21,7 @@ Example ------- -.. code-block:: C++ +.. code-block:: cpp int* get_value(){ static int buffer[] = { 0,1,2,3,4 }; Modified: pyplusplus_dev/docs/documentation/functions/call_policies/return_pointee_value.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/return_pointee_value.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/call_policies/return_pointee_value.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -12,7 +12,7 @@ can be used to wrap C++ functions, that return a pointer to a C++ object. The policy implements the following logic: -.. code-block:: C++ +.. code-block:: cpp if( <<<return value is NULL pointer>>> ){ return None; @@ -46,7 +46,7 @@ This technique and example was contributed by Maximilian Matthe. -.. code-block:: C++ +.. code-block:: cpp struct int_wrapper{ int_wrapper(int v) @@ -93,7 +93,7 @@ Return pointee value -------------------- -.. code-block:: C++ +.. code-block:: cpp float* get_value(){ static float value = 0.5; Modified: pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -18,7 +18,7 @@ Example ------- -.. code-block:: C++ +.. code-block:: cpp struct image_t{ @@ -49,7 +49,7 @@ ``return_range`` class ---------------------- -.. code-block:: C++ +.. code-block:: cpp template < typename TGetSize , typename TValueType @@ -80,7 +80,7 @@ * call operator with the following signature: - .. code-block:: C++ + .. code-block:: cpp ssize_t operator()( boost::python::tuple args ); @@ -91,7 +91,7 @@ For our case, the following class could be defined: -.. code-block:: C++ +.. code-block:: cpp struct image_data_size_t{ ssize_t operator()( boost::python::tuple args ){ @@ -105,7 +105,7 @@ Passing all arguments, instead of single "self" argument gives you an ability to treat functions, where the user asked to get access to the part of the array. -.. code-block:: C++ +.. code-block:: cpp struct image_t{ ... @@ -119,7 +119,7 @@ The following "get size" class treats this situation: -.. code-block:: C++ +.. code-block:: cpp struct image_data_size_t{ ssize_t operator()( boost::python::tuple args ){ @@ -151,7 +151,7 @@ I think, now you are ready to see the whole solution: -.. code-block:: C++ +.. code-block:: cpp namespace bpl = boost::python; namespace ppc = pyplusplus::call_policies; Modified: pyplusplus_dev/docs/documentation/functions/default_args.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/default_args.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/default_args.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -11,7 +11,7 @@ There is more than one way to export function with default arguments. Before we proceed, please take a look on the following class: -.. code-block:: C++ +.. code-block:: cpp struct X { @@ -27,7 +27,7 @@ By default `Py++`_ exposes function with its default arguments. -.. code-block:: C++ +.. code-block:: cpp namespace bp = boost::python; @@ -71,7 +71,7 @@ There is different trades-off between these approaches. In general you should use the first one, until you have "registration order" problem: -.. code-block:: C++ +.. code-block:: cpp struct S1; struct S2; @@ -122,7 +122,7 @@ Class constructors are special case: -.. code-block:: C++ +.. code-block:: cpp struct S1; struct S2; Modified: pyplusplus_dev/docs/documentation/functions/make_constructor.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/make_constructor.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/make_constructor.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -19,7 +19,7 @@ ------------- I am going to use the following code to demonstrate the functionality: -.. code-block:: C++ +.. code-block:: cpp #include <memory> Modified: pyplusplus_dev/docs/documentation/functions/overloading.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/overloading.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/overloading.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -13,7 +13,7 @@ want to export, by specifying its type. Before we proceed, please take a look on the following class: -.. code-block:: C++ +.. code-block:: cpp struct X { @@ -46,7 +46,7 @@ I am sure you will like "do nothing" approach. `Py++`_ recognize that you want to export an overloaded function and will generate the right code: -.. code-block:: C++ +.. code-block:: cpp namespace bp = boost::python; @@ -82,7 +82,7 @@ It is very important to understand it. Lets take a look on the following source code: -.. code-block:: C++ +.. code-block:: cpp struct Y{ Modified: pyplusplus_dev/docs/documentation/functions/registration_order.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/registration_order.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/registration_order.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -22,7 +22,7 @@ Example ------- -.. code-block:: C++ +.. code-block:: cpp struct tester_t{ tester_t() {} @@ -43,7 +43,7 @@ `Py++`_ generates code, that register functions in the order they appear in the source code: -.. code-block:: C++ +.. code-block:: cpp namespace bp = boost::python; Modified: pyplusplus_dev/docs/documentation/functions/transformation/inout.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/inout.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/transformation/inout.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -24,7 +24,7 @@ Example ------- -.. code-block:: C++ +.. code-block:: cpp #include <string> @@ -47,7 +47,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: C++ + .. code-block:: cpp namespace bp = boost::python; Modified: pyplusplus_dev/docs/documentation/functions/transformation/input.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/input.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/transformation/input.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -18,7 +18,7 @@ Example ------- -.. code-block:: C++ +.. code-block:: cpp #include <string> @@ -41,7 +41,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: C++ + .. code-block:: cpp namespace bp = boost::python; Modified: pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -20,7 +20,7 @@ Example ------- -.. code-block:: C++ +.. code-block:: cpp struct file_t{ void write( char* buffer, int size ) const; @@ -40,7 +40,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: C++ + .. code-block:: cpp #include "__convenience.pypp.hpp" //Py++ header file, which contains few convenience function Modified: pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -20,7 +20,7 @@ Example ------- -.. code-block:: C++ +.. code-block:: cpp struct vector3{ @@ -47,7 +47,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: C++ + .. code-block:: cpp #include "__convenience.pypp.hpp" //Py++ header file, which contains few convenience function Modified: pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -28,7 +28,7 @@ Example ------- -.. code-block:: C++ +.. code-block:: cpp #include <string> @@ -52,7 +52,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: C++ + .. code-block:: cpp namespace bp = boost::python; Modified: pyplusplus_dev/docs/documentation/functions/transformation/name_mangling.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/name_mangling.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/transformation/name_mangling.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -20,7 +20,7 @@ name mangling to create function-wrappers for overloaded and\\or free functions. Consider the following use case: - .. code-block:: C++ + .. code-block:: cpp void get_distance( long& ); void get_distance( double& ); @@ -28,7 +28,7 @@ In order to expose ``get_distance`` functions you have to create 2 function wrappers: - .. code-block:: C++ + .. code-block:: cpp long get_distance_as_long(){...} double get_distance_as_double(){...} @@ -37,7 +37,7 @@ on return type only. You also have to exposes them under different aliases, otherwise they will not be callable from `Python`_: - .. code-block:: C++ + .. code-block:: cpp namespace bp = boost::python; BOOST_PYTHON_MODULE(...){ Modified: pyplusplus_dev/docs/documentation/functions/transformation/output.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/output.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/transformation/output.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -20,7 +20,7 @@ Example ------- -.. code-block:: C++ +.. code-block:: cpp #include <string> @@ -43,7 +43,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: C++ + .. code-block:: cpp namespace bp = boost::python; Modified: pyplusplus_dev/docs/documentation/functions/transformation/output_static_array.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/output_static_array.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/transformation/output_static_array.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -19,7 +19,7 @@ Example ------- -.. code-block:: C++ +.. code-block:: cpp struct vector3{ @@ -46,7 +46,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: C++ + .. code-block:: cpp #include "__convenience.pypp.hpp" //Py++ header file, which contains few convenience function Modified: pyplusplus_dev/docs/documentation/functions/transformation/transfer_ownership.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/transfer_ownership.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/transformation/transfer_ownership.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -24,7 +24,7 @@ Example ------- -.. code-block:: C++ +.. code-block:: cpp struct resource_t{...}; @@ -51,7 +51,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: C++ + .. code-block:: cpp namespace bp = boost::python; Modified: pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -15,7 +15,7 @@ An often mentioned example that demonstrates the problem is the ``get_size()`` member function of a fictitious image class: -.. code-block:: C++ +.. code-block:: cpp void get_size(int& width, int& height); @@ -31,7 +31,7 @@ and the wrapper could look like this: -.. code-block:: C++ +.. code-block:: cpp boost::python::tuple get_size( const image_t& img ){ int width; Modified: pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -13,7 +13,7 @@ Let me explain. -.. code-block:: C++ +.. code-block:: cpp template < class T> struct holder{ ... }; Modified: pyplusplus_dev/docs/documentation/how_to/hints.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/hints.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/how_to/hints.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -13,7 +13,7 @@ For example: -.. code-block:: C++ +.. code-block:: cpp #include <vector> typedef std::vector< int > numbers; @@ -23,7 +23,7 @@ `Py++`_ will use "numbers" as Python class name: -.. code-block:: C++ +.. code-block:: cpp using boost::python; class_< std::vector< int > >( "numbers" ) @@ -38,7 +38,7 @@ The previous approach is "implicit" - `Py++`_ does something behind the scene. Recently (version 0.8.6 ), another approach was introduced: -.. code-block:: C++ +.. code-block:: cpp #include <vector> Modified: pyplusplus_dev/docs/documentation/how_to/templates.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/templates.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/how_to/templates.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -10,7 +10,7 @@ I would like to introduce the following piece of code. I am going to use it for most exlanations. -.. code-block:: C++ +.. code-block:: cpp // file point.h template< class T> @@ -39,14 +39,14 @@ You can instantiate template class using operator ``sizeof``: -.. code-block:: C++ +.. code-block:: cpp sizeof( point_t<int> ); In order to instantiate a function you have to call it: -.. code-block:: C++ +.. code-block:: cpp void instantiate(){ double x = distance( point_t<t>() ); @@ -83,7 +83,7 @@ Functions templated on return type ---------------------------------- -.. code-block:: C++ +.. code-block:: cpp environment_t env; std::string path = env.get_value< std::string >( "PATH" ); @@ -105,7 +105,7 @@ Generated code: -.. code-block:: C++ +.. code-block:: cpp bp::class_< environment_t >( "environment_t" ) ... @@ -116,7 +116,7 @@ The correct code: -.. code-block:: C++ +.. code-block:: cpp bp::class_< environment_t >( "environment_t" ) .def( "get_value" @@ -128,7 +128,7 @@ The perfect one: -.. code-block:: C++ +.. code-block:: cpp bp::class_< environment_t >( "environment_t" ) ... Modified: pyplusplus_dev/docs/documentation/inserting_code.rest =================================================================== --- pyplusplus_dev/docs/documentation/inserting_code.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/inserting_code.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -18,7 +18,7 @@ Almost every ``Boost.Python`` module has the following structure: -.. code-block:: C++ +.. code-block:: cpp //declarations code ... @@ -60,7 +60,7 @@ ``class_t`` declaration defines few methods, which add user code to the generated one. Lets take a look on the following use case: -.. code-block:: C++ +.. code-block:: cpp struct window_t{ ... @@ -74,7 +74,7 @@ In the near future `Py++`_ will eliminate the need of creating hand written wrapper for this use case. -.. code-block:: C++ +.. code-block:: cpp boost::python::tuple get_window_size( const window_t& win ){ int h(0), w(0); @@ -84,7 +84,7 @@ Now you have to register it: -.. code-block:: C++ +.. code-block:: cpp using boost::python; class_< window_t >( ... ) @@ -121,7 +121,7 @@ If you will pass ``works_on_instance=False`` the following code will be generated: - .. code-block:: C++ + .. code-block:: cpp { class_< window_t > window_exporter( "window_t" ); @@ -132,7 +132,7 @@ And in this case, user will be forced to pass reference to ``window_t`` object: - .. code-block:: C++ + .. code-block:: cpp win = window_t() height, width = window_t.get_size( win ) Modified: pyplusplus_dev/docs/documentation/multi_module_development.rest =================================================================== --- pyplusplus_dev/docs/documentation/multi_module_development.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/multi_module_development.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -29,7 +29,7 @@ The code: -.. code-block:: C++ +.. code-block:: cpp namespace core{ class image_i{ @@ -72,7 +72,7 @@ `Py++`_ will generate code very similar to the the following one: -.. code-block:: C++ +.. code-block:: cpp //file core.cpp namespace bp = boost::python; @@ -95,7 +95,7 @@ .def( "load", bp::pure_virtual( &::core::image_i::load ) ); } -.. code-block:: C++ +.. code-block:: cpp //file png.cpp struct png_image_t_wrapper : png::png_image_t, bp::wrapper< png::png_image_t > { Modified: pyplusplus_dev/docs/documentation/properties.rest =================================================================== --- pyplusplus_dev/docs/documentation/properties.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/properties.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -19,7 +19,7 @@ Usage example ------------- -.. code-block:: C++ +.. code-block:: cpp struct number{ ... @@ -63,11 +63,11 @@ Consider the following use case: -.. code-block:: C++ +.. code-block:: cpp struct nested{ ... }; -.. code-block:: C++ +.. code-block:: cpp struct data{ ... Modified: pyplusplus_dev/docs/documentation/warnings.rest =================================================================== --- pyplusplus_dev/docs/documentation/warnings.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/documentation/warnings.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -24,11 +24,11 @@ some cases provide hints about how to resolve the problem. Few examples: * - .. code-block:: C++ + .. code-block:: cpp struct Y{ ... }; - .. code-block:: C++ + .. code-block:: cpp struct X{ ... @@ -38,7 +38,7 @@ Member function ``do_smth`` cannot be overridden in Python because ... . * - .. code-block:: C++ + .. code-block:: cpp struct window{ ... @@ -51,7 +51,7 @@ should define ``BOOST_PYTHON_MAX_ARITY`` macro. * - .. code-block:: C++ + .. code-block:: cpp struct X{ ... Modified: pyplusplus_dev/docs/history/history.rest =================================================================== --- pyplusplus_dev/docs/history/history.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/history/history.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -45,7 +45,7 @@ The change explanation. - .. code-block:: C++ + .. code-block:: cpp struct A{ virtual void foo() {} @@ -75,7 +75,7 @@ If you use "function transformation" functionality, than it is possible the generated code will **NOT** work. Consider the following example: - .. code-block:: C++ + .. code-block:: cpp struct A{ virtual void foo(int& i) {/*do smth*/} @@ -98,7 +98,7 @@ The generated code, for class ``B``, is: - .. code-block:: C++ + .. code-block:: cpp namespace bp = boost::python; @@ -512,7 +512,7 @@ 8. `Py++`_ now generates correct code for hierarchy of abstract classes: - .. code-block:: C++ + .. code-block:: cpp struct abstract1{ virtual void do_smth() = 0; Modified: pyplusplus_dev/docs/peps/dsl_challenge.rest =================================================================== --- pyplusplus_dev/docs/peps/dsl_challenge.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/peps/dsl_challenge.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -16,7 +16,7 @@ I will use the following C++ code as an example: -.. code-block:: C++ +.. code-block:: cpp namespace geometry{ struct Point{ @@ -105,7 +105,7 @@ B-API does not work for template instantiated classes and functions. If we change class ``Point`` to be template, the special syntax should be introduced: - .. code-block:: C++ + .. code-block:: cpp template < class Numeric > struct Point{ @@ -119,7 +119,7 @@ This is a trivial example, which is why it looks great. Consider the following class: - .. code-block:: C++ + .. code-block:: cpp template< class String, class Allocator > class regex{ ... } Modified: pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/easy_extending_guide.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/easy_extending_guide.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/easy_extending_guide.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -38,7 +38,7 @@ Consider the following function: -.. code-block:: C++ +.. code-block:: cpp int write( int* data, size_t size ); Modified: pyplusplus_dev/docs/troubleshooting_guide/shared_ptr/shared_ptr.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/shared_ptr/shared_ptr.rest 2009-01-26 15:03:04 UTC (rev 1621) +++ pyplusplus_dev/docs/troubleshooting_guide/shared_ptr/shared_ptr.rest 2009-01-26 19:49:49 UTC (rev 1622) @@ -20,7 +20,7 @@ It is also possible to solve the problem, without changing Boost.Python library: - .. code-block:: C++ + .. code-block:: cpp namespace boost{ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-26 20:00:23
|
Revision: 1623 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1623&view=rev Author: roman_yakovenko Date: 2009-01-26 20:00:13 +0000 (Mon, 26 Jan 2009) Log Message: ----------- changing alias used for C++/Python and XML code blocks Modified Paths: -------------- pydsc_dev/docs/pydsc.rest pygccxml_dev/docs/design.rest pygccxml_dev/docs/history/history.rest pygccxml_dev/docs/pygccxml.rest pygccxml_dev/docs/query_interface.rest pygccxml_dev/docs/upgrade_issues.rest pyplusplus_dev/docs/comparisons/pyste.rest pyplusplus_dev/docs/documentation/architecture.rest pyplusplus_dev/docs/documentation/containers.rest pyplusplus_dev/docs/documentation/ctypes/this_and_sizeof.rest pyplusplus_dev/docs/documentation/ctypes/unions.rest pyplusplus_dev/docs/documentation/ctypes/variables.rest pyplusplus_dev/docs/documentation/doc_string.rest pyplusplus_dev/docs/documentation/functions/call_policies/as_tuple.rest pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest pyplusplus_dev/docs/documentation/functions/call_policies/custom_call_policies.rest pyplusplus_dev/docs/documentation/functions/call_policies/return_addressof.rest pyplusplus_dev/docs/documentation/functions/call_policies/return_pointee_value.rest pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest pyplusplus_dev/docs/documentation/functions/default_args.rest pyplusplus_dev/docs/documentation/functions/make_constructor.rest pyplusplus_dev/docs/documentation/functions/overloading.rest pyplusplus_dev/docs/documentation/functions/registration_order.rest pyplusplus_dev/docs/documentation/functions/transformation/inout.rest pyplusplus_dev/docs/documentation/functions/transformation/input.rest pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest pyplusplus_dev/docs/documentation/functions/transformation/name_mangling.rest pyplusplus_dev/docs/documentation/functions/transformation/output.rest pyplusplus_dev/docs/documentation/functions/transformation/output_static_array.rest pyplusplus_dev/docs/documentation/functions/transformation/transfer_ownership.rest pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest pyplusplus_dev/docs/documentation/how_to/absolute_relative_paths.rest pyplusplus_dev/docs/documentation/how_to/best_practices.rest pyplusplus_dev/docs/documentation/how_to/exception_translation.rest pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest pyplusplus_dev/docs/documentation/how_to/hints.rest pyplusplus_dev/docs/documentation/how_to/templates.rest pyplusplus_dev/docs/documentation/inserting_code.rest pyplusplus_dev/docs/documentation/multi_module_development.rest pyplusplus_dev/docs/documentation/properties.rest pyplusplus_dev/docs/documentation/split_module.rest pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest pyplusplus_dev/docs/documentation/warnings.rest pyplusplus_dev/docs/examples/boost/boost.rest pyplusplus_dev/docs/history/history.rest pyplusplus_dev/docs/peps/dsl_challenge.rest pyplusplus_dev/docs/pyplusplus.rest pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/easy_extending_guide.rest pyplusplus_dev/docs/troubleshooting_guide/shared_ptr/shared_ptr.rest Modified: pydsc_dev/docs/pydsc.rest =================================================================== --- pydsc_dev/docs/pydsc.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pydsc_dev/docs/pydsc.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -24,7 +24,7 @@ check all the documentation strings. My goal was simplicity + easy customization. I achieved it. Here is example of usage of pydsc: -.. code-block:: Python +.. code-block:: python import pydsc #every module that will be imported after pydsc will be checked @@ -51,7 +51,7 @@ "More complex" example: -.. code-block:: Python +.. code-block:: python import pydsc #check for spell errors only in files under "/home/roman/pygccxml" directory Modified: pygccxml_dev/docs/design.rest =================================================================== --- pygccxml_dev/docs/design.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pygccxml_dev/docs/design.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -255,13 +255,13 @@ Well, `GCC-XML`_ has few bugs, which could not be fixed from it. For example -.. code-block:: cpp +.. code-block:: c++ namespace ns1{ namespace ns2{ enum fruit{ apple, orange }; } } -.. code-block:: cpp +.. code-block:: c++ void fix_enum( ns1::ns2::fruit arg=ns1::ns2::apple ); Modified: pygccxml_dev/docs/history/history.rest =================================================================== --- pygccxml_dev/docs/history/history.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pygccxml_dev/docs/history/history.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -47,7 +47,7 @@ Description: - .. code-block:: cpp + .. code-block:: c++ void do_smth( int, ... ) @@ -322,7 +322,7 @@ 4. Now you can pass operator symbol, as a name to query functions: - .. code-block:: Python + .. code-block:: python cls = global_namespace.class_( 'my_class' ) op = cls.operator( '<' ) @@ -355,7 +355,7 @@ So for example: - .. code-block:: Python + .. code-block:: python classes = ns.decls("class") classes.decls("method") Modified: pygccxml_dev/docs/pygccxml.rest =================================================================== --- pygccxml_dev/docs/pygccxml.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pygccxml_dev/docs/pygccxml.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -51,7 +51,7 @@ Only 1 ( one ) line of code is needed: -.. code-block:: Python +.. code-block:: python #global_ns is the reference to declarations, which describes global( :: ) namespace global_ns.free_functions( "do_smth", return_type='void', arg_types=[None,'int'] ) Modified: pygccxml_dev/docs/query_interface.rest =================================================================== --- pygccxml_dev/docs/query_interface.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pygccxml_dev/docs/query_interface.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -16,7 +16,7 @@ a reference to an integer. More over, I want those functions names to end with "impl" string and they should be protected or private. -.. code-block:: Python +.. code-block:: python #global_ns is the reference to an instance of namespace_t object, that #represents global namespace @@ -28,7 +28,7 @@ yourself, looking for one or many declarations, using one or two declaration properties. For example: -.. code-block:: Python +.. code-block:: python global_ns.namespaces( 'details' ) @@ -56,7 +56,7 @@ The usage of other methods is very similar to them. Here is definition of those methods: -.. code-block:: Python +.. code-block:: python def member_function( self, name=None, @@ -88,7 +88,7 @@ Python string, that contains member function name or full name. - .. code-block:: Python + .. code-block:: python do_smth = my_class.member_function( 'do_smth' ) do_smth = my_class.member_function( 'my_namespace::my_class::do_smth' ) @@ -99,7 +99,7 @@ build custom query. This object will be called with one argument - declaration, and it should return ``True`` or ``False``. - .. code-block:: Python + .. code-block:: python impls = my_class.member_functions( lambda decl: decl.name.endswith( 'impl' ) ) @@ -111,7 +111,7 @@ the function return type. This argument can be string or an object that describes C++ type. - .. code-block:: Python + .. code-block:: python mem_funcs = my_class.member_functions( return_type='int' ) @@ -128,7 +128,7 @@ to skip some argument type from within comparison, you put ``None``, into relevant position within the list. - .. code-block:: Python + .. code-block:: python mem_funcs = my_class.member_functions( arg_types=[ None, 'int'] ) @@ -190,14 +190,14 @@ In order to help `Boost.Python`_ to manage objects life time, all functions should have `call policies`_. For example: -.. code-block:: cpp +.. code-block:: c++ struct A{ A* clone() const { return new A(); } ... }; -.. code-block:: cpp +.. code-block:: c++ struct B{ B* clone() const { return new B(); } @@ -208,7 +208,7 @@ The following code applies the `call policies`_ on all ``clone`` member functions within the project: -.. code-block:: Python +.. code-block:: python #global_ns - instance of namespace_t class, that contains reference to global namespace clone = global_ns.member_functions( 'clone' ) @@ -219,7 +219,7 @@ exclude declaration, from being exported to Python. The following code will exclude ``clone`` member function from being exported: -.. code-block:: Python +.. code-block:: python global_ns.member_functions( 'clone' ).exclude() @@ -228,7 +228,7 @@ write loops, ``mdecl_wrapper_t`` class implements ``__len__``, ``__getitem__`` and ``__iter__`` methods. So you can write the following code: -.. code-block:: Python +.. code-block:: python for clone in global_ns.member_functions( 'clone' ): print clone.parent.name Modified: pygccxml_dev/docs/upgrade_issues.rest =================================================================== --- pygccxml_dev/docs/upgrade_issues.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pygccxml_dev/docs/upgrade_issues.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -37,7 +37,7 @@ C++ code: -.. code-block:: cpp +.. code-block:: c++ struct xyz_t{ int do_smth( double ); @@ -50,7 +50,7 @@ GCC-XML 0.7: -.. code-block:: XML +.. code-block:: xml <Typedef id="_6" name="mfun_ptr_t" type="_5" /> <PointerType id="_5" type="_128" size="32" align="32"/> @@ -64,7 +64,7 @@ GCC-XML 0.9: -.. code-block:: XML +.. code-block:: xml <Typedef id="_97" name="mfun_ptr_t" type="_96" /> <PointerType id="_96" type="_147" size="32" align="32"/> @@ -85,7 +85,7 @@ For example: -.. code-block:: cpp +.. code-block:: c++ const long unsigned int initialized = 10122004; @@ -102,100 +102,100 @@ fixes some issues, but introduces another ones. Take a look on the following examples: * - .. code-block:: cpp + .. code-block:: c++ void fix_numeric( ull arg=(ull)-1 ); GCC-XML 0.7 - .. code-block:: XML + .. code-block:: xml <Argument name="arg" type="_7" default="0xffffffffffffffff"/> GCC-XML 0.9 - .. code-block:: XML + .. code-block:: xml <Argument name="arg" type="_103" default="0xffffffffffffffffu"/> * - .. code-block:: cpp + .. code-block:: c++ void fix_function_call( int i=calc( 1,2,3) ); GCC-XML 0.7 - .. code-block:: XML + .. code-block:: xml <Argument name="i" type="_9" default="function_call::calc(int, int, int)(1, 2, 3)"/> GCC-XML 0.9 - .. code-block:: XML + .. code-block:: xml <Argument name="i" type="_34" default="function_call::calc(1, 2, 3)"/> * - .. code-block:: cpp + .. code-block:: c++ void typedef__func( const typedef_::alias& position = typedef_::alias() ); GCC-XML 0.7 - .. code-block:: XML + .. code-block:: xml <Argument name="position" type="_1458" default="alias()"/> GCC-XML 0.9 - .. code-block:: XML + .. code-block:: xml <Argument name="position" type="_1703" default="typedef_::original_name()"/> * - .. code-block:: cpp + .. code-block:: c++ void typedef__func2( const typedef_::alias& position = alias() ); GCC-XML 0.7 - .. code-block:: XML + .. code-block:: xml <Argument name="position" type="_1458" default="alias()"/> GCC-XML 0.9 - .. code-block:: XML + .. code-block:: xml <Argument name="position" type="_1703" default="typedef_::original_name()"/> * - .. code-block:: cpp + .. code-block:: c++ node* clone_tree( const std::vector<std::string> &types=std::vector<std::string>() ); GCC-XML 0.7 - .. code-block:: XML + .. code-block:: xml <Argument name="types" type="_3336" default="vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >((&allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >()))"/> GCC-XML 0.9 - .. code-block:: XML + .. code-block:: xml <Argument name="types" type="_3096" default="std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(((const std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&)((const std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >*)(& std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >()))))"/> Basically `pygccxml`_ can't help you here. The good news is that you always can change the default value expression from the script: -.. code-block:: Python +.. code-block:: python #f is "calldef_t" instance for arg in f.arguments: @@ -211,7 +211,7 @@ Consider the following C++ code: -.. code-block:: cpp +.. code-block:: c++ template< unsigned long i1> struct item_t{ Modified: pyplusplus_dev/docs/comparisons/pyste.rest =================================================================== --- pyplusplus_dev/docs/comparisons/pyste.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/comparisons/pyste.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -186,15 +186,15 @@ * code creator that generates body of "overridden" virtual functions: - .. code-block:: cpp + .. code-block:: c++ struct expensive_to_copy{...}; - .. code-block:: cpp + .. code-block:: c++ void do_smth( expensive_to_copy* x, const expensive_to_copy& y ){...} - .. code-block:: cpp + .. code-block:: c++ void do_smth(expensive_to_copy* x, const expensive_to_copy& y){ @@ -332,7 +332,7 @@ * To define namespace alias. - .. code-block:: cpp + .. code-block:: c++ namespace dt = boost::date_time; @@ -341,7 +341,7 @@ * Classes and functions support 2 modes of code generation. Example: - .. code-block:: cpp + .. code-block:: c++ struct world{ void set(std::string msg) { this->msg = msg; } @@ -351,7 +351,7 @@ First mode: - .. code-block:: cpp + .. code-block:: c++ class_<world>("world") .def("greet", &world::greet) @@ -361,7 +361,7 @@ Second mode: - .. code-block:: cpp + .. code-block:: c++ if( true ){ typedef class_<world> world_exposer_t; Modified: pyplusplus_dev/docs/documentation/architecture.rest =================================================================== --- pyplusplus_dev/docs/documentation/architecture.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/architecture.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -85,7 +85,7 @@ Before I explain how these services are integrated, take a look on the following source code: -.. code-block:: Python +.. code-block:: python mb = module_builder_t( ... ) @@ -225,7 +225,7 @@ Here is "cut & paste" of the relevant code from the source file: - .. code-block:: Python + .. code-block:: python def _create_impl(self): result = [] Modified: pyplusplus_dev/docs/documentation/containers.rest =================================================================== --- pyplusplus_dev/docs/documentation/containers.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/containers.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -80,7 +80,7 @@ indexing suite version 2, you should tell this to the ``module_builder_t.__init__`` method: -.. code-block:: Python +.. code-block:: python mb = module_builder_t( ..., indexing_suite_version=2 ) @@ -125,7 +125,7 @@ In this case there is no single place, where you can configure exported container functionality. Please take a look on the following C++ code: -.. code-block:: cpp +.. code-block:: c++ struct item{ ... Modified: pyplusplus_dev/docs/documentation/ctypes/this_and_sizeof.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/this_and_sizeof.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/ctypes/this_and_sizeof.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -15,7 +15,7 @@ Example ------- - .. code-block:: Python + .. code-block:: python mb = module_builder_t( ... ) cls = mb.class_( <<<your class>>> ) @@ -25,7 +25,7 @@ The `Python`_ class will contain two properties ``this`` and ``sizeof``. The usage is pretty simple: - .. code-block:: Python + .. code-block:: python import ctypes from <<<your module>>> import <<<your class>>> as data_t Modified: pyplusplus_dev/docs/documentation/ctypes/unions.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/unions.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/ctypes/unions.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -22,7 +22,7 @@ For this example I am going to use the following code: - .. code-block:: cpp + .. code-block:: c++ struct data_t{ union actual_data_t{ @@ -34,7 +34,7 @@ As in many other cases, `Py++`_ does the job automatically: - .. code-block:: Python + .. code-block:: python mb = module_builder_t( ... ) mb.class_( 'data_t' ).include() @@ -44,7 +44,7 @@ The generated code is boring, so I will skip it and will continue to the usage example: - .. code-block:: Python + .. code-block:: python import ctypes from <<<your module>>> import data_t Modified: pyplusplus_dev/docs/documentation/ctypes/variables.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/variables.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/ctypes/variables.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -21,7 +21,7 @@ Lets say you have the following C++ code: - .. code-block:: cpp + .. code-block:: c++ struct bytes_t{ bytes_t(){ @@ -41,7 +41,7 @@ In order to get access to the ``bytes_t::data`` and ``bytes_t::x`` you have to turn on ``expose_address`` property to ``True``: - .. code-block:: Python + .. code-block:: python mb = module_builder_t( ... ) bytes = mb.class_( 'bytes_t' ) @@ -51,7 +51,7 @@ and now it is a time to show some `ctypes`_ magic: - .. code-block:: Python + .. code-block:: python import ctypes import your_module as m Modified: pyplusplus_dev/docs/documentation/doc_string.rest =================================================================== --- pyplusplus_dev/docs/documentation/doc_string.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/doc_string.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -15,7 +15,7 @@ API description --------------- -.. code-block:: Python +.. code-block:: python mb = module_builder_t( ... ) my_class = mb.class_( 'my_class' ) @@ -37,7 +37,7 @@ ``doc_extractor`` is a callable object, which takes one argument - reference to declaration. -.. code-block:: Python +.. code-block:: python def doc_extractor( decl ): ... Modified: pyplusplus_dev/docs/documentation/functions/call_policies/as_tuple.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/as_tuple.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/call_policies/as_tuple.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -16,7 +16,7 @@ Example ------- -.. code-block:: cpp +.. code-block:: c++ struct vector3{ ... @@ -65,7 +65,7 @@ The `Py++`_ code is slightly different from the C++ one, but it is definitely shorter: -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder from pyplusplus.module_builder import call_policies Modified: pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -21,13 +21,13 @@ The call policies in `Py++`_ are named exactly as in `Boost.Python`_, only the syntax is slightly different. For instance, this call policy: -.. code-block:: cpp +.. code-block:: c++ return_internal_reference< 1, with_custodian_and_ward<1, 2> >() becomes in `Py++`_ -.. code-block:: Python +.. code-block:: python return_internal_reference( 1, with_custodian_and_ward(1, 2) ) @@ -41,7 +41,7 @@ C++ code: - .. code-block:: cpp + .. code-block:: c++ struct data{...}; const data& do_smth( const data& d, int x ); @@ -53,7 +53,7 @@ Python code: - .. code-block:: Python + .. code-block:: python from pyplusplus import module_builder from pyplusplus.module_builder import call_policies @@ -130,7 +130,7 @@ * `Py++`_ generates code with - .. code-block:: cpp + .. code-block:: c++ /* undefined call policies */ @@ -157,7 +157,7 @@ Example: -.. code-block:: cpp +.. code-block:: c++ struct identity_impl_t{}; typedef identity_impl_t* identity; @@ -173,7 +173,7 @@ `Py++`_ code: -.. code-block:: Python +.. code-block:: python mb = module_builder_t(...) mb.class_( 'identity_impl_t' ).opaque = True Modified: pyplusplus_dev/docs/documentation/functions/call_policies/custom_call_policies.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/custom_call_policies.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/call_policies/custom_call_policies.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -15,7 +15,7 @@ Example ------- -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder from pyplusplus.module_builder import call_policies @@ -26,7 +26,7 @@ Optionally you can specify name of the header file, which should be included: -.. code-block:: Python +.. code-block:: python mb.free_function( ... ).call_policies \ = call_policies.custom_call_policies( <<<your call policies code>>>, "xyz.hpp" ) Modified: pyplusplus_dev/docs/documentation/functions/call_policies/return_addressof.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/return_addressof.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/call_policies/return_addressof.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -21,7 +21,7 @@ Example ------- -.. code-block:: cpp +.. code-block:: c++ int* get_value(){ static int buffer[] = { 0,1,2,3,4 }; @@ -36,7 +36,7 @@ The `Py++`_ code is not that different from what you already know: -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder from pyplusplus.module_builder import call_policies @@ -47,7 +47,7 @@ Python code: -.. code-block:: Python +.. code-block:: python import ctypes import my_module Modified: pyplusplus_dev/docs/documentation/functions/call_policies/return_pointee_value.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/return_pointee_value.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/call_policies/return_pointee_value.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -12,7 +12,7 @@ can be used to wrap C++ functions, that return a pointer to a C++ object. The policy implements the following logic: -.. code-block:: cpp +.. code-block:: c++ if( <<<return value is NULL pointer>>> ){ return None; @@ -46,7 +46,7 @@ This technique and example was contributed by Maximilian Matthe. -.. code-block:: cpp +.. code-block:: c++ struct int_wrapper{ int_wrapper(int v) @@ -83,7 +83,7 @@ Python code: -.. code-block:: Python +.. code-block:: python import my_module @@ -93,7 +93,7 @@ Return pointee value -------------------- -.. code-block:: cpp +.. code-block:: c++ float* get_value(){ static float value = 0.5; @@ -115,7 +115,7 @@ The `Py++`_ code is not that different from what you already know: -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder from pyplusplus.module_builder import call_policies @@ -126,7 +126,7 @@ Python code: -.. code-block:: Python +.. code-block:: python import my_module Modified: pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -18,7 +18,7 @@ Example ------- -.. code-block:: cpp +.. code-block:: c++ struct image_t{ @@ -49,7 +49,7 @@ ``return_range`` class ---------------------- -.. code-block:: cpp +.. code-block:: c++ template < typename TGetSize , typename TValueType @@ -80,7 +80,7 @@ * call operator with the following signature: - .. code-block:: cpp + .. code-block:: c++ ssize_t operator()( boost::python::tuple args ); @@ -91,7 +91,7 @@ For our case, the following class could be defined: -.. code-block:: cpp +.. code-block:: c++ struct image_data_size_t{ ssize_t operator()( boost::python::tuple args ){ @@ -105,7 +105,7 @@ Passing all arguments, instead of single "self" argument gives you an ability to treat functions, where the user asked to get access to the part of the array. -.. code-block:: cpp +.. code-block:: c++ struct image_t{ ... @@ -119,7 +119,7 @@ The following "get size" class treats this situation: -.. code-block:: cpp +.. code-block:: c++ struct image_data_size_t{ ssize_t operator()( boost::python::tuple args ){ @@ -151,7 +151,7 @@ I think, now you are ready to see the whole solution: -.. code-block:: cpp +.. code-block:: c++ namespace bpl = boost::python; namespace ppc = pyplusplus::call_policies; @@ -168,7 +168,7 @@ The `Py++`_ code is not that different from what you already know: -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder from pyplusplus.module_builder import call_policies @@ -206,7 +206,7 @@ Python usage code: -.. code-block:: Python +.. code-block:: python from my_module import * Modified: pyplusplus_dev/docs/documentation/functions/default_args.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/default_args.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/default_args.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -11,7 +11,7 @@ There is more than one way to export function with default arguments. Before we proceed, please take a look on the following class: -.. code-block:: cpp +.. code-block:: c++ struct X { @@ -27,7 +27,7 @@ By default `Py++`_ exposes function with its default arguments. -.. code-block:: cpp +.. code-block:: c++ namespace bp = boost::python; @@ -42,7 +42,7 @@ The additional value of the approach is keyword arguments. You will be able to call function ``f`` like this: -.. code-block:: Python +.. code-block:: python x = X() x.f( a=13 ) @@ -55,7 +55,7 @@ macros can help to deal with default values too. You can turn ``use_overload_macro`` to ``True``: -.. code-block:: Python +.. code-block:: python import module_builder @@ -71,7 +71,7 @@ There is different trades-off between these approaches. In general you should use the first one, until you have "registration order" problem: -.. code-block:: cpp +.. code-block:: c++ struct S1; struct S2; @@ -101,7 +101,7 @@ `Py++`_ doesn't have enough information to generate code with the right class registration order. In this case you have to instruct `Py++`_ to use macros: -.. code-block:: Python +.. code-block:: python import module_builder @@ -122,7 +122,7 @@ Class constructors are special case: -.. code-block:: cpp +.. code-block:: c++ struct S1; struct S2; Modified: pyplusplus_dev/docs/documentation/functions/make_constructor.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/make_constructor.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/make_constructor.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -19,7 +19,7 @@ ------------- I am going to use the following code to demonstrate the functionality: -.. code-block:: cpp +.. code-block:: c++ #include <memory> @@ -41,7 +41,7 @@ `Py++`_ configuration is pretty simple: -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder @@ -62,7 +62,7 @@ The usage code is even more boring: -.. code-block:: Python +.. code-block:: python from your_module import number_t Modified: pyplusplus_dev/docs/documentation/functions/overloading.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/overloading.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/overloading.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -13,7 +13,7 @@ want to export, by specifying its type. Before we proceed, please take a look on the following class: -.. code-block:: cpp +.. code-block:: c++ struct X { @@ -46,7 +46,7 @@ I am sure you will like "do nothing" approach. `Py++`_ recognize that you want to export an overloaded function and will generate the right code: -.. code-block:: cpp +.. code-block:: c++ namespace bp = boost::python; @@ -82,7 +82,7 @@ It is very important to understand it. Lets take a look on the following source code: -.. code-block:: cpp +.. code-block:: c++ struct Y{ @@ -99,7 +99,7 @@ code will not compile. You have to instruct `Py++`_ to generate code, which contains function type: -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder @@ -126,7 +126,7 @@ Consider to explicitly set ``create_with_signature`` to ``True``. It will save your and your users time in future. -.. code-block:: Python +.. code-block:: python mb = module_builder_t( ... ) mb.calldefs().create_with_signature = True @@ -149,7 +149,7 @@ You can instruct `Py++`_ to generate code, which will use the macros: -.. code-block:: Python +.. code-block:: python import module_builder Modified: pyplusplus_dev/docs/documentation/functions/registration_order.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/registration_order.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/registration_order.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -22,7 +22,7 @@ Example ------- -.. code-block:: cpp +.. code-block:: c++ struct tester_t{ tester_t() {} @@ -43,7 +43,7 @@ `Py++`_ generates code, that register functions in the order they appear in the source code: -.. code-block:: cpp +.. code-block:: c++ namespace bp = boost::python; @@ -66,7 +66,7 @@ Do you want to guess what is the output of the following program: -.. code-block:: Python +.. code-block:: python import my_module tester = my_module.tester_t() @@ -97,7 +97,7 @@ 1. You can change alias of the function, by mangling the type of the argument into it: - .. code-block:: Python + .. code-block:: python mb = module_builder_t( ... ) for f in mb.class_( 'tester_t' ).member_functions(): @@ -108,7 +108,7 @@ 3. You can ask `Py++`_ to generate code, which takes into account the order of declarations: - .. code-block:: Python + .. code-block:: python from pyplusplus.creators_factory import sort_algorithms @@ -120,7 +120,7 @@ this you can change the aliases of the functions. The third step is to create small "dispatch" function in Python: - .. code-block:: Python + .. code-block:: python import my_module Modified: pyplusplus_dev/docs/documentation/functions/transformation/inout.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/inout.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/transformation/inout.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -24,7 +24,7 @@ Example ------- -.. code-block:: cpp +.. code-block:: c++ #include <string> @@ -36,7 +36,7 @@ ``std::string`` is mapped to `Python`_ string, which is immutable type, so you have to create small wrapper for the function. The following `Py++`_ code does it for you: - .. code-block:: Python + .. code-block:: python from pyplusplus import module_builder from pyplusplus import function_transformers as FT @@ -47,7 +47,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: cpp + .. code-block:: c++ namespace bp = boost::python; Modified: pyplusplus_dev/docs/documentation/functions/transformation/input.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/input.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/transformation/input.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -18,7 +18,7 @@ Example ------- -.. code-block:: cpp +.. code-block:: c++ #include <string> @@ -30,7 +30,7 @@ ``std::string`` is mapped to `Python`_ string, which is immutable type, so you have to create small wrapper for the function. The following `Py++`_ code does it for you: - .. code-block:: Python + .. code-block:: python from pyplusplus import module_builder from pyplusplus import function_transformers as FT @@ -41,7 +41,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: cpp + .. code-block:: c++ namespace bp = boost::python; Modified: pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -20,7 +20,7 @@ Example ------- -.. code-block:: cpp +.. code-block:: c++ struct file_t{ void write( char* buffer, int size ) const; @@ -29,7 +29,7 @@ In order to expose ``write`` member function we need to create small wrapper. The following `Py++`_ code does it for you: - .. code-block:: Python + .. code-block:: python from pyplusplus import module_builder from pyplusplus import function_transformers as FT @@ -40,7 +40,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: cpp + .. code-block:: c++ #include "__convenience.pypp.hpp" //Py++ header file, which contains few convenience function Modified: pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -20,7 +20,7 @@ Example ------- -.. code-block:: cpp +.. code-block:: c++ struct vector3{ @@ -36,7 +36,7 @@ In order to expose ``init`` member function we need to create small wrapper: The following `Py++`_ code does it for you: - .. code-block:: Python + .. code-block:: python from pyplusplus import module_builder from pyplusplus import function_transformers as FT @@ -47,7 +47,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: cpp + .. code-block:: c++ #include "__convenience.pypp.hpp" //Py++ header file, which contains few convenience function Modified: pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -28,7 +28,7 @@ Example ------- -.. code-block:: cpp +.. code-block:: c++ #include <string> @@ -40,7 +40,7 @@ ``std::string`` is mapped to `Python`_ string, which is immutable type, so you have to create small wrapper for the function. The following `Py++`_ code does it for you: - .. code-block:: Python + .. code-block:: python from pygccxml import declarations from pyplusplus import module_builder @@ -52,7 +52,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: cpp + .. code-block:: c++ namespace bp = boost::python; Modified: pyplusplus_dev/docs/documentation/functions/transformation/name_mangling.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/name_mangling.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/transformation/name_mangling.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -20,7 +20,7 @@ name mangling to create function-wrappers for overloaded and\\or free functions. Consider the following use case: - .. code-block:: cpp + .. code-block:: c++ void get_distance( long& ); void get_distance( double& ); @@ -28,7 +28,7 @@ In order to expose ``get_distance`` functions you have to create 2 function wrappers: - .. code-block:: cpp + .. code-block:: c++ long get_distance_as_long(){...} double get_distance_as_double(){...} @@ -37,7 +37,7 @@ on return type only. You also have to exposes them under different aliases, otherwise they will not be callable from `Python`_: - .. code-block:: cpp + .. code-block:: c++ namespace bp = boost::python; BOOST_PYTHON_MODULE(...){ @@ -64,7 +64,7 @@ If you are exposing an overloaded function, in that case `Py++`_ uses the ugly function-wrapper name as an alias. It is up to you to change the alias: - .. code-block:: Python + .. code-block:: python from pyplusplus import module_builder from pyplusplus import function_transformers as FT Modified: pyplusplus_dev/docs/documentation/functions/transformation/output.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/output.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/transformation/output.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -20,7 +20,7 @@ Example ------- -.. code-block:: cpp +.. code-block:: c++ #include <string> @@ -32,7 +32,7 @@ ``std::string`` is mapped to `Python`_ string, which is immutable type, so you have to create small wrapper for the function. The following `Py++`_ code does it for you: - .. code-block:: Python + .. code-block:: python from pyplusplus import module_builder from pyplusplus import function_transformers as FT @@ -43,7 +43,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: cpp + .. code-block:: c++ namespace bp = boost::python; Modified: pyplusplus_dev/docs/documentation/functions/transformation/output_static_array.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/output_static_array.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/transformation/output_static_array.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -19,7 +19,7 @@ Example ------- -.. code-block:: cpp +.. code-block:: c++ struct vector3{ @@ -35,7 +35,7 @@ In order to expose ``get_values`` member function we need to create small wrapper. The following `Py++`_ code does it for you: - .. code-block:: Python + .. code-block:: python from pyplusplus import module_builder from pyplusplus import function_transformers as FT @@ -46,7 +46,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: cpp + .. code-block:: c++ #include "__convenience.pypp.hpp" //Py++ header file, which contains few convenience function Modified: pyplusplus_dev/docs/documentation/functions/transformation/transfer_ownership.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/transfer_ownership.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/transformation/transfer_ownership.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -24,7 +24,7 @@ Example ------- -.. code-block:: cpp +.. code-block:: c++ struct resource_t{...}; @@ -36,7 +36,7 @@ have to create small wrapper, which will take ``std::auto_ptr`` as an argument. The following `Py++`_ code does it for you: - .. code-block:: Python + .. code-block:: python from pygccxml import declarations from pyplusplus import module_builder @@ -51,7 +51,7 @@ What you see below is the relevant pieces of generated code: - .. code-block:: cpp + .. code-block:: c++ namespace bp = boost::python; Modified: pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -15,7 +15,7 @@ An often mentioned example that demonstrates the problem is the ``get_size()`` member function of a fictitious image class: -.. code-block:: cpp +.. code-block:: c++ void get_size(int& width, int& height); @@ -25,13 +25,13 @@ way to expose this function to `Python`_ is to create small wrapper, which will return a tuple. In `Python`_, the above function would instead be invoked like this: -.. code-block:: Python +.. code-block:: python width, height = img.get_size() and the wrapper could look like this: -.. code-block:: cpp +.. code-block:: c++ boost::python::tuple get_size( const image_t& img ){ int width; @@ -57,7 +57,7 @@ to provide the semantics of an argument(s) and then it will take care of producing the correct code: -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder from pyplusplus import function_transformers as FT Modified: pyplusplus_dev/docs/documentation/how_to/absolute_relative_paths.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/absolute_relative_paths.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/how_to/absolute_relative_paths.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -18,14 +18,14 @@ `Py++`_ does not handle relative paths, as input, well. It tries, but there are uses cases it fails. In these cases it generates empty module - nothing is exposed: -.. code-block:: Python +.. code-block:: python mb = module_builder( [ 'date_time/date_time.hpp' ], ... ) mb.split_module( ... ) I recommend you to use absolute paths instead of relative ones: -.. code-block:: Python +.. code-block:: python import os mb = module_builder( [ os.path.abspath('date_time/date_time.hpp') ], ... ) Modified: pyplusplus_dev/docs/documentation/how_to/best_practices.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/best_practices.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/how_to/best_practices.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -41,7 +41,7 @@ ``module_builder_t.__init__`` method takes reference to an instance of cache class or ``None``: - .. code-block:: Python + .. code-block:: python from module_builder import * mb = module_builder_t( ..., cache=file_cache_t( <<<path to project cache file>>> ), ... ) @@ -60,7 +60,7 @@ implemented an initial version of the functionality. After small discussion, we agreed on the following interface: - .. code-block:: Python + .. code-block:: python class module_builder_t( ... ): ... @@ -77,7 +77,7 @@ `this error`_. `Py++`_ will automatically split generated code for the huge classes to few files: - .. code-block:: Python + .. code-block:: python mb = module_builder_t( ... ) ... @@ -99,7 +99,7 @@ recommended that you use "os.path.abspath()" to transform the header file to be processed into an absolute path: - .. code-block:: Python + .. code-block:: python #the following code will expose nothing mb = module_builder( [ 'date_time/date_time.hpp' ], ... ) @@ -148,7 +148,7 @@ instead of loading the content of the previously generated file from the disk and comparing against it. - .. code-block:: Python + .. code-block:: python mb = module_builder_t( ... ) ... Modified: pyplusplus_dev/docs/documentation/how_to/exception_translation.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/exception_translation.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/how_to/exception_translation.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -25,7 +25,7 @@ what should be done. I will use that example, to show how it could be done with `Py++`_: -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder_t @@ -42,7 +42,7 @@ and than to create an instance of Python built-in exception. That is exactly why `Py++`_ provides additional API: -.. code-block:: Python +.. code-block:: python mb = module_builder_t( ... ) my_exception = mb.class_( 'my_exception' ) Modified: pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -13,7 +13,7 @@ Let me explain. -.. code-block:: cpp +.. code-block:: c++ template < class T> struct holder{ ... }; @@ -27,7 +27,7 @@ It is pretty simple to change the alias of the class, or any other declaration: -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder Modified: pyplusplus_dev/docs/documentation/how_to/hints.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/hints.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/how_to/hints.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -13,7 +13,7 @@ For example: -.. code-block:: cpp +.. code-block:: c++ #include <vector> typedef std::vector< int > numbers; @@ -23,7 +23,7 @@ `Py++`_ will use "numbers" as Python class name: -.. code-block:: cpp +.. code-block:: c++ using boost::python; class_< std::vector< int > >( "numbers" ) @@ -38,7 +38,7 @@ The previous approach is "implicit" - `Py++`_ does something behind the scene. Recently (version 0.8.6 ), another approach was introduced: -.. code-block:: cpp +.. code-block:: c++ #include <vector> Modified: pyplusplus_dev/docs/documentation/how_to/templates.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/templates.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/how_to/templates.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -10,7 +10,7 @@ I would like to introduce the following piece of code. I am going to use it for most exlanations. -.. code-block:: cpp +.. code-block:: c++ // file point.h template< class T> @@ -39,14 +39,14 @@ You can instantiate template class using operator ``sizeof``: -.. code-block:: cpp +.. code-block:: c++ sizeof( point_t<int> ); In order to instantiate a function you have to call it: -.. code-block:: cpp +.. code-block:: c++ void instantiate(){ double x = distance( point_t<t>() ); @@ -64,7 +64,7 @@ can create a small code generator, which will "instantiate the class". It is pretty easy to blend together the generated code and the existing one: -.. code-block:: Python +.. code-block:: python from module_builder import module_builder_t, create_text_fc @@ -83,7 +83,7 @@ Functions templated on return type ---------------------------------- -.. code-block:: cpp +.. code-block:: c++ environment_t env; std::string path = env.get_value< std::string >( "PATH" ); @@ -105,7 +105,7 @@ Generated code: -.. code-block:: cpp +.. code-block:: c++ bp::class_< environment_t >( "environment_t" ) ... @@ -116,7 +116,7 @@ The correct code: -.. code-block:: cpp +.. code-block:: c++ bp::class_< environment_t >( "environment_t" ) .def( "get_value" @@ -128,7 +128,7 @@ The perfect one: -.. code-block:: cpp +.. code-block:: c++ bp::class_< environment_t >( "environment_t" ) ... @@ -141,7 +141,7 @@ `Py++`_ contains a work-around to the problem: -.. code-block:: Python +.. code-block:: python mb = module_builder_t( ..., optimize_queries=False, ... ) environment = mb.class_( "environment_t" ) Modified: pyplusplus_dev/docs/documentation/inserting_code.rest =================================================================== --- pyplusplus_dev/docs/documentation/inserting_code.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/inserting_code.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -18,7 +18,7 @@ Almost every ``Boost.Python`` module has the following structure: -.. code-block:: cpp +.. code-block:: c++ //declarations code ... @@ -45,7 +45,7 @@ Example ------- -.. code-block:: Python +.. code-block:: python mb = module_builder_t( ... ) mb.build_code_creator( ... ) @@ -60,7 +60,7 @@ ``class_t`` declaration defines few methods, which add user code to the generated one. Lets take a look on the following use case: -.. code-block:: cpp +.. code-block:: c++ struct window_t{ ... @@ -74,7 +74,7 @@ In the near future `Py++`_ will eliminate the need of creating hand written wrapper for this use case. -.. code-block:: cpp +.. code-block:: c++ boost::python::tuple get_window_size( const window_t& win ){ int h(0), w(0); @@ -84,7 +84,7 @@ Now you have to register it: -.. code-block:: cpp +.. code-block:: c++ using boost::python; class_< window_t >( ... ) @@ -113,7 +113,7 @@ What is ``works_on_instance`` argument for? In our case, we added new method to the class. The first argument of the call will be ``self``. - .. code-block:: Python + .. code-block:: python #From Python user can call this method like this: win = window_t( ) @@ -121,7 +121,7 @@ If you will pass ``works_on_instance=False`` the following code will be generated: - .. code-block:: cpp + .. code-block:: c++ { class_< window_t > window_exporter( "window_t" ); @@ -132,7 +132,7 @@ And in this case, user will be forced to pass reference to ``window_t`` object: - .. code-block:: cpp + .. code-block:: c++ win = window_t() height, width = window_t.get_size( win ) @@ -140,7 +140,7 @@ Example ------- -.. code-block:: Python +.. code-block:: python mb = module_builder_t( ... ) window = mb.class_( 'window_t' ) @@ -177,7 +177,7 @@ Solution -------- -.. code-block:: Python +.. code-block:: python def inject_code( cls ): constructors = cls.constructors() @@ -195,7 +195,7 @@ #If you need to add new class variables: cls.add_wrapper_code( <<<variable declaration>>> ) -.. code-block:: Python +.. code-block:: python mb = module_builder_t( ... ) for cls in mb.classes( <<<relevant classes only>>> ): @@ -212,7 +212,7 @@ 1. The easiest and the most effective one - tell to `Py++`_ that generated code for the declaration should include additional files: - .. code-block:: Python + .. code-block:: python mb = module_builder_t( ... ) my_class = mb.class_( ... ) @@ -224,7 +224,7 @@ 2. Other approach is a little bit low level, but it allows you to add your header files to every generated file: - .. code-block:: Python + .. code-block:: python mb = module_builder_t( ... ) ... @@ -233,7 +233,7 @@ You can also replace all (to be) generated header files with your own set: - .. code-block:: Python + .. code-block:: python mb.code_creator.replace_included_headers( ["stdafx.h"] ) Modified: pyplusplus_dev/docs/documentation/multi_module_development.rest =================================================================== --- pyplusplus_dev/docs/documentation/multi_module_development.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/multi_module_development.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -29,7 +29,7 @@ The code: -.. code-block:: cpp +.. code-block:: c++ namespace core{ class image_i{ @@ -55,7 +55,7 @@ Every `Py++`_ declaration has ``already_exposed`` property. This property says to `Py++`_ that the declaration is already exposed in another module: -.. code-block:: Python +.. code-block:: python #generate_code.py script @@ -72,7 +72,7 @@ `Py++`_ will generate code very similar to the the following one: -.. code-block:: cpp +.. code-block:: c++ //file core.cpp namespace bp = boost::python; @@ -95,7 +95,7 @@ .def( "load", bp::pure_virtual( &::core::image_i::load ) ); } -.. code-block:: cpp +.. code-block:: c++ //file png.cpp struct png_image_t_wrapper : png::png_image_t, bp::wrapper< png::png_image_t > { @@ -143,7 +143,7 @@ Usage example: -.. code-block:: Python +.. code-block:: python mb = module_builder_t( ... ) mb.register_module_dependency( <<<other module generated code directory>>> ) Modified: pyplusplus_dev/docs/documentation/properties.rest =================================================================== --- pyplusplus_dev/docs/documentation/properties.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/properties.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -19,7 +19,7 @@ Usage example ------------- -.. code-block:: cpp +.. code-block:: c++ struct number{ ... @@ -30,7 +30,7 @@ float m_value; } -.. code-block:: Python +.. code-block:: python mb = module_builder_t( ... ) number = mb.class_( 'number' ) @@ -43,7 +43,7 @@ built-in algorithm, which automatically recognizes properties and adds them to the class: -.. code-block:: Python +.. code-block:: python mb = module_builder_t( ... ) number = mb.class_( 'number' ) @@ -63,11 +63,11 @@ Consider the following use case: -.. code-block:: cpp +.. code-block:: c++ struct nested{ ... }; -.. code-block:: cpp +.. code-block:: c++ struct data{ ... @@ -82,7 +82,7 @@ `call policies`_. Same precondition holds for exposing member function as property: -.. code-block:: Python +.. code-block:: python mb = module_builder_t( ... ) get_nested = mb.member_function( 'get_nested' ) Modified: pyplusplus_dev/docs/documentation/split_module.rest =================================================================== --- pyplusplus_dev/docs/documentation/split_module.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/split_module.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -34,7 +34,7 @@ Usage example ------------- -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder @@ -86,7 +86,7 @@ Usage example ------------- -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder @@ -127,7 +127,7 @@ Usage example ------------- -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder @@ -148,7 +148,7 @@ Usage example ------------- -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder @@ -170,7 +170,7 @@ integrate/add this functionality to `Py++`_. Nevertheless, you can enjoy from this time-saving feature: -.. code-block:: Python +.. code-block:: python from pyplusplus import module_builder from pyplusplus import code_creators @@ -191,12 +191,12 @@ Class ``module_builder_t`` contains 3 functions, related to file generation: * - .. code-block:: Python + .. code-block:: python def write_module( file_name ) * - .. code-block:: Python + .. code-block:: python def split_module( self , dir_name @@ -227,7 +227,7 @@ forced to recompile the whole project. * - .. code-block:: Python + .. code-block:: python def balanced_split_module( self , dir_name Modified: pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest =================================================================== --- pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -124,7 +124,7 @@ open source projects it to have license text within every source file. You can do it with one line of code only: -.. code-block:: Python +.. code-block:: python mb.code_creator.license = <<<your license text>>> Modified: pyplusplus_dev/docs/documentation/warnings.rest =================================================================== --- pyplusplus_dev/docs/documentation/warnings.rest 2009-01-26 19:49:49 UTC (rev 1622) +++ pyplusplus_dev/docs/documentation/warnings.rest 2009-01-26 20:00:13 UTC (rev 1623) @@ -24,11 +24,11 @@ some cases provide hints about how to resolve the problem. Few examples: * - .. code-block:: cpp + .. code-block:: c++ struct Y{ ... }; - .. code-block:: cpp + .. code-block:: c++ struct X{ ... @@ -38,7 +38,7 @@ Member function ``do_smth`` cannot be overridden in Python because ... . * - .. code-block:: cpp + .. code-block:: c++ struct window{ ... @@ -51,7 +51,7 @@ should define ``BOOST_PYTHON_MAX_ARITY`` macro. *... [truncated message content] |
From: <rom...@us...> - 2009-01-30 22:51:50
|
Revision: 1644 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1644&view=rev Author: roman_yakovenko Date: 2009-01-30 21:33:48 +0000 (Fri, 30 Jan 2009) Log Message: ----------- sphinx Modified Paths: -------------- pyplusplus_dev/docs/comparisons/compare_to.rest pyplusplus_dev/docs/examples/examples.rest pyplusplus_dev/docs/peps/peps_index.rest pyplusplus_dev/docs/pyplusplus.rest pyplusplus_dev/docs/troubleshooting_guide/lessons_learned.rest Added Paths: ----------- pyplusplus_dev/docs/peps/dsl_challenge_introduction.irest Removed Paths: ------------- pygccxml_dev/docs/www_configuration.py pyplusplus_dev/docs/peps/dsl_challenge_introduction.rest Deleted: pygccxml_dev/docs/www_configuration.py =================================================================== --- pygccxml_dev/docs/www_configuration.py 2009-01-30 20:34:42 UTC (rev 1643) +++ pygccxml_dev/docs/www_configuration.py 2009-01-30 21:33:48 UTC (rev 1644) @@ -1,4 +0,0 @@ -name = 'pygccxml' -files_to_skip = ['definition.rest'] -names = { 'query_interface' : 'query interface' - , 'upgrade_issues' : 'gccxml 0.7 => 0.9 upgrade issues' } Modified: pyplusplus_dev/docs/comparisons/compare_to.rest =================================================================== --- pyplusplus_dev/docs/comparisons/compare_to.rest 2009-01-30 20:34:42 UTC (rev 1643) +++ pyplusplus_dev/docs/comparisons/compare_to.rest 2009-01-30 21:33:48 UTC (rev 1644) @@ -2,8 +2,6 @@ Compare Py++ to ... =================== -.. contents:: Table of contents - ----- Pyste ----- @@ -63,5 +61,11 @@ .. _`Python Wrapper Tools: A Performance Study` : http://people.web.psi.ch/geus/talks/europython2004_geus.pdf + +.. toctree:: + + pyste.rest + + .. _`Py++` : ./../pyplusplus.html .. _`Pyste`: http://www.boost.org/libs/python/doc/index.html Modified: pyplusplus_dev/docs/examples/examples.rest =================================================================== --- pyplusplus_dev/docs/examples/examples.rest 2009-01-30 20:34:42 UTC (rev 1643) +++ pyplusplus_dev/docs/examples/examples.rest 2009-01-30 21:33:48 UTC (rev 1644) @@ -1,9 +1,6 @@ ======== Examples ======== - -.. contents:: Table of contents - ------------------- Graphical interface ------------------- @@ -44,6 +41,12 @@ .. _`pyboost` : ./boost/boost.html + +.. toctree:: + + boost/boost.rest + easybmp/easybmp.rest + .. _`boost.date_time` : http://boost.org/doc/html/date_time.html .. _`boost.crc` : http://boost.org/libs/crc/index.html .. _`boost.rational` : http://boost.org/libs/rational/index.html Copied: pyplusplus_dev/docs/peps/dsl_challenge_introduction.irest (from rev 1638, pyplusplus_dev/docs/peps/dsl_challenge_introduction.rest) =================================================================== --- pyplusplus_dev/docs/peps/dsl_challenge_introduction.irest (rev 0) +++ pyplusplus_dev/docs/peps/dsl_challenge_introduction.irest 2009-01-30 21:33:48 UTC (rev 1644) @@ -0,0 +1,11 @@ + +More or less formal definition of DSL could be found `here`__. + +.. __ : http://en.wikipedia.org/wiki/Domain_Specific_Language + +`Py++`_ has been created to solve single and well-defined problem: to create +Python bindings for C++ projects. The good news - `Py++`_ achieved the goal, +the bad news - users are forced to read the documentation. DSL cannot completely +solve the problem, but it can eliminate the need to read documentation in 80% of +the cases. + Property changes on: pyplusplus_dev/docs/peps/dsl_challenge_introduction.irest ___________________________________________________________________ Added: svn:mergeinfo + Deleted: pyplusplus_dev/docs/peps/dsl_challenge_introduction.rest =================================================================== --- pyplusplus_dev/docs/peps/dsl_challenge_introduction.rest 2009-01-30 20:34:42 UTC (rev 1643) +++ pyplusplus_dev/docs/peps/dsl_challenge_introduction.rest 2009-01-30 21:33:48 UTC (rev 1644) @@ -1,11 +0,0 @@ - -More or less formal definition of DSL could be found `here`__. - -.. __ : http://en.wikipedia.org/wiki/Domain_Specific_Language - -`Py++`_ has been created to solve single and well-defined problem: to create -Python bindings for C++ projects. The good news - `Py++`_ achieved the goal, -the bad news - users are forced to read the documentation. DSL cannot completely -solve the problem, but it can eliminate the need to read documentation in 80% of -the cases. - Modified: pyplusplus_dev/docs/peps/peps_index.rest =================================================================== --- pyplusplus_dev/docs/peps/peps_index.rest 2009-01-30 20:34:42 UTC (rev 1643) +++ pyplusplus_dev/docs/peps/peps_index.rest 2009-01-30 21:33:48 UTC (rev 1644) @@ -2,8 +2,6 @@ TODO ==== -.. contents:: Table of contents - ----------- Description ----------- @@ -24,6 +22,10 @@ .. _`DSL challenge` : ./dsl_challenge.html +.. toctree:: + + dsl_challenge.rest + .. _`Py++` : ./../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org Modified: pyplusplus_dev/docs/pyplusplus.rest =================================================================== --- pyplusplus_dev/docs/pyplusplus.rest 2009-01-30 20:34:42 UTC (rev 1643) +++ pyplusplus_dev/docs/pyplusplus.rest 2009-01-30 21:33:48 UTC (rev 1644) @@ -2,8 +2,6 @@ Py++ introduction ================= -.. contents:: Table of contents - ------------- What is Py++? ------------- @@ -169,6 +167,21 @@ `Boost Software License`_. + +.. toctree:: + + tutorials.rest + download.rest + links.rest + quotes.rest + comparisons/compare_to.rest + documentation/index.rest + examples/examples.rest + history/history.rest + peps/peps_index.rest + troubleshooting_guide/lessons_learned.rest + + .. _`Py++` : ./pyplusplus.html .. _`pygccxml` : ./../pygccxml/pygccxml.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html Modified: pyplusplus_dev/docs/troubleshooting_guide/lessons_learned.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/lessons_learned.rest 2009-01-30 20:34:42 UTC (rev 1643) +++ pyplusplus_dev/docs/troubleshooting_guide/lessons_learned.rest 2009-01-30 21:33:48 UTC (rev 1644) @@ -2,8 +2,6 @@ Boost.Python - lessons learned ============================== -.. contents:: Table of contents - -------- Preamble -------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-02-01 06:22:34
|
Revision: 1645 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1645&view=rev Author: roman_yakovenko Date: 2009-02-01 06:22:29 +0000 (Sun, 01 Feb 2009) Log Message: ----------- sphinx Modified Paths: -------------- pyplusplus_dev/docs/peps/dsl_challenge.rest pyplusplus_dev/docs/peps/peps_index.rest pyplusplus_dev/docs/pyplusplus.rest pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/automatic_conversion.rest pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/custom_rvalue.cpp.rest pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/sconstruct.rest pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/test.py.rest pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/tuples.hpp.rest pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/tuples_tester.cpp.rest pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.cpp.rest pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.rest pyplusplus_dev/docs/troubleshooting_guide/exceptions/sconstruct.rest pyplusplus_dev/docs/troubleshooting_guide/exceptions/test.py.rest pyplusplus_dev/docs/troubleshooting_guide/lessons_learned.rest Removed Paths: ------------- pyplusplus_dev/docs/peps/www_configuration.py pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/www_configuration.py pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/easy_extending_guide.odt pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/easy_extending_guide.pdf pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/www_configuration.py pyplusplus_dev/docs/troubleshooting_guide/exceptions/www_configuration.py pyplusplus_dev/docs/www_configuration.py Modified: pyplusplus_dev/docs/peps/dsl_challenge.rest =================================================================== --- pyplusplus_dev/docs/peps/dsl_challenge.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/peps/dsl_challenge.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -2,13 +2,11 @@ DSL challenge ============= -.. contents:: Table of contents - ------------ Introduction ------------ -.. include:: ./dsl_challenge_introduction.rest +.. include:: ./dsl_challenge_introduction.irest ------------------- Py++ user interface Modified: pyplusplus_dev/docs/peps/peps_index.rest =================================================================== --- pyplusplus_dev/docs/peps/peps_index.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/peps/peps_index.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -11,20 +11,9 @@ For small features, the description of the feature and it's implementation will be written here. Big features will get their own page. ------------------------------------------- -Domain Specific Language ( DSL ) challenge ------------------------------------------- - -.. include:: ./dsl_challenge_introduction.rest - -Please read `DSL challenge`_ document and contribute your ideas, thoughts or just -comments. - -.. _`DSL challenge` : ./dsl_challenge.html - .. toctree:: - dsl_challenge.rest + Domain Specific Language( DSL ) challenge <dsl_challenge.rest> .. _`Py++` : ./../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html Deleted: pyplusplus_dev/docs/peps/www_configuration.py =================================================================== --- pyplusplus_dev/docs/peps/www_configuration.py 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/peps/www_configuration.py 2009-02-01 06:22:29 UTC (rev 1645) @@ -1,5 +0,0 @@ -name = 'PEP index' -main_html_file = 'peps_index.html' -files_to_skip = ['dsl_challenge_introduction.rest'] -names = { 'function_transformation' : 'function transformation' - , 'dsl_challenge' : 'DSL challenge' } Modified: pyplusplus_dev/docs/pyplusplus.rest =================================================================== --- pyplusplus_dev/docs/pyplusplus.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/pyplusplus.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -167,13 +167,16 @@ `Boost Software License`_. +--------------------------- +Py++ documentation contents +--------------------------- .. toctree:: - tutorials.rest - download.rest - links.rest - quotes.rest + documentation/tutorials/tutorials.rest + download.rest + links.rest + quotes.rest comparisons/compare_to.rest documentation/index.rest examples/examples.rest Modified: pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/automatic_conversion.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/automatic_conversion.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/automatic_conversion.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -2,8 +2,6 @@ Automatic conversion between C++ and Python types ================================================= -.. contents:: Table of contents - ------------ Introduction ------------ @@ -28,27 +26,14 @@ Files ----- -* `tuples.hpp`_ file contains Boost.Tuple to\\from Python tuple conversion - implementation +.. toctree:: -* `tuples_tester.cpp`_ file contains few functions, which test the tuples - conversion functionality + tuples.hpp.rest + tuples_tester.cpp.rest + custom_rvalue.cpp.rest + sconstruct.rest + test.py.rest -* `custom_rvalue.cpp`_ file contains example of registration custom r-value - converter - -* `sconstruct`_ file contains build instructions for scons build tool. - -* `test.py`_ file contains complete unit tests for both example - -All files contain comments, which describe what and why was done. - -.. _`tuples.hpp` : ./tuples.hpp.html -.. _`tuples_tester.cpp` : ./tuples_tester.cpp.html -.. _`custom_rvalue.cpp` : ./custom_rvalue.cpp.html -.. _`sconstruct` : ./sconstruct.html -.. _`test.py` : ./test.py.html - -------- Download -------- @@ -56,9 +41,3 @@ `automatic_conversion.zip`_ .. _`automatic_conversion.zip` : ./automatic_conversion.zip - - -.. _`Py++` : ./../pyplusplus.html -.. _`pygccxml` : http://www.language-binding.net/pygccxml/pygccxml.html -.. _`SourceForge`: http://sourceforge.net/index.php - Modified: pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/custom_rvalue.cpp.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/custom_rvalue.cpp.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/custom_rvalue.cpp.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -1,2 +1,6 @@ +===================================== +Custom r-value converter registration +===================================== + .. literalinclude:: ./custom_rvalue.cpp :language: c++ Modified: pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/sconstruct.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/sconstruct.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/sconstruct.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -1,2 +1,6 @@ +==================== +Build script (SCons) +==================== + .. literalinclude:: ./sconstruct :language: python Modified: pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/test.py.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/test.py.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/test.py.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -1,2 +1,6 @@ +==================== +Usage example/tester +==================== + .. literalinclude:: ./test.py :language: python Modified: pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/tuples.hpp.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/tuples.hpp.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/tuples.hpp.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -1,2 +1,6 @@ +============================================ +Boost.Python to/from Python tuple conversion +============================================ + .. literalinclude:: ./tuples.hpp :language: c++ Modified: pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/tuples_tester.cpp.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/tuples_tester.cpp.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/tuples_tester.cpp.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -1,2 +1,6 @@ +=================================================== +Boost.Python to/from Python tuple conversion tester +=================================================== + .. literalinclude:: ./tuples_tester.cpp :language: c++ Deleted: pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/www_configuration.py =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/www_configuration.py 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/www_configuration.py 2009-02-01 06:22:29 UTC (rev 1645) @@ -1,3 +0,0 @@ -name = 'automatic conversion' -files_to_skip = ['definition.rest'] -names = {} Deleted: pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/easy_extending_guide.odt =================================================================== (Binary files differ) Deleted: pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/easy_extending_guide.pdf =================================================================== (Binary files differ) Deleted: pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/www_configuration.py =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/www_configuration.py 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/easy_extending_guide/www_configuration.py 2009-02-01 06:22:29 UTC (rev 1645) @@ -1,2 +0,0 @@ -name = 'easy extending guide' -names = {} Modified: pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.cpp.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.cpp.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.cpp.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -1,2 +1,6 @@ +================================== +`exceptions.cpp` - C++ source code +================================== + .. literalinclude:: ./exceptions.cpp :language: c++ Modified: pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -2,8 +2,6 @@ Custom exceptions ================= -.. contents:: Table of contents - ------------ Introduction ------------ @@ -47,18 +45,14 @@ Files ----- -* `exceptions.cpp`_ file contains source code for the guide - -* `sconstruct`_ file contains build instructions for scons build tool. - -* `test.py`_ file contains complete unit test suite - All files contain comments, which describe what and why was done. -.. _`exceptions.cpp` : ./exceptions.cpp.html -.. _`sconstruct` : ./sconstruct.html -.. _`test.py` : ./test.py.html +.. toctree:: + `exceptions.cpp` - C++ source code <exceptions.cpp.rest> + Build script (SCons) <sconstruct.rest> + Usage example/tester <test.py.rest> + -------- Download -------- @@ -67,8 +61,3 @@ .. _`exceptions.zip` : ./exceptions.zip - -.. _`Py++` : ./../pyplusplus.html -.. _`pygccxml` : http://www.language-binding.net/pygccxml/pygccxml.html -.. _`SourceForge`: http://sourceforge.net/index.php - Modified: pyplusplus_dev/docs/troubleshooting_guide/exceptions/sconstruct.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/exceptions/sconstruct.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/exceptions/sconstruct.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -1,2 +1,6 @@ +==================== +Build script (SCons) +==================== + .. literalinclude:: ./sconstruct :language: python Modified: pyplusplus_dev/docs/troubleshooting_guide/exceptions/test.py.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/exceptions/test.py.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/exceptions/test.py.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -1,2 +1,6 @@ +==================== +Usage example/tester +==================== + .. literalinclude:: ./test.py :language: python Deleted: pyplusplus_dev/docs/troubleshooting_guide/exceptions/www_configuration.py =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/exceptions/www_configuration.py 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/exceptions/www_configuration.py 2009-02-01 06:22:29 UTC (rev 1645) @@ -1,3 +0,0 @@ -name = 'exceptions' -files_to_skip = ['definition.rest'] -names = {} Modified: pyplusplus_dev/docs/troubleshooting_guide/lessons_learned.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/lessons_learned.rest 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/troubleshooting_guide/lessons_learned.rest 2009-02-01 06:22:29 UTC (rev 1645) @@ -6,37 +6,20 @@ Preamble -------- -Software development is an interactive process. During `Py++`_ development +Software development is an interactive process. During `Py++` development I see many interesting problems and even more interesting solutions. On this page you will find my collection of the solutions to some of the problems. +.. toctree:: -`custom smart pointer class`_ + easy_extending_guide <easy_extending_guide/easy_extending_guide.rest> - .. include:: ./smart_ptrs/definition.irest + custom smart pointer class <smart_ptrs/smart_ptrs.rest> -.. _`custom smart pointer class` : ./smart_ptrs/smart_ptrs.html + `boost::shared_ptr< const T>` <shared_ptr/shared_ptr.rest> -`boost::shared_ptr< const T>`_ + automatic conversion <automatic_conversion/automatic_conversion.rest> - .. include:: ./shared_ptr/definition.irest + exceptions <exceptions/exceptions.rest> -.. _`boost::shared_ptr< const T>` : ./shared_ptr/shared_ptr.html - -`automatic conversion`_ - - .. include:: ./automatic_conversion/definition.irest - -.. _`automatic conversion` : ./automatic_conversion/automatic_conversion.html - -`exceptions`_ - - .. include:: ./exceptions/definition.irest - -.. _`exceptions` : ./exceptions/exceptions.html - -.. _`Py++` : ./../pyplusplus.html -.. _`pygccxml` : http://www.language-binding.net/pygccxml/pygccxml.html -.. _`SourceForge`: http://sourceforge.net/index.php - Deleted: pyplusplus_dev/docs/www_configuration.py =================================================================== --- pyplusplus_dev/docs/www_configuration.py 2009-01-30 21:33:48 UTC (rev 1644) +++ pyplusplus_dev/docs/www_configuration.py 2009-02-01 06:22:29 UTC (rev 1645) @@ -1,3 +0,0 @@ -name = 'Py++' -main_html_file = 'pyplusplus.html' -files_to_skip = ['definition.rest', 'examples.rest'] \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-02-01 20:00:49
|
Revision: 1647 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1647&view=rev Author: roman_yakovenko Date: 2009-02-01 20:00:45 +0000 (Sun, 01 Feb 2009) Log Message: ----------- sphinx Modified Paths: -------------- pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest pyplusplus_dev/docs/documentation/functions/functions.rest pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest pyplusplus_dev/docs/documentation/how_to/how_to.rest pyplusplus_dev/docs/documentation/index.rest pyplusplus_dev/docs/documentation/tutorials/module_builder/generate_code.py.rest pyplusplus_dev/docs/documentation/tutorials/module_builder/generated.cpp.rest pyplusplus_dev/docs/documentation/tutorials/module_builder/hello_world.hpp.rest pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest pyplusplus_dev/docs/documentation/tutorials/tutorials.rest pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/bindings.cpp.rest pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/classes.hpp.rest pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/sconstruct.rest pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptr.h.rest pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptrs.rest pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/test.py.rest Added Paths: ----------- pyplusplus_dev/docs/documentation/apidocs/api.rest pyplusplus_dev/docs/documentation/tutorials/pyplusplus_gui.rest Removed Paths: ------------- pyplusplus_dev/docs/comparisons/www_configuration.py pyplusplus_dev/docs/documentation/apidocs/www_configuration.py pyplusplus_dev/docs/documentation/ctypes/www_configuration.py pyplusplus_dev/docs/documentation/easy_extending_guide.odt pyplusplus_dev/docs/documentation/functions/call_policies/www_configuration.py pyplusplus_dev/docs/documentation/functions/transformation/www_configuration.py pyplusplus_dev/docs/documentation/functions/www_configuration.py pyplusplus_dev/docs/documentation/how_to/www_configuration.py pyplusplus_dev/docs/documentation/indexing_suite_v2_files/www_configuration.py pyplusplus_dev/docs/documentation/tutorials/module_builder/www_configuration.py pyplusplus_dev/docs/documentation/tutorials/pyplusplus_gui.rest pyplusplus_dev/docs/documentation/tutorials/www_configuration.py pyplusplus_dev/docs/documentation/www_configuration.py pyplusplus_dev/docs/examples/boost/www_configuration.py pyplusplus_dev/docs/examples/easybmp/www_configuration.py pyplusplus_dev/docs/osdc2006/www_configuration.py pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/www_configuration.py pyplusplus_dev/docs/troubleshooting_guide/www_configuration.py pyplusplus_dev/docs/tutorials.rest Deleted: pyplusplus_dev/docs/comparisons/www_configuration.py =================================================================== --- pyplusplus_dev/docs/comparisons/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/comparisons/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,5 +0,0 @@ -name = 'compare to ...' -main_html_file = 'compare_to.html' -names = { 'compare_to' : 'compare to ...' - , 'pyste' : 'Pyste' -} \ No newline at end of file Added: pyplusplus_dev/docs/documentation/apidocs/api.rest =================================================================== --- pyplusplus_dev/docs/documentation/apidocs/api.rest (rev 0) +++ pyplusplus_dev/docs/documentation/apidocs/api.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -0,0 +1,9 @@ +=== +API +=== + +`Py++` consists from XXX sub packages + +.. toctree:: + :maxdepth: 4 + Deleted: pyplusplus_dev/docs/documentation/apidocs/www_configuration.py =================================================================== --- pyplusplus_dev/docs/documentation/apidocs/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/apidocs/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,2 +0,0 @@ -name = 'API docs' -main_html_file = 'index.html' \ No newline at end of file Modified: pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -19,7 +19,6 @@ compatible data types, and allows to call functions in dlls/shared libraries. It can be used to wrap these libraries in pure Python. - -------- The idea -------- @@ -70,6 +69,16 @@ * return address of return value as integer - `new call policy was created`_ +--------------------------- +ctypes integration contents +--------------------------- + +.. toctree:: + + variables.rest + this_and_sizeof.rest + unions.rest + ----------------- Future directions ----------------- Deleted: pyplusplus_dev/docs/documentation/ctypes/www_configuration.py =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/ctypes/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,6 +0,0 @@ -name = 'ctypes integration' -main_html_file = 'ctypes_integration.html' - -names = { 'ctypes_integration' : 'ctypes integration' - , 'this_and_sizeof' : 'this & sizeof'} - Deleted: pyplusplus_dev/docs/documentation/easy_extending_guide.odt =================================================================== (Binary files differ) Modified: pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -184,9 +184,18 @@ -------------------------- `Py++`_ defines few call policies. I hope you will find them useful. I don't mind -to contribute them to `Boost.Python`_ library, but I don't have enough free time +to contribute them to `Boost.Python`_ library, but I don't have enough free time to "boostify" them. + +.. toctree:: + + as_tuple.rest + return_addressof.rest + return_pointee_value.rest + return_range.rest + custom_call_policies.rest + .. _`new indexing suite` : ./../../containers.html .. _`this file` : http://pygccxml.svn.sourceforge.net/viewvc/pygccxml/pyplusplus_dev/pyplusplus/code_repository/call_policies.py?view=markup Deleted: pyplusplus_dev/docs/documentation/functions/call_policies/www_configuration.py =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/functions/call_policies/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,6 +0,0 @@ -name = 'call policies' -#main_html_file = 'index.html' - -names = { 'call_policies' : 'call policies' -} - Modified: pyplusplus_dev/docs/documentation/functions/functions.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/functions.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/functions/functions.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -10,7 +10,20 @@ This section of documentation will explain how to configure `Py++`_ in order to export your functions, using desired `Boost.Python`_ functionality. +-------- +Contents +-------- +.. toctree:: + + call_policies/call_policies.rest + transformation/transformation.rest + default_args.rest + make_constructor.rest + overloading.rest + registration_order.rest + + .. _`Py++` : ./../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org Modified: pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -6,11 +6,11 @@ Introduction ------------ -During the development of `Python`_ bindings for some C++ library, it might get -necessary to write custom wrapper code for a particular function in order to +During the development of `Python`_ bindings for some C++ library, it might get +necessary to write custom wrapper code for a particular function in order to make that function usable from `Python`_. -An often mentioned example that demonstrates the problem is the ``get_size()`` +An often mentioned example that demonstrates the problem is the ``get_size()`` member function of a fictitious image class: .. code-block:: c++ @@ -18,9 +18,9 @@ void get_size(int& width, int& height); This member function cannot be exposed with standard `Boost.Python`_ mechanisms. -The main reasons for this is that ``int`` is immutable type in `Python`_. -An instance of immutable type could not be changed after construction. The only -way to expose this function to `Python`_ is to create small wrapper, which will +The main reasons for this is that ``int`` is immutable type in `Python`_. +An instance of immutable type could not be changed after construction. The only +way to expose this function to `Python`_ is to create small wrapper, which will return a tuple. In `Python`_, the above function would instead be invoked like this: .. code-block:: python @@ -37,67 +37,66 @@ img.get_size( width, height ); return boost::python::make_tuple( width, height ); } - -As you can see this function is simply invokes the original ``get_size()`` member + +As you can see this function is simply invokes the original ``get_size()`` member function and return the output values as a tuple. -Unfortunately, C++ source code cannot describe the semantics of an argument so -there is no way for a code generator tool such as `Py++`_ to know whether an -argument that has a reference type is actually an output argument, an input -argument or an input/output argument. That's why the user will always have to -"enhance" the C++ code and tell the code generator tool about the missing -information. +Unfortunately, C++ source code cannot describe the semantics of an argument so +there is no way for a code generator tool such as `Py++`_ to know whether an +argument that has a reference type is actually an output argument, an input +argument or an input/output argument. That's why the user will always have to +"enhance" the C++ code and tell the code generator tool about the missing +information. Note: C++ fundamental types, enumerations and string are all mapped to `Python`_ immutable types. -Instead of forcing you to write the entire wrapper function, `Py++`_ allows you -to provide the semantics of an argument(s) and then it will take care of +Instead of forcing you to write the entire wrapper function, `Py++`_ allows you +to provide the semantics of an argument(s) and then it will take care of producing the correct code: .. code-block:: python from pyplusplus import module_builder from pyplusplus import function_transformers as FT - + mb = module_builder.module_builder_t( ... ) get_size = mb.mem_fun( 'image_t::get_size' ) get_size.add_transformation( FT.output(0), FT.output(1) ) #the following line has same effect get_size.add_transformation( FT.output('width'), FT.output('height') ) -`Py++`_ will generate a code, very similar to one found in +`Py++`_ will generate a code, very similar to one found in ``boost::python::tuple get_size( const image_t& img )`` function. --------- -Thanks to +Thanks to --------- A thanks goes to Matthias Baas for his efforts and hard work. He did a research, -implemented the initial working version and wrote a lot of documentation. +implemented the initial working version and wrote a lot of documentation. --------------------- -Built-in transformers +Transformers contents --------------------- `Py++`_ comes with few predefined transformers: -* ``output`` +.. toctree:: -* ``input`` + terminology.rest + Generated functions name <name_mangling.rest> + output.rest + input.rest + inout.rest + modify_type.rest + input_static_array.rest + output_static_array.rest + transfer_ownership.rest + input_c_buffer.rest -* ``inout`` -* ``modify_type`` -* ``input_static_array`` - -* ``output_static_array`` - -* ``input_c_buffer`` - -* ``transfer_ownership`` - The set doesn't cover all common use cases, but it will grow with every new version of `Py++`_. If you created your own transformer consider to contribute it to the project. Deleted: pyplusplus_dev/docs/documentation/functions/transformation/www_configuration.py =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/functions/transformation/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,6 +0,0 @@ -name = 'function transformation' -#main_html_file = 'index.html' - -names = { 'built_in_transformers' : 'built-in transformers' - , 'name_mangling' : 'name mangling' -} Deleted: pyplusplus_dev/docs/documentation/functions/www_configuration.py =================================================================== --- pyplusplus_dev/docs/documentation/functions/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/functions/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,7 +0,0 @@ -name = 'functions & operators' -#main_html_file = 'index.html' - -names = { 'call_policies' : 'call policies' - , 'default_args' : 'default arguments' - , 'registration_order' : 'registration order' -} Modified: pyplusplus_dev/docs/documentation/how_to/how_to.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/how_to.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/how_to/how_to.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -2,28 +2,12 @@ How to ... ? ============ -`How to deal with templates?`_ +.. toctree:: -.. _`How to deal with templates?` : ./templates.html - -`How to register an exception translation?`_ - -.. _`How to register an exception translation?` : exception_translation.html - -`Fatal error C1204:Compiler limit: internal structure overflow`_ - -.. _`Fatal error C1204:Compiler limit: internal structure overflow` : ./fatal_error_c1204.html - -`Absolute\\relative paths`_ - -.. _`Absolute\\relative paths` : ./absolute_relative_paths.html - -`Generated file name is too long`_ - -.. _`Generated file name is too long` : ./file_name_too_long.html - - -.. _`Py++` : ./../../pyplusplus.html -.. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html -.. _`Python`: http://www.python.org -.. _`GCC-XML`: http://www.gccxml.org + templates.rest + exception_translation.rest + fatal_error_c1204.rest + absolute_relative_paths.rest + file_name_too_long.rest + best_practices.rest + hints.rest Deleted: pyplusplus_dev/docs/documentation/how_to/www_configuration.py =================================================================== --- pyplusplus_dev/docs/documentation/how_to/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/how_to/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,13 +0,0 @@ -name = 'how to ... ?' -#main_html_file = 'index.html' - -names = { 'hints' : 'hints' - , 'how_to' : 'how to' - , 'templates' : 'deal with templates' - , 'best_practices' : 'best practices' - , 'exception_translation' : 'exception translation' - , 'fatal_error_c1204' : 'fatal error: C1204' - , 'absolute_relative_paths' : 'absolute\\relative paths' - , 'file_name_too_long' : 'file name is too long' -} - Modified: pyplusplus_dev/docs/documentation/index.rest =================================================================== --- pyplusplus_dev/docs/documentation/index.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/index.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -28,10 +28,21 @@ Overview -------- -* `API docs`_ - contains API documentation, including source code, generated by `epydoc`_ +.. toctree:: -.. _`API docs` : ./apidocs/index.html -.. _`epydoc` : http://epydoc.sourceforge.net/ + tutorials/tutorials.rest + architecture.rest + apidocs/api.rest + containers.rest + doc_string.rest + multi_module_development.rest + properties.rest + split_module.rest + warnings.rest + inserting_code.rest + ctypes/ctypes_integration.rest + functions/functions.rest + how_to/how_to.rest * `STL containers`_ - describes various methods to expose STL containers to `Python`_ @@ -70,12 +81,12 @@ .. _`properties`: ./properties.html -* `splitting generated code to files`_ - `Py++`_ provides 4 different strategies - for splitting the generated code into files. Take a look on this document, +* `splitting generated code to files`_ - `Py++`_ provides 4 different strategies + for splitting the generated code into files. Take a look on this document, it will save you the time. - + .. _`splitting generated code to files` : ./split_module.html - + * `tutorials`_ - don't know where to start? Start here. Small and simple example will help you to start with `Py++`_. If you want to evaluate `Py++`_ you will find here small and handy GUI program. Deleted: pyplusplus_dev/docs/documentation/indexing_suite_v2_files/www_configuration.py =================================================================== --- pyplusplus_dev/docs/documentation/indexing_suite_v2_files/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/indexing_suite_v2_files/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1 +0,0 @@ -expose_to_web = False \ No newline at end of file Modified: pyplusplus_dev/docs/documentation/tutorials/module_builder/generate_code.py.rest =================================================================== --- pyplusplus_dev/docs/documentation/tutorials/module_builder/generate_code.py.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/tutorials/module_builder/generate_code.py.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,2 +1,6 @@ +================================ +`module_builder_t` usage example +================================ + .. literalinclude:: ./generate_code.py :language: python Modified: pyplusplus_dev/docs/documentation/tutorials/module_builder/generated.cpp.rest =================================================================== --- pyplusplus_dev/docs/documentation/tutorials/module_builder/generated.cpp.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/tutorials/module_builder/generated.cpp.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,2 +1,6 @@ +============== +Generated code +============== + .. literalinclude:: ./generated.cpp :language: c++ Modified: pyplusplus_dev/docs/documentation/tutorials/module_builder/hello_world.hpp.rest =================================================================== --- pyplusplus_dev/docs/documentation/tutorials/module_builder/hello_world.hpp.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/tutorials/module_builder/hello_world.hpp.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,2 +1,6 @@ +=============== +C++ header file +=============== + .. literalinclude:: ./hello_world.hpp :language: c++ Modified: pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest =================================================================== --- pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -149,13 +149,15 @@ For big projects it is a must to minimize compilation time. So `Py++`_ splits your module source code to different files within the directory. ------- -Result ------- +----- +Files +----- -`View generated file`_ +.. toctree:: -.. _`View generated file` : ./generated.cpp.html + hello_world.hpp.rest + generate_code.py.rest + generated.cpp.rest That's all. I hope you enjoyed. Deleted: pyplusplus_dev/docs/documentation/tutorials/module_builder/www_configuration.py =================================================================== --- pyplusplus_dev/docs/documentation/tutorials/module_builder/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/tutorials/module_builder/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1 +0,0 @@ -name = 'module builder' \ No newline at end of file Deleted: pyplusplus_dev/docs/documentation/tutorials/pyplusplus_gui.rest =================================================================== --- pyplusplus_dev/docs/documentation/tutorials/pyplusplus_gui.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/tutorials/pyplusplus_gui.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -1 +0,0 @@ -.. image:: pyplusplus_gui.png Added: pyplusplus_dev/docs/documentation/tutorials/pyplusplus_gui.rest =================================================================== --- pyplusplus_dev/docs/documentation/tutorials/pyplusplus_gui.rest (rev 0) +++ pyplusplus_dev/docs/documentation/tutorials/pyplusplus_gui.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -0,0 +1,5 @@ +===================== +pygccxml and Py++ GUI +===================== + +.. image:: pyplusplus_gui.png Modified: pyplusplus_dev/docs/documentation/tutorials/tutorials.rest =================================================================== --- pyplusplus_dev/docs/documentation/tutorials/tutorials.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/tutorials/tutorials.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -2,6 +2,11 @@ tutorials ========= +.. toctree:: + + module_builder/module_builder.rest + pyplusplus_gui.rest + ------------- What is Py++? ------------- Deleted: pyplusplus_dev/docs/documentation/tutorials/www_configuration.py =================================================================== --- pyplusplus_dev/docs/documentation/tutorials/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/tutorials/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,2 +0,0 @@ -name = 'tutorials' -names = { 'pyplusplus_gui' : 'Py++ - graphical user interface' } Deleted: pyplusplus_dev/docs/documentation/www_configuration.py =================================================================== --- pyplusplus_dev/docs/documentation/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/documentation/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,11 +0,0 @@ -name = 'documentation' -main_html_file = 'index.html' -files_to_skip = ['indexing_suite_v2.html', 'feedback.html'] -names = { 'containers' : 'STL containers' - , 'how_to' : 'how to ... ?' - , 'doc_string' : 'documentation string' - , 'inserting_code' : 'inserting code' - , 'best_practices' : 'best practices' - , 'multi_module_development' : 'multi-module development' - , 'split_module' : 'splitting generated code to files' -} Deleted: pyplusplus_dev/docs/examples/boost/www_configuration.py =================================================================== --- pyplusplus_dev/docs/examples/boost/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/examples/boost/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,2 +0,0 @@ -name = 'boost' -#This directory used as place holder for Py++ directory \ No newline at end of file Deleted: pyplusplus_dev/docs/examples/easybmp/www_configuration.py =================================================================== --- pyplusplus_dev/docs/examples/easybmp/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/examples/easybmp/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1 +0,0 @@ -name = 'EasyBMP' \ No newline at end of file Deleted: pyplusplus_dev/docs/osdc2006/www_configuration.py =================================================================== --- pyplusplus_dev/docs/osdc2006/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/osdc2006/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1 +0,0 @@ -expose_to_web = False \ No newline at end of file Modified: pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/bindings.cpp.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/bindings.cpp.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/bindings.cpp.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,2 +1,6 @@ +======================== +C++/Python bindings code +======================== + .. literalinclude:: ./bindings.cpp :language: c++ Modified: pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/classes.hpp.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/classes.hpp.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/classes.hpp.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,2 +1,6 @@ +========================= +To be exposed C++ classes +========================= + .. literalinclude:: ./classes.hpp :language: c++ Modified: pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/sconstruct.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/sconstruct.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/sconstruct.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,2 +1,6 @@ +==================== +Build script (SCons) +==================== + .. literalinclude:: ./sconstruct :language: python Modified: pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptr.h.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptr.h.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptr.h.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,2 +1,6 @@ +================================== +User defined "smart pointer" class +================================== + .. literalinclude:: ./smart_ptr.h :language: c++ Modified: pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptrs.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptrs.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptrs.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -11,25 +11,16 @@ Files ----- -* `smart_ptr.h`_ file contains definition of custom smart pointer class. +.. toctree:: -* `classes.hpp`_ file contains definition of few classes, which should be exposed - to Python. + smart_ptr.h.rest + classes.hpp.rest + bindings.cpp.rest + sconstruct.rest + test.py.rest -* `bindings.cpp`_ file contains source code that exposes the classes to Python. - -* `sconstruct`_ file contains build instructions for scons build tool. - -* `test.py`_ file contains complete unit tests for the exposed classes - All files contain comments, which describe what and why was done. -.. _`smart_ptr.h` : ./smart_ptr.h.html -.. _`classes.hpp` : ./classes.hpp.html -.. _`bindings.cpp` : ./bindings.cpp.html -.. _`sconstruct` : ./sconstruct.html -.. _`test.py` : ./test.py.html - -------- Download -------- Modified: pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/test.py.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/test.py.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/test.py.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,2 +1,6 @@ +==================== +Usage example/Tester +==================== + .. literalinclude:: ./test.py :language: python Deleted: pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/www_configuration.py =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,3 +0,0 @@ -name = 'custom smart pointer' -files_to_skip = ['definition.rest'] -names = {} Deleted: pyplusplus_dev/docs/troubleshooting_guide/www_configuration.py =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/www_configuration.py 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/troubleshooting_guide/www_configuration.py 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,3 +0,0 @@ -name = 'Boost.Python - troubleshooting guide' -main_html_file = 'lessons_learned.html' -names = { 'lessons_learned' : 'Boost.Python - lessons learned' } Deleted: pyplusplus_dev/docs/tutorials.rest =================================================================== --- pyplusplus_dev/docs/tutorials.rest 2009-02-01 18:29:31 UTC (rev 1646) +++ pyplusplus_dev/docs/tutorials.rest 2009-02-01 20:00:45 UTC (rev 1647) @@ -1,7 +0,0 @@ -.. raw:: html - - <head><meta http-equiv="refresh" content="0; URL=./documentation/tutorials/tutorials.html"/></head> - <body> - Automatic redirection failed, please go to - <a href="./documentation/tutorials/tutorials.html">./documentation/tutorials/tutorials.html</a> - </body> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-02-02 20:40:45
|
Revision: 1652 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1652&view=rev Author: roman_yakovenko Date: 2009-02-02 20:40:36 +0000 (Mon, 02 Feb 2009) Log Message: ----------- sphinx Modified Paths: -------------- pygccxml_dev/docs/apidocs/declarations.rest pygccxml_dev/docs/definition.irest pygccxml_dev/docs/design.rest pygccxml_dev/docs/download.rest pygccxml_dev/docs/history/history.rest pygccxml_dev/docs/links.rest pygccxml_dev/docs/pygccxml.rest pygccxml_dev/docs/query_interface.rest pygccxml_dev/docs/upgrade_issues.rest pygccxml_dev/docs/users.rest pygccxml_dev/pygccxml/declarations/__init__.py pygccxml_dev/pygccxml/declarations/algorithm.py pygccxml_dev/pygccxml/declarations/call_invocation.py pygccxml_dev/pygccxml/declarations/calldef.py pygccxml_dev/pygccxml/declarations/class_declaration.py pygccxml_dev/pygccxml/declarations/cpptypes.py pygccxml_dev/pygccxml/declarations/declaration.py pygccxml_dev/pygccxml/declarations/matchers.py pygccxml_dev/pygccxml/declarations/mdecl_wrapper.py pygccxml_dev/pygccxml/declarations/namespace.py pygccxml_dev/pygccxml/declarations/scopedef.py pygccxml_dev/pygccxml/declarations/templates.py pygccxml_dev/pygccxml/declarations/type_traits.py pygccxml_dev/pygccxml/declarations/variable.py pyplusplus_dev/docs/comparisons/pyste.rest pyplusplus_dev/docs/documentation/architecture.rest pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest pyplusplus_dev/docs/documentation/ctypes/this_and_sizeof.rest pyplusplus_dev/docs/documentation/ctypes/unions.rest pyplusplus_dev/docs/documentation/ctypes/variables.rest pyplusplus_dev/docs/documentation/how_to/best_practices.rest pyplusplus_dev/docs/documentation/inserting_code.rest pyplusplus_dev/docs/documentation/split_module.rest pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest pyplusplus_dev/docs/documentation/tutorials/tutorials.rest pyplusplus_dev/docs/documentation/warnings.rest pyplusplus_dev/docs/download.rest pyplusplus_dev/docs/examples/boost/boost.rest pyplusplus_dev/docs/examples/easybmp/easybmp.rest pyplusplus_dev/docs/history/history.rest pyplusplus_dev/docs/pyplusplus.rest pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptrs.rest Modified: pygccxml_dev/docs/apidocs/declarations.rest =================================================================== --- pygccxml_dev/docs/apidocs/declarations.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/docs/apidocs/declarations.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -72,8 +72,8 @@ :members: :show-inheritance: -ecl_printer ------------ +decl_printer +------------ .. automodule:: pygccxml.declarations.decl_printer :members: Modified: pygccxml_dev/docs/definition.irest =================================================================== --- pygccxml_dev/docs/definition.irest 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/docs/definition.irest 2009-02-02 20:40:36 UTC (rev 1652) @@ -1,9 +1,9 @@ -The purpose of the `GCC-XML`_ extension is to generate an XML description of a +The purpose of the `GCC-XML`_ extension is to generate an XML description of a C++ program from GCC's internal representation. - -- Introduction to `GCC-XML`_ + -- Introduction to `GCC-XML`_ -The purpose of `pygccxml`_ is to read a generated file and provide a simple -framework to navigate C++ declarations, using Python classes. +The purpose of `pygccxml` is to read a generated file and provide a simple +framework to navigate C++ declarations, using Python classes. .. _`GCC-XML` : http://www.gccxml.org Modified: pygccxml_dev/docs/design.rest =================================================================== --- pygccxml_dev/docs/design.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/docs/design.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -6,7 +6,7 @@ The view from 10000 fits ------------------------ -`pygccxml`_ has 3 packages: +:doc:`pygccxml <pygccxml>` has 3 packages: * ``declarations`` package defines classes that describe C++ declarations and types @@ -44,7 +44,7 @@ a pointer or a reference? Or does a type have a trivial constructor, or a const-qualifier? -`pygccxml`_ implements a lot of functionality from the library: +:doc:`pygccxml <pygccxml>` implements a lot of functionality from the library: * a lot of algorithms were implemented @@ -147,7 +147,7 @@ to 2 classes: 1. ``scanner_t`` - this class scans the "XML" file, generated by `GCC-XML`_ and - creates `pygccxml`_ declarations and types classes. After the xml file has + creates :doc:`pygccxml <pygccxml>` declarations and types classes. After the xml file has been processed declarations and type class instances keeps references to each other using `GCC-XML`_ generated ids. @@ -160,7 +160,7 @@ pretty quick. ``project_reader_t`` - think about this class as a linker. In most cases you work -with few source files. GCC-XML does not supports this mode of work. So, `pygccxml`_ +with few source files. GCC-XML does not supports this mode of work. So, :doc:`pygccxml <pygccxml>` implements all functionality needed to parse few source files at once. ``project_reader_t`` implements 2 different algorithms, that solves the problem: @@ -242,9 +242,9 @@ In some cases, ``directory_cache_t`` class gives much better performance, than ``file_cache_t``. Many thanks to Matthias Baas for its implementation. -**Warning**: when `pygccxml`_ writes information to files, using cache classes, +**Warning**: when :doc:`pygccxml <pygccxml>` writes information to files, using cache classes, it does not write any version information. It means, that when you upgrade -`pygccxml`_ you have to delete all your cache files. Otherwise you will get very +:doc:`pygccxml <pygccxml>` you have to delete all your cache files. Otherwise you will get very strange errors. For example: missing attribute. @@ -264,9 +264,9 @@ void fix_enum( ns1::ns2::fruit arg=ns1::ns2::apple ); `GCC-XML`_ will report the default value of ``arg`` as ``apple``. Obviously -this in an error. `pygccxml`_ knows how to fix this bug. +this in an error. :doc:`pygccxml <pygccxml>` knows how to fix this bug. -This is not the only bug, which could be fixed, there are few of them. `pygccxml`_ +This is not the only bug, which could be fixed, there are few of them. :doc:`pygccxml <pygccxml>` introduces few classes, which knows how to deal with specific bug. More over, those bugs are fixed, only if I am 101% sure, that this is the right thing to do. @@ -274,11 +274,11 @@ Summary ------- -That's all. I hope I was clear, at least I tried. Any way, `pygccxml`_ is an open +That's all. I hope I was clear, at least I tried. Any way, :doc:`pygccxml <pygccxml>` is an open source project. You always can take a look on the source code. If you need more information please read API documentation. -.. _`pygccxml`: ./pygccxml.html + .. _`SourceForge`: http://sourceforge.net/index.php .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pygccxml_dev/docs/download.rest =================================================================== --- pygccxml_dev/docs/download.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/docs/download.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -6,11 +6,11 @@ pygccxml on SourceForge ------------------------- -`pygccxml`_ project is hosted on SourceForge. Using SourceForge services you +:doc:`pygccxml <pygccxml>` project is hosted on SourceForge. Using SourceForge services you can: 1) get access to source code -2) get access to latest release version of `pygccxml`_ +2) get access to latest release version of :doc:`pygccxml <pygccxml>` ----------------- @@ -34,20 +34,20 @@ There are few different ways to install GCC-XML on your system: 1. If you use Linux, than I am almost sure your system has "gccxml" package. - Consider to install it using "native"(rpm, deb, portage) packaging system. + Consider to install it using "native"(rpm, deb, portage) packaging system. .. line separator -2. Another option is to install it from the source code. See `instructions`_ +2. Another option is to install it from the source code. See `instructions`_ provided by Brad King, the author of `GCC-XML`_. Installation from sources - is supported for Windows, Linux and Mac platforms. + is supported for Windows, Linux and Mac platforms. .. _`instructions` : http://gccxml.org/HTML/Install.html 3. You can use `GCC-XML`_ installer created by me. Go to `download page`_ and get - `"gccxml_installer.zip"`_ file. You will find installation instructions within - the file. The setup is basically small Python script, which installs `GCC-XML`_ - to the specified directory. It works pretty well for me on Linux and Windows. + `"gccxml_installer.zip"`_ file. You will find installation instructions within + the file. The setup is basically small Python script, which installs `GCC-XML`_ + to the specified directory. It works pretty well for me on Linux and Windows. You don't have to download CMake build system or anything else. .. _`download page` : http://sourceforge.net/project/showfiles.php?group_id=118209&package_id=146545 @@ -56,11 +56,11 @@ pygccxml -------- In command prompt or shell change current directory to be "pygccxml-X.Y.Z". -"X.Y.Z" is version of `pygccxml`_. Type the following command: +"X.Y.Z" is version of :doc:`pygccxml <pygccxml>`. Type the following command: | ``python setup.py install`` -After this command complete, you should have installed `pygccxml`_ package. +After this command complete, you should have installed :doc:`pygccxml <pygccxml>` package. ------------ Dependencies @@ -68,5 +68,4 @@ * `GCC-XML`_ -.. _`pygccxml` : ./../pygccxml/pygccxml.html .. _`GCC-XML`: http://www.gccxml.org Modified: pygccxml_dev/docs/history/history.rest =================================================================== --- pygccxml_dev/docs/history/history.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/docs/history/history.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -120,7 +120,7 @@ Version 0.9.0 ------------- -1. Performance was improved. `pygccxml`_ is now 30-50% faster. The improvement +1. Performance was improved. :doc:`pygccxml <../pygccxml>` is now 30-50% faster. The improvement was achieved by using `cElementTree`_ package, ``iterparse`` functionality, instead of standard XML SAX API. If `cElementTree`_ package is not available, the built-in XML SAX package is used. @@ -188,7 +188,7 @@ types and declarations it depends on. 2. ``signed char`` and ``char`` are two different types. This bug was fixed and - now `pygccxml`_ treats them right. Many thanks to Gaetan Lehmann for reporting + now :doc:`pygccxml <../pygccxml>` treats them right. Many thanks to Gaetan Lehmann for reporting the bug. 3. Declarations, read from GCC-XML generated file, could be saved in cache. @@ -225,7 +225,7 @@ small example that reproduced the error. 2. Huge speed improvement has been achieved (x10). Allen Bierbaum suggested to - save and reuse results of different `pygccxml`_ algorithms: + save and reuse results of different :doc:`pygccxml <../pygccxml>` algorithms: * ``declarations.remove_alias`` * ``declarations.full_name`` @@ -259,7 +259,7 @@ Version 0.8.1 ------------- -1. `pygccxml`_ has been ported to MacOS X. Many thanks to Darren Garnier! +1. :doc:`pygccxml <../pygccxml>` has been ported to MacOS X. Many thanks to Darren Garnier! 2. New type traits have been added: @@ -327,7 +327,7 @@ #instead of op = cls.operator( symbol='<' ) -5. `pygccxml`_ improved a lot functionality related to providing feedback to user: +5. :doc:`pygccxml <../pygccxml>` improved a lot functionality related to providing feedback to user: * every package has its own logger @@ -364,10 +364,10 @@ Version 0.8 ----------- -1. `pygccxml`_ now has power "select" interface. Read more about this cool feature +1. :doc:`pygccxml <../pygccxml>` now has power "select" interface. Read more about this cool feature in tutorials. -2. Improved support for template instantiations. `pygccxml`_ now take into +2. Improved support for template instantiations. :doc:`pygccxml <../pygccxml>` now take into account demangled name of declarations. Please refer to documentation for more explanantion. @@ -429,8 +429,8 @@ easily extend functionality provided by built-in declarations. 6. Sometimes, there is a need to find a declaration that match some criteria. - The was such functionality in `pygccxml`_, but it was too limited. This - release fix the situation. `pygccxml`_ adds a set of classes that will help + The was such functionality in :doc:`pygccxml <../pygccxml>`, but it was too limited. This + release fix the situation. :doc:`pygccxml <../pygccxml>` adds a set of classes that will help you to deal with this problem. 7. New cache - ``parser.directory_cache_t`` has been implemented. @@ -463,8 +463,8 @@ 12. Documentation. Allen Bierbaum and Matthias Baas contributed so much in this area. Almost every public function/class has now documentation string. -13. Logging functionality has been added. `pygccxml`_ creates new logger - "pygccxml". Now it is possible to see what `pygccxml`_ is doing right now. +13. Logging functionality has been added. :doc:`pygccxml <../pygccxml>` creates new logger + "pygccxml". Now it is possible to see what :doc:`pygccxml <../pygccxml>` is doing right now. 14. I am sure I forgot something. @@ -547,9 +547,8 @@ time. 8. There are some cases when `GCC-XML`_ reports *"restricted"*. In this case - `pygccxml`_ replaces *"restricted"* with *"volatile"*. + :doc:`pygccxml <../pygccxml>` replaces *"restricted"* with *"volatile"*. -.. _`pygccxml`: ./../pygccxml.html .. _`SourceForge`: http://sourceforge.net/index.php .. _`GCC-XML`: http://www.gccxml.org Modified: pygccxml_dev/docs/links.rest =================================================================== --- pygccxml_dev/docs/links.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/docs/links.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -17,4 +17,4 @@ .. _`XTI An Extended Type Information Library` : http://lcgapp.cern.ch/project/architecture/XTI_accu.pdf -.. _`pygccxml`: ./pygccxml.html + Modified: pygccxml_dev/docs/pygccxml.rest =================================================================== --- pygccxml_dev/docs/pygccxml.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/docs/pygccxml.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -17,12 +17,12 @@ ------------------------ What can you do with it? ------------------------ -Using `pygccxml`_ you can: +Using :doc:`pygccxml <pygccxml>` you can: * parse C++ source code * create a powerful code generator - + `Py++`_ is heavily based on `pygccxml`_ + + `Py++`_ is heavily based on :doc:`pygccxml <pygccxml>` + generate `WSDL`_ file from sources + ... @@ -36,7 +36,7 @@ Query interface --------------- -`pygccxml`_ provides simple and powerful API to query declarations tree. How many +:doc:`pygccxml <pygccxml>` provides simple and powerful API to query declarations tree. How many lines is needed to write the following query? :: @@ -63,7 +63,7 @@ Type traits ----------- -`pygccxml`_ provides a lot of functionality to analyze C++ types and relationship +:doc:`pygccxml <pygccxml>` provides a lot of functionality to analyze C++ types and relationship between them. For more information please refer to `design`__ document or API documentation. Just a few names of algorithms: @@ -96,7 +96,7 @@ * parse each file separately and then join the results The difference between these approaches is the caching algorithm used in the -second case. `pygccxml`_ supports both of them. Actually `pygccxml`_ supports +second case. :doc:`pygccxml <pygccxml>` supports both of them. Actually :doc:`pygccxml <pygccxml>` supports more caching strategies, read the API documentation for more information. @@ -110,7 +110,7 @@ Test environment ---------------- -`pygccxml`_ comes with comprehensive unit tests. They are executed on Windows XP +:doc:`pygccxml <pygccxml>` comes with comprehensive unit tests. They are executed on Windows XP and `Ubuntu`_ Linux operating systems. In most cases Python 2.5 and 2.6 are used. All in all, `pygccxml` has more than 230 tests. @@ -134,7 +134,7 @@ .. _`WSDL`: http://www.w3.org/TR/wsdl .. _`Py++`: ./../pyplusplus/pyplusplus.html -.. _`pygccxml`: ./pygccxml.html + .. _`SourceForge`: http://sourceforge.net/index.php .. _`Docutils`: http://docutils.sourceforge.net .. _`Python`: http://www.python.org Modified: pygccxml_dev/docs/query_interface.rest =================================================================== --- pygccxml_dev/docs/query_interface.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/docs/query_interface.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -6,7 +6,7 @@ Introduction ------------ You parsed the source files. Now you have to do some real work with the extracted -information, right? `pygccxml`_ provides very powerful and simple interface to +information, right? :doc:`pygccxml <pygccxml>` provides very powerful and simple interface to query about extracted declarations. Just an example. I want to select all member functions, which have 2 arguments. @@ -161,11 +161,11 @@ ``RECURSIVE_DEFAULT`` variable. Its initial value is ``True``. So, if you don't pass ``recursive`` argument, the value of ``RECURSIVE_DEFAULT`` variable will be used. This "yet another level of indirection" allows you to configure - `pygccxml`_ "select" functions in one place for all project. + :doc:`pygccxml <pygccxml>` "select" functions in one place for all project. * ``allow_empty`` - Python boolean object, it says `pygccxml`_ what to do if query returns empty. + Python boolean object, it says :doc:`pygccxml <pygccxml>` what to do if query returns empty. If ``allow_empty`` is ``False``, then exception ``RuntimeError( "Multi declaration query returned 0 declarations." )`` @@ -285,7 +285,7 @@ .. _`Boost.Python`: http://boost.org/libs/python/doc/tutorial/doc/html/index.html .. _`call policies`: http://boost.org/libs/python/doc/tutorial/doc/html/python/functions.html#python.call_policies .. _`Call policies`: http://boost.org/libs/python/doc/tutorial/doc/html/python/functions.html#python.call_policies -.. _`pygccxml`: ./pygccxml.html + .. _`Py++`: ./../pyplusplus/pyplusplus.html .. _`SourceForge`: http://sourceforge.net/index.php .. _`Python`: http://www.python.org Modified: pygccxml_dev/docs/upgrade_issues.rest =================================================================== --- pygccxml_dev/docs/upgrade_issues.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/docs/upgrade_issues.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -73,7 +73,7 @@ <Typedef id="_52" name="mvar_ptr_t" type="_139" /> <OffsetType id="_139" basetype="_92" type="_131" size="32" align="32"/> -`pygccxml`_ handles this issue automatically, you don't have to change your code. +:doc:`pygccxml <pygccxml>` handles this issue automatically, you don't have to change your code. ----------------------- Constant variable value @@ -90,7 +90,7 @@ GCC-XML 0.9 will report the ``initialized`` value as ``10122004ul``, while GCC-XML 0.7 as ``10122004``. -`pygccxml`_ handles this problem automatically, you don't have to change your code. +:doc:`pygccxml <pygccxml>` handles this problem automatically, you don't have to change your code. ------------------------------------------ Free and member function default arguments @@ -190,7 +190,7 @@ <Argument name="types" type="_3096" default="std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(((const std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&)((const std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >*)(& std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >()))))"/> -Basically `pygccxml`_ can't help you here. The good news is that you always can +Basically :doc:`pygccxml <pygccxml>` can't help you here. The good news is that you always can change the default value expression from the script: .. code-block:: python @@ -230,11 +230,11 @@ class demangled name item_t<3740067437l> item_t<3740067437ul> ==================== ====================== ======================= -`pygccxml`_ uses class demangled name as a "name" of the class. This was done to +:doc:`pygccxml <pygccxml>` uses class demangled name as a "name" of the class. This was done to overcome few bugs GCC-XML has, when it works on libraries with extreme usage of templates. -As you can see the name of the class is different. `pygccxml`_ is unable to help +As you can see the name of the class is different. :doc:`pygccxml <pygccxml>` is unable to help you in such situations. I suggest you to use query API strict mode. This is the default one. If the class/declaration with the given name could not be found, it will raise an error with clear description of the problem. @@ -243,6 +243,6 @@ of the class/declaration from it. -.. _`pygccxml`: ./pygccxml.html + .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pygccxml_dev/docs/users.rest =================================================================== --- pygccxml_dev/docs/users.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/docs/users.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -21,16 +21,14 @@ - http://cysquatch.net/blog/2007/09/01/c-code-metrics-with-pygccxml - `pygccxml`_ is used to calculate the Weighted Methods per Class (WMC) metric. + :doc:`pygccxml <pygccxml>` is used to calculate the Weighted Methods per Class (WMC) metric. - http://www.garagegames.com/blogs/4280/13907 - `pygccxml`_ is used to generate input files for `SIP`_ code generator. + :doc:`pygccxml <pygccxml>` is used to generate input files for `SIP`_ code generator. .. _`SIP` : http://www.riverbankcomputing.com/software/sip/intro - http://blogs.sun.com/thorsten/entry/more_on_source_code_grokking Short listing of C++ parsers and their description. - - .. _`pygccxml` : ./pygccxml.html Modified: pygccxml_dev/pygccxml/declarations/__init__.py =================================================================== --- pygccxml_dev/pygccxml/declarations/__init__.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/__init__.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -233,29 +233,29 @@ #make matchers to look more like functors or_matcher = or_matcher_t -"""see :class:or_matcher for documentation""" +"""see :class:`or_matcher_t` for documentation""" and_matcher = and_matcher_t -"""see :class:and_matcher for documentation""" +"""see :class:`and_matcher_t` for documentation""" not_matcher = not_matcher_t -"""see :class:not_matcher for documentation""" +"""see :class:`not_matcher_t` for documentation""" declaration_matcher = declaration_matcher_t -"""see :class:declaration_matcher for documentation""" +"""see :class:`declaration_matcher_t` for documentation""" calldef_matcher = calldef_matcher_t -"""see :class:calldef_matcher for documentation""" +"""see :class:`calldef_matcher_t` for documentation""" namespace_matcher = namespace_matcher_t -"""see :class:namespace_matcher for documentation""" +"""see :class:`namespace_matcher_t` for documentation""" variable_matcher = variable_matcher_t -"""see :class:variable_matcher for documentation""" +"""see :class:`variable_matcher_t` for documentation""" regex_matcher = regex_matcher_t -"""see :class:regex_matcher for documentation""" +"""see :class:`regex_matcher_t` for documentation""" access_type_matcher = access_type_matcher_t -"""see :class:access_type_matcher for documentation""" +"""see :class:`access_type_matcher_t` for documentation""" operator_matcher = operator_matcher_t -"""see :class:operator_matcher for documentation""" +"""see :class:`operator_matcher_t` for documentation""" custom_matcher = custom_matcher_t -"""see :class:custom_matcher for documentation""" +"""see :class:`custom_matcher_t` for documentation""" virtuality_type_matcher = virtuality_type_matcher_t -"""see :class:virtuality_type_matcher for documentation""" +"""see :class:`virtuality_type_matcher_t` for documentation""" from matcher import matcher Modified: pygccxml_dev/pygccxml/declarations/algorithm.py =================================================================== --- pygccxml_dev/pygccxml/declarations/algorithm.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/algorithm.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -12,7 +12,7 @@ returns a list of parent declarations names :param decl: declaration for which declaration path should be calculated - :type decl: :class:declaration_t + :type decl: :class:`declaration_t` :rtype: [names], where first item contains top parent name and last item contains decl name @@ -42,7 +42,7 @@ have default value :param decl: declaration for which declaration path should be calculated - :type decl: :class:declaration_t + :type decl: :class:`declaration_t` :rtype: [names], where first item contains top parent name and last item contains decl name @@ -75,9 +75,9 @@ returns a reference to a named parent declaration :param decl: the child declaration - :type decl: :class:declaration_t + :type decl: :class:`declaration_t` - :rtype: reference to :class:declaration_t or None if not found + :rtype: reference to :class:`declaration_t` or None if not found """ if not decl: return None @@ -100,8 +100,8 @@ returns declaration full qualified name If `decl` belongs to anonymious namespace or class, the function will return C++ illegal qualified name. - :param decl: :class:declaration_t - :type decl: :class:declaration_t + :param decl: :class:`declaration_t` + :type decl: :class:`declaration_t` :rtype: full name of declarations. """ if None is decl: @@ -121,7 +121,7 @@ converts tree representation of declarations to flatten one. :param decl_or_decls: reference to list of declaration's or single declaration - :type decl_or_decls: :class:declaration_t or [ :class:declaration_t ] + :type decl_or_decls: :class:`declaration_t` or [ :class:`declaration_t` ] :rtype: [ all internal declarations ] """ @@ -152,7 +152,7 @@ converts tree representation of declarations to flatten one. :param decl_or_decls: reference to list of declaration's or single declaration - :type decl_or_decls: :class:declaration_t or [ :class:declaration_t ] + :type decl_or_decls: :class:`declaration_t` or [ :class:`declaration_t` ] :rtype: [ all internal declarations ] """ @@ -191,7 +191,7 @@ helper class for different search algorithms. This class will help developer to match declaration by: - - declaration type, for example :class:class_t or L{operator_t}. + - declaration type, for example :class:`class_t` or :class:`operator_t`. - declaration name - declaration full name - reference to parent declaration @@ -208,7 +208,7 @@ returns True if inst do match one of specified criteria :param inst: declaration instance - :type inst: :class:declaration_t + :type inst: :class:`declaration_t` :rtype: bool """ @@ -239,7 +239,7 @@ """ returns a list of all declarations that match criteria, defined by developer - For more information about arguments see :class:match_declaration_t class. + For more information about arguments see :class:`match_declaration_t` class. :rtype: [ matched declarations ] """ @@ -261,9 +261,9 @@ returns single declaration that match criteria, defined by developer. If more the one declaration was found None will be returned. - For more information about arguments see :class:match_declaration_t class. + For more information about arguments see :class:`match_declaration_t` class. - :rtype: matched declaration :class:declaration_t or None + :rtype: matched declaration :class:`declaration_t` or None """ decl = find_all_declarations( declarations, type=type, name=name, parent=parent, recursive=recursive, fullname=fullname ) if len( decl ) == 1: @@ -273,9 +273,9 @@ """ returns first declaration that match criteria, defined by developer - For more information about arguments see :class:match_declaration_t class. + For more information about arguments see :class:`match_declaration_t` class. - :rtype: matched declaration :class:declaration_t or None + :rtype: matched declaration :class:`declaration_t` or None """ matcher = match_declaration_t(type, name, fullname, parent) if recursive: @@ -295,7 +295,7 @@ contains all file names of declarations. :param decl_or_decls: reference to list of declaration's or single declaration - :type decl_or_decls: :class:declaration_t or [ :class:declaration_t ] + :type decl_or_decls: :class:`declaration_t` or [ :class:`declaration_t` ] :rtype: set( declaration file names ) """ @@ -308,7 +308,7 @@ class visit_function_has_not_been_found_t( RuntimeError ): """ - exception that is raised, from L{apply_visitor}, when a visitor could not be + exception that is raised, from :function:`apply_visitor`, when a visitor could not be applied. """ @@ -325,7 +325,7 @@ applies a visitor on declaration instance :param visitor: instance - :type visitor: L{type_visitor_t} or L{decl_visitor_t} + :type visitor: :class:`type_visitor_t` or :class:`decl_visitor_t` """ fname = 'visit_' + decl_inst.__class__.__name__[:-2] #removing '_t' from class name if not hasattr(visitor, fname ): Modified: pygccxml_dev/pygccxml/declarations/call_invocation.py =================================================================== --- pygccxml_dev/pygccxml/declarations/call_invocation.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/call_invocation.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -61,7 +61,7 @@ finds arguments within function invocation. :type text: str - :rtype: [ arguments ] or L{NOT_FOUND} if arguments could not be found + :rtype: [ arguments ] or :data:NOT_FOUND if arguments could not be found """ global __THE_PARSER return __THE_PARSER.find_args( text, start ) Modified: pygccxml_dev/pygccxml/declarations/calldef.py =================================================================== --- pygccxml_dev/pygccxml/declarations/calldef.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/calldef.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -139,8 +139,7 @@ def _set_type(self, type): self._type = type type = property( _get_type, _set_type - , doc="""The type of the argument. - @type: :class:type_t""") + , doc="""The argument :class:`type <type_t>`""") def _get_attributes( self ): return self._attributes @@ -198,7 +197,7 @@ self._arguments = arguments arguments = property( _get_arguments , _set_arguments , doc="""The argument list. - @type: list of :class:argument_t""") + @type: list of :class:`argument_t`""") @property def has_ellipsis( self ): @@ -241,7 +240,7 @@ self._exceptions = exceptions exceptions = property( _get_exceptions, _set_exceptions , doc="""The list of exceptions. - @type: list of :class:declaration_t""") + @type: list of :class:`declaration_t`""") def _get_return_type(self): return self._return_type @@ -249,13 +248,13 @@ self._return_type = return_type return_type = property( _get_return_type, _set_return_type , doc='''The type of the return value of the "callable" or None (constructors). - @type: :class:type_t + @type: :class:`type_t` ''') @property def overloads(self): """A list of overloaded "callables" (i.e. other callables with the same name within the same scope. - @type: list of L{calldef_t} + @type: list of :class:`calldef_t` """ if not self.parent: return [] @@ -364,7 +363,7 @@ self._calling_convention = cc calling_convention = property( get_calling_convention, set_calling_convention - , doc="function calling convention. See L{CALLING_CONVENTION_TYPES} class for possible values" ) + , doc="function calling convention. See :class:CALLING_CONVENTION_TYPES class for possible values" ) #Second level in hierarchy of calldef @@ -417,7 +416,7 @@ assert virtuality in VIRTUALITY_TYPES.ALL self._virtuality = virtuality virtuality = property( get_virtuality, set_virtuality - , doc="""Describes the "virtuality" of the member (as defined by the string constants in the class L{VIRTUALITY_TYPES}). + , doc="""Describes the "virtuality" of the member (as defined by the string constants in the class :class:VIRTUALITY_TYPES). @type: str""") def _get_access_type(self): @@ -441,7 +440,7 @@ , doc="""describes, whether "callable" has static modifier or not""") def function_type(self): - """returns function type. See :class:type_t hierarchy""" + """returns function type. See :class:`type_t` hierarchy""" if self.has_static: return cpptypes.free_function_type_t( return_type=self.return_type , arguments_types=[ arg.type for arg in self.arguments ] ) @@ -495,7 +494,7 @@ return [] def function_type(self): - """returns function type. See :class:type_t hierarchy""" + """returns function type. See :class:`type_t` hierarchy""" return cpptypes.free_function_type_t( return_type=self.return_type , arguments_types=[ arg.type for arg in self.arguments ] ) Modified: pygccxml_dev/pygccxml/declarations/class_declaration.py =================================================================== --- pygccxml_dev/pygccxml/declarations/class_declaration.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/class_declaration.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -83,7 +83,7 @@ assert( isinstance( new_related_class, class_t ) ) self._related_class = new_related_class related_class = property( _get_related_class, _set_related_class - , doc="reference to base or derived L{class<class_t>}") + , doc="reference to base or derived :class:`class <class_t>`") def _get_access(self): return self._access @@ -92,7 +92,7 @@ self._access = new_access access = property( _get_access, _set_access ) access_type = property( _get_access, _set_access - , doc="describes L{hierarchy type<ACCESS_TYPES>}") + , doc="describes :class:`hierarchy type <ACCESS_TYPES>`") #TODO: check whether GCC XML support this and if so parser this information def _get_is_virtual(self): @@ -124,11 +124,11 @@ def _set_aliases( self, new_aliases ): self._aliases = new_aliases aliases = property( _get_aliases, _set_aliases - , doc="List of L{aliases<typedef_t>} to this instance") + , doc="List of :class:`aliases <typedef_t>` to this instance") @property def container_traits( self ): - """reference to L{container traits<container_traits.py>} or None""" + """reference to :class:`container_traits_impl_t` or None""" if self._container_traits_set == False: import container_traits #prevent cyclic dependencies self._container_traits_set = True @@ -231,18 +231,18 @@ assert( new_class_type in CLASS_TYPES.ALL ) self._class_type = new_class_type class_type = property( _get_class_type, _set_class_type - , doc="describes class L{type<CLASS_TYPES>}") + , doc="describes class :class:`type <CLASS_TYPES>`") def _get_bases(self): return self._bases def _set_bases( self, new_bases ): self._bases = new_bases bases = property( _get_bases, _set_bases - , doc="list of L{base classes<hierarchy_info_t>}") + , doc="list of :class:`base classes <hierarchy_info_t>`") @property def recursive_bases(self): - """list of all L{base classes<hierarchy_info_t>}""" + """list of all :class:`base classes <hierarchy_info_t>`""" if self._recursive_bases is None: to_go = self.bases[:] all_bases = [] @@ -259,11 +259,11 @@ def _set_derived( self, new_derived ): self._derived = new_derived derived = property( _get_derived, _set_derived - , doc="list of L{derived classes<hierarchy_info_t>}") + , doc="list of :class:`derived classes <hierarchy_info_t>`") @property def recursive_derived(self): - """list of all L{derive classes<hierarchy_info_t>}""" + """list of all :class:`derive classes <hierarchy_info_t>`""" if self._recursive_derived is None: to_go = self.derived[:] all_derived = [] @@ -334,7 +334,7 @@ def _set_aliases( self, new_aliases ): self._aliases = new_aliases aliases = property( _get_aliases, _set_aliases - , doc="List of L{aliases<typedef_t>} to this instance") + , doc="List of :class:`aliases <typedef_t>` to this instance") def _get_byte_size(self): return self._byte_size @@ -384,7 +384,7 @@ def adopt_declaration( self, decl, access ): """adds new declaration to the class - :param decl: reference to a L{declaration<declaration_t>} + :param decl: reference to a :class:`declaration_t` :param access: member access type :type access: :class:ACCESS_TYPES @@ -406,7 +406,7 @@ removes decl from members list :param decl: declaration to be removed - :type decl: :class:declaration_t + :type decl: :class:`declaration_t` """ container = None access_type = self.find_out_member_access_type( decl ) @@ -424,7 +424,7 @@ returns member access type :param member: member of the class - :type member: :class:declaration_t + :type member: :class:`declaration_t` :rtype: :class:ACCESS_TYPES """ @@ -470,7 +470,7 @@ @property def container_traits( self ): - """reference to L{container traits<container_traits.py>} or None""" + """reference to :class:`container_traits_impl_t` or None""" if self._container_traits_set == False: import container_traits #prevent cyclic dependencies self._container_traits_set = True Modified: pygccxml_dev/pygccxml/declarations/cpptypes.py =================================================================== --- pygccxml_dev/pygccxml/declarations/cpptypes.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/cpptypes.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -80,7 +80,7 @@ class dummy_type_t( type_t ): - """provides :class:type_t interface for a string, that defines C++ type. + """provides :class:`type_t` interface for a string, that defines C++ type. This class could be very useful in the code generator. """ @@ -467,14 +467,14 @@ def _set_return_type(self, new_return_type): self._return_type = new_return_type return_type = property( _get_return_type, _set_return_type - , doc="reference to L{return type<type_t>}") + , doc="reference to :class:`return type <type_t>`") def _get_arguments_types(self): return self._arguments_types def _set_arguments_types(self, new_arguments_types): self._arguments_types = new_arguments_types arguments_types = property( _get_arguments_types, _set_arguments_types - , doc="list of argument L{types<type_t>}") + , doc="list of argument :class:`types <type_t>`") @property def has_ellipsis( self ): @@ -495,11 +495,9 @@ returns free function type :param return_type: function return type - :type return_type: :class:type_t - + :type return_type: :class:`type_t` :param arguments_types: list of argument :class:`type <type_t>` - - :rtype: L{free_function_type_t} + :rtype: :class:`free_function_type_t` """ f = lambda x: x.build_decl_string( with_defaults ) return free_function_type_t.NAME_TEMPLATE % { @@ -552,7 +550,7 @@ def _set_class_inst(self, class_inst ): self._class_inst = class_inst class_inst = property( _get_class_inst, _set_class_inst - ,doc="reference to parent L{class<declaration_t>}" ) + ,doc="reference to parent :class:`class <declaration_t>`" ) #TODO: create real typedef def create_typedef( self, typedef_name, class_alias=None, with_defaults=True): @@ -644,7 +642,7 @@ ## declarated types: class declarated_t( type_t ): - """class that binds between to hierarchies: :class:type_t and :class:declaration_t""" + """class that binds between to hierarchies: :class:`type_t` and :class:`declaration_t`""" def __init__( self, declaration ): type_t.__init__( self ) self._declaration = declaration @@ -654,7 +652,7 @@ def _set_declaration(self, new_declaration): self._declaration = new_declaration declaration = property( _get_declaration, _set_declaration - , doc="reference to L{declaration<declaration_t>}") + , doc="reference to :class:`declaration_t`") def build_decl_string(self, with_defaults=True): if with_defaults: Modified: pygccxml_dev/pygccxml/declarations/declaration.py =================================================================== --- pygccxml_dev/pygccxml/declarations/declaration.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/declaration.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -200,7 +200,7 @@ self._location = new_location location = property( _get_location, _set_location , doc="""Location of the declaration within source file - @type: L{location_t} + @type: :class:`location_t` """) def _get_is_artificial( self ): @@ -268,7 +268,7 @@ def cache( self ): """implementation details - reference to instance of L{algorithms_cache.algorithms_cache_t} class. + reference to instance of :class:`algorithms_cache_t` class. """ return self._cache Modified: pygccxml_dev/pygccxml/declarations/matchers.py =================================================================== --- pygccxml_dev/pygccxml/declarations/matchers.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/matchers.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -112,13 +112,13 @@ - declaration name, also could be fully qualified name Example: wstring or ::std::wstring - declaration type - Example: :class:class_t, :class:namespace_t, :class:enumeration_t + Example: :class:`class_t`, :class:`namespace_t`, :class:`enumeration_t` - location within file system ( file or directory ) """ def __init__( self, name=None, decl_type=None, header_dir=None, header_file=None ): """ - :param decl_type: declaration type to match by. For example :class:enumeration_t. - :type decl_type: any class that derives from L{declarations.declaration_t} class + :param decl_type: declaration type to match by. For example :class:`enumeration_t`. + :type decl_type: any class that derives from :class:`declaration_t` class :param name: declaration name, could be full name. :type name: str @@ -259,13 +259,13 @@ class variable_matcher_t( declaration_matcher_t ): """ Instance of this class will match variables by next criteria: - - :class:declaration_matcher_t criteria - - variable type. Example: L{int_t} or 'int' + - :class:`declaration_matcher_t` criteria + - variable type. Example: :class:`int_t` or 'int' """ def __init__( self, name=None, type=None, header_dir=None, header_file=None ): """ :param type: variable type - :type type: string or instance of :class:type_t derived class + :type type: string or instance of :class:`type_t` derived class """ declaration_matcher_t.__init__( self , name=name @@ -315,18 +315,18 @@ class calldef_matcher_t( declaration_matcher_t ): """ Instance of this class will match callable by next criteria: - - :class:declaration_matcher_t criteria - - return type. Example: L{int_t} or 'int' + - :class:`declaration_matcher_t` criteria + - return type. Example: :class:`int_t` or 'int' - argument types """ def __init__( self, name=None, return_type=None, arg_types=None, decl_type=None, header_dir=None, header_file=None): """ :param return_type: callable return type - :type return_type: string or instance of :class:type_t derived class + :type return_type: string or instance of :class:`type_t` derived class :param arg_types: list of function argument types. arg_types can contain. - Any item within the list could be string or instance of :class:type_t derived + Any item within the list could be string or instance of :class:`type_t` derived class. If you don't want some argument to participate in match you can put None. For example: @@ -397,7 +397,7 @@ class operator_matcher_t( calldef_matcher_t ): """ Instance of this class will match operators by next criteria: - - L{calldef_matcher_t} criteria + - :class:`calldef_matcher_t` criteria - operator symbol: =, !=, (), [] and etc """ def __init__( self, name=None, symbol=None, return_type=None, arg_types=None, decl_type=None, header_dir=None, header_file=None): @@ -499,7 +499,7 @@ def __init__( self, virtuality_type ): """ :param access_type: declaration access type - :type access_type: L{VIRTUALITY_TYPES} defines few consts for your convinience. + :type access_type: :class:VIRTUALITY_TYPES defines few consts for your convinience. """ matcher_base_t.__init__( self ) self.virtuality_type = virtuality_type Modified: pygccxml_dev/pygccxml/declarations/mdecl_wrapper.py =================================================================== --- pygccxml_dev/pygccxml/declarations/mdecl_wrapper.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/mdecl_wrapper.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -4,10 +4,10 @@ # http://www.boost.org/LICENSE_1_0.txt) """ -defines class L{mdecl_wrapper_t} that allows to work on set of declarations, +defines class :class:`mdecl_wrapper_t` that allows to work on set of declarations, as it was one declaration. -The L{class<mdecl_wrapper_t>} allows user to not write "for" loops within the code. +The :class:`class <mdecl_wrapper_t>` allows user to not write "for" loops within the code. """ import os @@ -46,7 +46,7 @@ def __init__( self, decls ): """:param decls: list of declarations to operate on. - :type decls: list of L{declaration wrappers<decl_wrapper_t>} + :type decls: list of :class:`declaration wrappers <decl_wrapper_t>` """ object.__init__( self ) self.__dict__['declarations'] = decls Modified: pygccxml_dev/pygccxml/declarations/namespace.py =================================================================== --- pygccxml_dev/pygccxml/declarations/namespace.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/namespace.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -58,7 +58,7 @@ removes decl from members list :param decl: declaration to be removed - :type decl: :class:declaration_t + :type decl: :class:`declaration_t` """ del self.declarations[ self.declarations.index( decl ) ] decl.cache.reset() Modified: pygccxml_dev/pygccxml/declarations/scopedef.py =================================================================== --- pygccxml_dev/pygccxml/declarations/scopedef.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/scopedef.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -53,7 +53,7 @@ Example 2: :: ns - referers to global namespace do_smths = ns.member_functions( "do_something ) - will return instance - of L{mdecl_wrapper_t} object. This object allows you few things: + of :class:`mdecl_wrapper_t` object. This object allows you few things: 1. To iterate on selected declarations @@ -129,7 +129,7 @@ return self._all_decls_not_recursive else: return self._get_declarations_impl() - declarations = property( _get_declarations, doc="list of children L{declarations<declaration_t>}" ) + declarations = property( _get_declarations, doc="list of children :class:`declarations <declaration_t>`" ) def remove_declaration( self, decl ): raise NotImplementedError() Modified: pygccxml_dev/pygccxml/declarations/templates.py =================================================================== --- pygccxml_dev/pygccxml/declarations/templates.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/templates.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -12,7 +12,7 @@ - name ( std::vector ) - list of arguments ( int ) -This module also defines few convenience function like L{split} and L{join}. +This module also defines few convenience function like :function:split and :function:join. """ import pattern_parser Modified: pygccxml_dev/pygccxml/declarations/type_traits.py =================================================================== --- pygccxml_dev/pygccxml/declarations/type_traits.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/type_traits.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -12,7 +12,7 @@ - modify type Those functions are very valuable for code generation. Almost all functions -within this module works on :class:type_t class hierarchy and\\or :class:class_t. +within this module works on :class:`type_t` class hierarchy and\\or :class:class_t. """ import os @@ -252,9 +252,9 @@ return nake_type.base def remove_declarated( type_ ): - """removes type-declaration class-binder L{declarated_t} from the type_ + """removes type-declaration class-binder :class:`declarated_t` from the type_ - If type_ is not L{declarated_t}, it will be returned as is + If type_ is not :class:`declarated_t`, it will be returned as is """ type_ = remove_alias( type_ ) if isinstance( type_, cpptypes.declarated_t ): Modified: pygccxml_dev/pygccxml/declarations/variable.py =================================================================== --- pygccxml_dev/pygccxml/declarations/variable.py 2009-02-02 19:04:21 UTC (rev 1651) +++ pygccxml_dev/pygccxml/declarations/variable.py 2009-02-02 20:40:36 UTC (rev 1652) @@ -48,7 +48,7 @@ def _set_type_qualifiers(self, type_qualifiers): self._type_qualifiers = type_qualifiers type_qualifiers = property( _get_type_qualifiers, _set_type_qualifiers - , doc="reference to the L{type_qualifiers_t} instance" ) + , doc="reference to the :class:`type_qualifiers_t` instance" ) def _get_value(self): return self._value Modified: pyplusplus_dev/docs/comparisons/pyste.rest =================================================================== --- pyplusplus_dev/docs/comparisons/pyste.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pyplusplus_dev/docs/comparisons/pyste.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -51,7 +51,7 @@ 2. It is very difficult to customize generated code. I will provide few examples later. -I tried to fix `Pyste`_. At first, I developed `pygccxml`_ and tried to replace +I tried to fix `Pyste`_. At first, I developed :doc:`pygccxml <../../pygccxml/pygccxml>` and tried to replace relevant `Pyste`_ functionality. I did not like the result. After this, I dropped the idea to fix `Pyste`_ and decided to develop new code generator - `Py++`_. Later you will find few points, which explains, why I decided not to fix `Pyste`_. @@ -156,7 +156,7 @@ One of the biggest weaknesses of `Pyste`_ is a lack of good `GCC-XML`_ front-end and this fact cause `Pyste`_ to generate not optimal code. I will prove this later. In order to avoid such weakness, before I have created `Py++`_, -I created `pygccxml`_. `pygccxml`_ is a stand-alone project, which provides few +I created :doc:`pygccxml <../../pygccxml/pygccxml>`. :doc:`pygccxml <../../pygccxml/pygccxml>` is a stand-alone project, which provides few things: * hierarchy of C++ declarations @@ -170,13 +170,13 @@ + every file will be parsed alone, after this, duplicated declarations and types will be removed -`pygccxml`_ contributes in few ways to `Py++`_: +:doc:`pygccxml <../../pygccxml/pygccxml>` contributes in few ways to `Py++`_: + `Py++`_ has nothing to do with code parsing. Theoretically - an other back-end could be added to `pygccxml`_ without changing even one + an other back-end could be added to :doc:`pygccxml <../../pygccxml/pygccxml>` without changing even one line of code within `Py++`_. - + `pygccxml`_ has type traits. A lot of type traits algorithms from + + :doc:`pygccxml <../../pygccxml/pygccxml>` has type traits. A lot of type traits algorithms from `boost.type_traits`_ library has been implemented. `Py++`_ makes an extensive use of them: @@ -215,7 +215,7 @@ 3. Maintenance. Every time you add new file\\class to your project you should modify\\create `Pyste`_ interface files. - They are solved by `pygccxml`_ package. Please take a look on `pygccxml`_ + They are solved by :doc:`pygccxml <../../pygccxml/pygccxml>` package. Please take a look on :doc:`pygccxml <../../pygccxml/pygccxml>` `query interface`__ documentation. .. __ : ./../../pygccxml/query_interface.html @@ -282,7 +282,7 @@ ------------ Both `Pyste`_ and `Py++`_ introduce one external dependency. In order to parse XML `Pyste`_ uses `elementtree`_. On the other side `Py++`_ -depends on `pygccxml`_ project. +depends on :doc:`pygccxml <../../pygccxml/pygccxml>` project. ------------- Features list @@ -424,7 +424,6 @@ .. _`screenshot` : ./../documentation/tutorials/pyplusplus_gui.html .. _`Py++` : ./../pyplusplus.html -.. _`pygccxml` : ./../../pygccxml/pygccxml.html .. _`Pyste`: http://www.boost.org/libs/python/doc/index.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`SourceForge`: http://sourceforge.net/index.php Modified: pyplusplus_dev/docs/documentation/architecture.rest =================================================================== --- pyplusplus_dev/docs/documentation/architecture.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pyplusplus_dev/docs/documentation/architecture.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -23,7 +23,7 @@ On the earlier stage of the development, I realized, that all this functionality does not belong to code generator and should be implemented out side of it. -`pygccxml`_ project was born. `pygccxml`_ made the code generator to be smaller +:doc:`pygccxml <../../pygccxml/pygccxml>` project was born. :doc:`pygccxml <../../pygccxml/pygccxml>` made the code generator to be smaller and C++ parser independent. It provides the following services: * definition of classes, that describe C++ declaration and types, and their @@ -55,7 +55,7 @@ Parsing integration ~~~~~~~~~~~~~~~~~~~ -`Py++`_ provides it's own "API" to configure `pygccxml`_ parsing services. The +`Py++`_ provides it's own "API" to configure :doc:`pygccxml <../../pygccxml/pygccxml>` parsing services. The "API" I am talking about, is arguments to ``module_builder.__init__`` method. We think, that exposing those services via `Py++`_ simplifies its usage. @@ -131,7 +131,7 @@ * provides user with additional information( warnings and hints ) -* as a bonus, `pygccxml`_ remained to be stand-alone project +* as a bonus, :doc:`pygccxml <../../pygccxml/pygccxml>` remained to be stand-alone project ---------------------- Code generation engine @@ -323,7 +323,6 @@ .. _`open-closed principle` : http://www.google.com/search?sourceid=gmail&q=open%20closed%20principle .. _`Py++` : ./../pyplusplus.html -.. _`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 Modified: pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -94,7 +94,6 @@ .. _`ctypes` : http://docs.python.org/lib/module-ctypes.html .. _`from_address` : http://docs.python.org/lib/ctypes-data-types.html .. _`Py++` : ./../../pyplusplus.html -.. _`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 Modified: pyplusplus_dev/docs/documentation/ctypes/this_and_sizeof.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/this_and_sizeof.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pyplusplus_dev/docs/documentation/ctypes/this_and_sizeof.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -38,7 +38,6 @@ .. _`ctypes` : http://docs.python.org/lib/module-ctypes.html .. _`from_address` : http://docs.python.org/lib/ctypes-data-types.html .. _`Py++` : ./../../pyplusplus.html -.. _`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 Modified: pyplusplus_dev/docs/documentation/ctypes/unions.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/unions.rest 2009-02-02 19:04:21 UTC (rev 1651) +++ pyplusplus_dev/docs/documentation/ctypes/unions.rest 2009-02-02 20:40:36 UTC (rev 1652) @@ -66,7 +66,6 @@ .. _`ctypes` : http://docs.pyth... [truncated message content] |
From: <rom...@us...> - 2009-02-02 21:10:01
|
Revision: 1653 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1653&view=rev Author: roman_yakovenko Date: 2009-02-02 21:09:57 +0000 (Mon, 02 Feb 2009) Log Message: ----------- sphinx Modified Paths: -------------- pygccxml_dev/docs/pygccxml.rest pygccxml_dev/docs/query_interface.rest pyplusplus_dev/docs/comparisons/compare_to.rest pyplusplus_dev/docs/comparisons/pyste.rest pyplusplus_dev/docs/definition.irest pyplusplus_dev/docs/documentation/architecture.rest pyplusplus_dev/docs/documentation/containers.rest pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest pyplusplus_dev/docs/documentation/ctypes/this_and_sizeof.rest pyplusplus_dev/docs/documentation/ctypes/unions.rest pyplusplus_dev/docs/documentation/ctypes/variables.rest pyplusplus_dev/docs/documentation/doc_string.rest pyplusplus_dev/docs/documentation/functions/call_policies/as_tuple.rest pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest pyplusplus_dev/docs/documentation/functions/call_policies/custom_call_policies.rest pyplusplus_dev/docs/documentation/functions/call_policies/return_addressof.rest pyplusplus_dev/docs/documentation/functions/call_policies/return_pointee_value.rest pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest pyplusplus_dev/docs/documentation/functions/default_args.rest pyplusplus_dev/docs/documentation/functions/functions.rest pyplusplus_dev/docs/documentation/functions/make_constructor.rest pyplusplus_dev/docs/documentation/functions/overloading.rest pyplusplus_dev/docs/documentation/functions/registration_order.rest pyplusplus_dev/docs/documentation/functions/transformation/inout.rest pyplusplus_dev/docs/documentation/functions/transformation/input.rest pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest pyplusplus_dev/docs/documentation/functions/transformation/name_mangling.rest pyplusplus_dev/docs/documentation/functions/transformation/output.rest pyplusplus_dev/docs/documentation/functions/transformation/output_static_array.rest pyplusplus_dev/docs/documentation/functions/transformation/terminology.rest pyplusplus_dev/docs/documentation/functions/transformation/transfer_ownership.rest pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest pyplusplus_dev/docs/documentation/how_to/absolute_relative_paths.rest pyplusplus_dev/docs/documentation/how_to/best_practices.rest pyplusplus_dev/docs/documentation/how_to/exception_translation.rest pyplusplus_dev/docs/documentation/how_to/fatal_error_c1204.rest pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest pyplusplus_dev/docs/documentation/how_to/hints.rest pyplusplus_dev/docs/documentation/how_to/templates.rest pyplusplus_dev/docs/documentation/index.rest pyplusplus_dev/docs/documentation/inserting_code.rest pyplusplus_dev/docs/documentation/multi_module_development.rest pyplusplus_dev/docs/documentation/properties.rest pyplusplus_dev/docs/documentation/split_module.rest pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest pyplusplus_dev/docs/documentation/tutorials/tutorials.rest pyplusplus_dev/docs/documentation/warnings.rest pyplusplus_dev/docs/download.rest pyplusplus_dev/docs/examples/boost/boost.rest pyplusplus_dev/docs/examples/easybmp/easybmp.rest pyplusplus_dev/docs/examples/examples.rest pyplusplus_dev/docs/history/history.rest pyplusplus_dev/docs/links.rest pyplusplus_dev/docs/peps/dsl_challenge.rest pyplusplus_dev/docs/peps/dsl_challenge_introduction.irest pyplusplus_dev/docs/peps/peps_index.rest pyplusplus_dev/docs/pyplusplus.rest pyplusplus_dev/docs/quotes.rest pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptrs.rest Modified: pygccxml_dev/docs/pygccxml.rest =================================================================== --- pygccxml_dev/docs/pygccxml.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pygccxml_dev/docs/pygccxml.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -22,7 +22,7 @@ * parse C++ source code * create a powerful code generator - + `Py++`_ is heavily based on :doc:`pygccxml <pygccxml>` + + :doc:`Py++ <../pyplusplus/pyplusplus>` is heavily based on :doc:`pygccxml <pygccxml>` + generate `WSDL`_ file from sources + ... @@ -82,7 +82,7 @@ Declaration dependencies ------------------------ You can query a declaration, about it dependencies - declarations it depends on. -This is very powerful and useful feature. `Py++`_, for example, uses this +This is very powerful and useful feature. :doc:`Py++ <../pyplusplus/pyplusplus>`, for example, uses this functionality to check that user creates Python bindings for all relevant declarations. @@ -133,8 +133,6 @@ apidocs/api.rest .. _`WSDL`: http://www.w3.org/TR/wsdl -.. _`Py++`: ./../pyplusplus/pyplusplus.html - .. _`SourceForge`: http://sourceforge.net/index.php .. _`Docutils`: http://docutils.sourceforge.net .. _`Python`: http://www.python.org Modified: pygccxml_dev/docs/query_interface.rest =================================================================== --- pygccxml_dev/docs/query_interface.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pygccxml_dev/docs/query_interface.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -184,7 +184,7 @@ Return value of ``member_functions`` is not Python list or set, but instance of ``mdecl_wrapper_t`` class. This class allows you to work on all selected -objects at once. I will give an example from another project - `Py++`_. +objects at once. I will give an example from another project - :doc:`Py++ <../pyplusplus/pyplusplus>`. In order to help `Boost.Python`_ to manage objects life time, all functions should have `call policies`_. For example: @@ -213,7 +213,7 @@ clone.call_policies = return_value_policy( manage_new_object ) -Another example, from `Py++`_ project. Sometimes it is desirable to +Another example, from :doc:`Py++ <../pyplusplus/pyplusplus>` project. Sometimes it is desirable to exclude declaration, from being exported to Python. The following code will exclude ``clone`` member function from being exported: @@ -286,7 +286,6 @@ .. _`call policies`: http://boost.org/libs/python/doc/tutorial/doc/html/python/functions.html#python.call_policies .. _`Call policies`: http://boost.org/libs/python/doc/tutorial/doc/html/python/functions.html#python.call_policies -.. _`Py++`: ./../pyplusplus/pyplusplus.html .. _`SourceForge`: http://sourceforge.net/index.php .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/comparisons/compare_to.rest =================================================================== --- pyplusplus_dev/docs/comparisons/compare_to.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/comparisons/compare_to.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -7,7 +7,7 @@ ----- `Pyste`_ is the Boost.Python code generator, which is not under active development -any more. Nevertheless, users request to compare `Py++`_ and `Pyste`_. You +any more. Nevertheless, users request to compare :doc:`Py++ <../pyplusplus>` and `Pyste`_. You can read `here`_ the comparison. .. _`here` : ./pyste.html @@ -16,7 +16,7 @@ SWIG & SIP ---------- -The document, that compares SIP, SWIG and `Py++`_ is under construction. +The document, that compares SIP, SWIG and :doc:`Py++ <../pyplusplus>` is under construction. May be you are editing it right now, by evaluating these tools :-). I did not use SWIG and SIP, so I cannot provide you with fair comparison. I will let the open source project(s) "to talk": @@ -24,7 +24,7 @@ * `Python-OGRE`_: The impression of Lakin Wecker, after spending 30 hours working working with - `Py++`_: http://www.ogre3d.org/phpBB2addons/viewtopic.php?t=1478&sid=4d77585146aabbc54f4b31ec50874d86 + :doc:`Py++ <../pyplusplus>`: http://www.ogre3d.org/phpBB2addons/viewtopic.php?t=1478&sid=4d77585146aabbc54f4b31ec50874d86 `Python-OGRE`_ project is reached the state, when it has all functionality provided by similar one - `PyOgre`_. `PyOgre`_ is developed using SWIG. @@ -67,5 +67,4 @@ pyste.rest -.. _`Py++` : ./../pyplusplus.html .. _`Pyste`: http://www.boost.org/libs/python/doc/index.html Modified: pyplusplus_dev/docs/comparisons/pyste.rest =================================================================== --- pyplusplus_dev/docs/comparisons/pyste.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/comparisons/pyste.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -3,14 +3,14 @@ ======================== ---------------------- -What is `Py++`_? +What is Py++? ---------------------- .. include:: ../definition.irest ------------------ -What is `Pyste`_? ------------------ +-------------- +What is Pyste? +-------------- `Pyste`_ is a `Boost.Python`_ code generator. The user specifies the classes and functions to be exported using a simple interface file, which following the @@ -23,7 +23,7 @@ -------- If you are reading this document, I can assume that you know what `Boost.Python`_, -`Pyste`_ and `Py++`_ are. This document compares `Pyste`_ and `Py++`_. +`Pyste`_ and :doc:`Py++ <../pyplusplus>` are. This document compares `Pyste`_ and :doc:`Py++ <../pyplusplus>`. I am going to compare: * user interface @@ -53,7 +53,7 @@ I tried to fix `Pyste`_. At first, I developed :doc:`pygccxml <../../pygccxml/pygccxml>` and tried to replace relevant `Pyste`_ functionality. I did not like the result. After this, I dropped -the idea to fix `Pyste`_ and decided to develop new code generator - `Py++`_. +the idea to fix `Pyste`_ and decided to develop new code generator - :doc:`Py++ <../pyplusplus>`. Later you will find few points, which explains, why I decided not to fix `Pyste`_. Have a nice reading. @@ -99,14 +99,14 @@ Py++ ---- -`Py++`_ has 2 user interfaces: +:doc:`Py++ <../pyplusplus>` has 2 user interfaces: 1. GUI - small and simple graphic user interface, which does not request from - user any knowledge about `Boost.Python`_ or `Py++`_. You can see + user any knowledge about `Boost.Python`_ or :doc:`Py++ <../pyplusplus>`. You can see its `screenshot`_. 2. API - object-oriented framework, that helps you to create code generator, - that suites your needs. `Py++`_ framework consists 3 packages: + that suites your needs. :doc:`Py++ <../pyplusplus>` framework consists 3 packages: 1. Code creators package. The only responsibility of classes in this package is to create code. Those classes do not care where code is @@ -119,7 +119,7 @@ 3. File writers package. This package contains classes that write generated code to file(s). -The good news: it is very easy to evaluate `Py++`_, using GUI. The bad +The good news: it is very easy to evaluate :doc:`Py++ <../pyplusplus>`, using GUI. The bad news is that you should learn an other set of API's in order to complete your task. It is not as awful as it sounds, but still there is some learning curve. @@ -155,7 +155,7 @@ One of the biggest weaknesses of `Pyste`_ is a lack of good `GCC-XML`_ front-end and this fact cause `Pyste`_ to generate not optimal code. I will prove this -later. In order to avoid such weakness, before I have created `Py++`_, +later. In order to avoid such weakness, before I have created :doc:`Py++ <../pyplusplus>`, I created :doc:`pygccxml <../../pygccxml/pygccxml>`. :doc:`pygccxml <../../pygccxml/pygccxml>` is a stand-alone project, which provides few things: @@ -170,14 +170,14 @@ + every file will be parsed alone, after this, duplicated declarations and types will be removed -:doc:`pygccxml <../../pygccxml/pygccxml>` contributes in few ways to `Py++`_: +:doc:`pygccxml <../../pygccxml/pygccxml>` contributes in few ways to :doc:`Py++ <../pyplusplus>`: - + `Py++`_ has nothing to do with code parsing. Theoretically + + :doc:`Py++ <../pyplusplus>` has nothing to do with code parsing. Theoretically an other back-end could be added to :doc:`pygccxml <../../pygccxml/pygccxml>` without changing even one - line of code within `Py++`_. + line of code within :doc:`Py++ <../pyplusplus>`. + :doc:`pygccxml <../../pygccxml/pygccxml>` has type traits. A lot of type traits algorithms from - `boost.type_traits`_ library has been implemented. `Py++`_ makes + `boost.type_traits`_ library has been implemented. :doc:`Py++ <../pyplusplus>` makes an extensive use of them: * identify "call policies" algorithm @@ -235,7 +235,7 @@ what is going on, in "ClassExporter.py" file. Class *ClassExporter* knows everything about internal exporters, more over *ClassExporter* is responsible to export all its base classes before it exports itself. This is just wrong. -`Py++`_ implements better solution. `Py++`_ has code creators class +:doc:`Py++ <../pyplusplus>` implements better solution. :doc:`Py++ <../pyplusplus>` has code creators class hierarchy and factory, that creates those code creators based on given declarations. The questions like: @@ -249,7 +249,7 @@ solved by the factory. The only thing that left to code creators is to create code. By the way, it is not an easy task to fix this specific problem in `Pyste`_. -Serious re-factoring should be done. `Py++`_ defines *compound_t* code +Serious re-factoring should be done. :doc:`Py++ <../pyplusplus>` defines *compound_t* code creator. *module_t*, *module_body_t*, *class_t* - are typical examples of compound code creators. They do know few code creators, but that is all. @@ -260,7 +260,7 @@ protocol and may be to modify code unit. Try to add *Exporter* that exposes get\\set functions as property. It is not an easy task. An other problem, I see here, is that code unit is some kind of *Exporter*. Code unit also creates code. -I did not fill good with this design. So I decided, that in `Py++`_ code +I did not fill good with this design. So I decided, that in :doc:`Py++ <../pyplusplus>` code should be created only by code creators. This decision simplifies a lot of things: @@ -280,29 +280,29 @@ ------------ Dependencies ------------ -Both `Pyste`_ and `Py++`_ introduce one external dependency. In order to -parse XML `Pyste`_ uses `elementtree`_. On the other side `Py++`_ +Both `Pyste`_ and :doc:`Py++ <../pyplusplus>` introduce one external dependency. In order to +parse XML `Pyste`_ uses `elementtree`_. On the other side :doc:`Py++ <../pyplusplus>` depends on :doc:`pygccxml <../../pygccxml/pygccxml>` project. ------------- Features list ------------- -`Py++`_ supports almost all features `Pyste`_ implements. `Py++`_, +:doc:`Py++ <../pyplusplus>` supports almost all features `Pyste`_ implements. :doc:`Py++ <../pyplusplus>`, version 0.8.0, does not implements the following functionality, implemented by `Pyste`_: * *pow* operator * good documentation -Here you can find the complete features list of `Py++`_. +Here you can find the complete features list of :doc:`Py++ <../pyplusplus>`. -Features unique to `Py++`_: +Features unique to :doc:`Py++ <../pyplusplus>`: - * `Py++`_ exposes protected member functions + * :doc:`Py++ <../pyplusplus>` exposes protected member functions - * `Py++`_, in most cases, will automatically detect class held type + * :doc:`Py++ <../pyplusplus>`, in most cases, will automatically detect class held type - * `Py++`_ creates implicit conversion code for: + * :doc:`Py++ <../pyplusplus>` creates implicit conversion code for: + casting constructors @@ -316,13 +316,13 @@ * operators defined in base class could be redefined/exposed in derived class - * `Py++`_ exposes bit fields member variables + * :doc:`Py++ <../pyplusplus>` exposes bit fields member variables Nice features list ------------------ -Both `Pyste`_ and `Py++`_ generate working code. As we already saw in some -cases `Py++`_ do better job. `Py++`_ allows the following customization on +Both `Pyste`_ and :doc:`Py++ <../pyplusplus>` generate working code. As we already saw in some +cases :doc:`Py++ <../pyplusplus>` do better job. :doc:`Py++ <../pyplusplus>` allows the following customization on generated code: * To define std and user directories. *include_t* code creator will take @@ -335,7 +335,7 @@ namespace dt = boost::date_time; All code, which is generated after this statement, will use ``dt`` instead of - ``boost::date_time``. This allows `Py++`_ to create user-friendly code. + ``boost::date_time``. This allows :doc:`Py++ <../pyplusplus>` to create user-friendly code. * Classes and functions support 2 modes of code generation. Example: @@ -376,13 +376,13 @@ 2. If in future a developer decides to create overload to some function, this code will continue to compile. - * `Py++`_ has small nice future - "license". User can specify the + * :doc:`Py++ <../pyplusplus>` has small nice future - "license". User can specify the license and it will appear in every generated file. - * `Py++`_ allows user to define custom call policies resolver. See + * :doc:`Py++ <../pyplusplus>` allows user to define custom call policies resolver. See boost.date_time example - * `Py++`_ allows user to create custom code creators. See + * :doc:`Py++ <../pyplusplus>` allows user to create custom code creators. See "custom_code_creator" example. * real world examples: @@ -397,9 +397,9 @@ Conclusion ---------- -If I were you I would choose `Py++`_ to create bindings for your project. -For very small projects or for educational reasons you may use `Py++`_.GUI. -For big projects, you need flexibility and power of `Py++`_. +If I were you I would choose :doc:`Py++ <../pyplusplus>` to create bindings for your project. +For very small projects or for educational reasons you may use :doc:`Py++ <../pyplusplus>`.GUI. +For big projects, you need flexibility and power of :doc:`Py++ <../pyplusplus>`. ---- P.S. @@ -408,22 +408,21 @@ This comparison was a little unfair. First of all `Pyste`_ is no more under active development\\support. Second, `Pyste`_ has been written 2 years ago and had different goal. The following definitions will help you to understand the main -difference between `Pyste`_ and `Py++`_. +difference between `Pyste`_ and :doc:`Py++ <../pyplusplus>`. `Pyste`_ `Pyste`_ is `Boost.Python`_ code generator. - `Py++`_ + :doc:`Py++ <../pyplusplus>` .. include:: ../definition.irest -`Pyste`_ and `Py++`_ have been created to handle different tasks, hence +`Pyste`_ and :doc:`Py++ <../pyplusplus>` have been created to handle different tasks, hence the difference in design, user interface and complexity. Bruno da Silva de Oliveira, the `Pyste`_ author, understands the problems, I raised here. He -thought about them, long before I created `Py++`_. But unfortunately, lack +thought about them, long before I created :doc:`Py++ <../pyplusplus>`. But unfortunately, lack of time and motivation prevents him to work on `Pyste`_. .. _`screenshot` : ./../documentation/tutorials/pyplusplus_gui.html -.. _`Py++` : ./../pyplusplus.html .. _`Pyste`: http://www.boost.org/libs/python/doc/index.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`SourceForge`: http://sourceforge.net/index.php Modified: pyplusplus_dev/docs/definition.irest =================================================================== --- pyplusplus_dev/docs/definition.irest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/definition.irest 2009-02-02 21:09:57 UTC (rev 1653) @@ -1,4 +1,4 @@ -`Py++`_ is an object-oriented framework for creating a code generator for -`Boost.Python`_ library. +Py++ is an object-oriented framework for creating a code generator for +`Boost.Python`_ library. -.. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html \ No newline at end of file +.. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html Modified: pyplusplus_dev/docs/documentation/architecture.rest =================================================================== --- pyplusplus_dev/docs/documentation/architecture.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/architecture.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -6,7 +6,7 @@ Introduction ------------ -This document will describe an architecture behind `Py++`_. +This document will describe an architecture behind :doc:`Py++ <../pyplusplus>`. --------------------------- Py++ & pygccxml integration @@ -32,7 +32,7 @@ * C++ source files parsing and caching functionality -`Py++`_ uses those services to: +:doc:`Py++ <../pyplusplus>` uses those services to: * extract declarations from source files and to provide powerful query interface @@ -50,14 +50,14 @@ Integration details ------------------- -`Py++`_ uses different approaches to expose these services to the user. +:doc:`Py++ <../pyplusplus>` uses different approaches to expose these services to the user. Parsing integration ~~~~~~~~~~~~~~~~~~~ -`Py++`_ provides it's own "API" to configure :doc:`pygccxml <../../pygccxml/pygccxml>` parsing services. The +:doc:`Py++ <../pyplusplus>` provides it's own "API" to configure :doc:`pygccxml <../../pygccxml/pygccxml>` parsing services. The "API" I am talking about, is arguments to ``module_builder.__init__`` method. -We think, that exposing those services via `Py++`_ simplifies its usage. +We think, that exposing those services via :doc:`Py++ <../pyplusplus>` simplifies its usage. Declarations tree integration @@ -95,7 +95,7 @@ What you see here, is a common pattern, that will appear in all projects, that -use `Py++`_: +use :doc:`Py++ <../pyplusplus>`: * find the declaration(s) @@ -103,7 +103,7 @@ What is the point of this example? From the user point of view it is perfectly good, it makes a lot of sense to configure the code generation engine, using -the declarations tree. How does `Py++`_ add missing functionality to +the declarations tree. How does :doc:`Py++ <../pyplusplus>` add missing functionality to ``pygccxml.declarations`` classes? There were few possible solutions to the problem. The following one was implemented: @@ -146,7 +146,7 @@ * How it should be written to files? - Remember, `Py++`_ is targeting big projects. It cannot generate all code + Remember, :doc:`Py++ <../pyplusplus>` is targeting big projects. It cannot generate all code in one file - this will not work, not at all. ``Code creators`` and file writers provides solution for both problems. @@ -290,7 +290,7 @@ ---------------- ``File writers`` classes are responsible for writing ``code creators tree`` into -the files. `Py++`_ implements the following strategies of writing ``code creators tree`` +the files. :doc:`Py++ <../pyplusplus>` implements the following strategies of writing ``code creators tree`` into files: * single file @@ -318,11 +318,10 @@ Conclusion ---------- -It safe to use `Py++`_ for big and small projects! +It safe to use :doc:`Py++ <../pyplusplus>` for big and small projects! .. _`open-closed principle` : http://www.google.com/search?sourceid=gmail&q=open%20closed%20principle -.. _`Py++` : ./../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/containers.rest =================================================================== --- pyplusplus_dev/docs/documentation/containers.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/containers.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -55,7 +55,7 @@ Py++ and indexing suites ------------------------ -`Py++`_ implements support for both indexing suites. More over, you can +:doc:`Py++ <../pyplusplus>` implements support for both indexing suites. More over, you can freely mix indexing suites. For example you can expose ``std::vector<int>`` using `Boost.Python`_ built-in indexing suite and ``std::map< int, std::string>`` using Raoul Gough's indexing suite. @@ -64,9 +64,9 @@ How does it work? ----------------- -In both cases, `Py++`_ provides almost "hands free" solution. `Py++`_ +In both cases, :doc:`Py++ <../pyplusplus>` provides almost "hands free" solution. :doc:`Py++ <../pyplusplus>` keeps track of all exported functions and variables, and if it sees that there is -a usage of stl container, it exports the container. In both cases, `Py++`_ +a usage of stl container, it exports the container. In both cases, :doc:`Py++ <../pyplusplus>` analyzes the container ``value_type`` ( or in case of mapping container ``mapped_type`` ), in order to set reasonable defaults, when it generates the code. @@ -74,7 +74,7 @@ Indexing suites API ------------------- -By default, `Py++`_ works with built-in indexing suite. If you want to use +By default, :doc:`Py++ <../pyplusplus>` works with built-in indexing suite. If you want to use indexing suite version 2, you should tell this to the ``module_builder_t.__init__`` method: @@ -87,7 +87,7 @@ of ``indexing_suite1_t`` or ``indexing_suite2_t`` class. -How does `Py++`_ know, that a class represents STL container instantiation? +How does :doc:`Py++ <../pyplusplus>` know, that a class represents STL container instantiation? Well, it uses ``pygccxml.declarations.container_traits`` to find out this. ``pygccxml.declarations.container_traits`` class, provides all functionality needed to identify container and to find out its ``value_type`` @@ -97,7 +97,7 @@ Built-in indexing suite API --------------------------- -`Py++`_ defines ``indexing_suite1_t`` class. This class allows configure +:doc:`Py++ <../pyplusplus>` defines ``indexing_suite1_t`` class. This class allows configure any detail of generated code: * ``no_proxy`` - a boolean, if ``value_type`` is one of the the following types @@ -138,19 +138,19 @@ }; -`Py++`_ declarations tree will contains ``item``, ``my_data``, +:doc:`Py++ <../pyplusplus>` declarations tree will contains ``item``, ``my_data``, ``vector<item>`` and ``map<string,item>`` class declarations. If ``value_type`` does not support "equal" or "less than" functionality, sort and search functionality could not be exported. -`Py++`_ class declaration has two properties: ``equality_comparable`` and +:doc:`Py++ <../pyplusplus>` class declaration has two properties: ``equality_comparable`` and ``less_than_comparable``. The value of those properties is calculated on first -invocation. If `Py++`_ can find ``operator==``, that works on ``value_type``, +invocation. If :doc:`Py++ <../pyplusplus>` can find ``operator==``, that works on ``value_type``, then, ``equality_comparable`` property value will be set to ``True``, otherwise to ``False``. Same process is applied on ``less_than_comparable`` property. -In our case, `Py++`_ will set both properties to ``False``, thus sort and +In our case, :doc:`Py++ <../pyplusplus>` will set both properties to ``False``, thus sort and search functionality will not be exported. It is the time to introduce ``indexing_suite2_t`` class: @@ -165,13 +165,13 @@ * ``element_type`` - is a reference to container ``value_type`` or ``mapped_type``. * ``call_policies`` - read/write property, in near future I will add code to - `Py++`_ that will analyze container ``value_type`` and will decide about + :doc:`Py++ <../pyplusplus>` that will analyze container ``value_type`` and will decide about default call policies. Just an example: for non-copy constructable classes ``call_policies`` should be set to ``return_internal_reference``. * ``[disable|enable]_method`` - new indexing suite, allows to configure functionality exported to Python, using simple bitwise operations on predefined - flags. `Py++`_ allows you to specify what methods you want to disable + flags. :doc:`Py++ <../pyplusplus>` allows you to specify what methods you want to disable or enable. ``indexing_suite2_t.METHODS`` contains names of all supported methods. * ``[disable|enable]_methods_group`` - almost same as above, but allows you @@ -186,11 +186,10 @@ explicitly to disable method or methods group. 2. The documentation of new indexing suite contains few small mistakes. - I hope, I will have time to fix them. Any way, `Py++`_ generates + I hope, I will have time to fix them. Any way, :doc:`Py++ <../pyplusplus>` generates correct code. -.. _`Py++` : ./../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -24,7 +24,7 @@ -------- The idea behind "ctypes integration" functionality is really simple: you -configure `Py++`_ to expose address of the variable\\return value, and than you +configure :doc:`Py++ <../../pyplusplus>` to expose address of the variable\\return value, and than you you use `ctypes`_ `from_address`_ functionality to access and modify the data. Obviously, this approach has pros and cons: @@ -57,7 +57,7 @@ Implemented functionality ------------------------- -`Py++`_ is able to +:doc:`Py++ <../../pyplusplus>` is able to * expose global and member variable address @@ -93,7 +93,6 @@ .. _`new call policy was created` : ./../../documentation/functions/call_policies/return_addressof.html .. _`ctypes` : http://docs.python.org/lib/module-ctypes.html .. _`from_address` : http://docs.python.org/lib/ctypes-data-types.html -.. _`Py++` : ./../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/ctypes/this_and_sizeof.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/this_and_sizeof.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/ctypes/this_and_sizeof.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -6,7 +6,7 @@ The purpose ----------- -`Py++`_ can expose a class ``sizeof`` and ``this`` pointer value to `Python`_. +:doc:`Py++ <../../pyplusplus>` can expose a class ``sizeof`` and ``this`` pointer value to `Python`_. I created this functionality without special purpose in mind. ------- @@ -37,7 +37,6 @@ .. _`ctypes` : http://docs.python.org/lib/module-ctypes.html .. _`from_address` : http://docs.python.org/lib/ctypes-data-types.html -.. _`Py++` : ./../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/ctypes/unions.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/unions.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/ctypes/unions.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -10,7 +10,7 @@ In this document, I am going to show you a complete example how to get access to the data, stored in the variable. -`Py++`_ will not expose a union - it is impossible using `Boost.Python`_, +:doc:`Py++ <../../pyplusplus>` will not expose a union - it is impossible using `Boost.Python`_, instead it will expose the address of the variable and the rest is done from the `Python`_ using `ctypes`_ package. @@ -30,7 +30,7 @@ actual_data_t data; }; -As in many other cases, `Py++`_ does the job automatically: +As in many other cases, :doc:`Py++ <../../pyplusplus>` does the job automatically: .. code-block:: python @@ -65,7 +65,6 @@ .. _`ctypes` : http://docs.python.org/lib/module-ctypes.html .. _`from_address` : http://docs.python.org/lib/ctypes-data-types.html -.. _`Py++` : ./../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/ctypes/variables.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/variables.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/ctypes/variables.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -7,10 +7,10 @@ -------------- ``variable_t`` declarations have got new property ``expose_address``. If you set -it value to ``True``, `Py++`_ will register new property with the same name, but +it value to ``True``, :doc:`Py++ <../../pyplusplus>` will register new property with the same name, but the type of it will be ``unsigned int`` and the value is address of the variable. -`Py++`_ will take care and generate the right code for global, static and member +:doc:`Py++ <../../pyplusplus>` will take care and generate the right code for global, static and member variables. ---------------- @@ -45,7 +45,7 @@ bytes = mb.class_( 'bytes_t' ) bytes.vars().expose_address = True -`Py++`_ will generate code, which will expose the address of the variables. +:doc:`Py++ <../../pyplusplus>` will generate code, which will expose the address of the variables. and now it is a time to show some `ctypes`_ magic: @@ -68,7 +68,6 @@ .. _`ctypes` : http://docs.python.org/lib/module-ctypes.html .. _`from_address` : http://docs.python.org/lib/ctypes-data-types.html -.. _`Py++` : ./../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/doc_string.rest =================================================================== --- pyplusplus_dev/docs/documentation/doc_string.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/doc_string.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -6,7 +6,7 @@ Introduction ------------ -`Py++`_ provides a convenient way to export documentation from C++ source +:doc:`Py++ <../pyplusplus>` provides a convenient way to export documentation from C++ source files as `Python`_ `documentation string`_ --------------- @@ -21,11 +21,11 @@ my_class.member_function( "do_nothing" ).documentation = \ '"This function does nothing."' -In `Py++`_ every class, which describes C++ declarations has ``documentation`` +In :doc:`Py++ <../pyplusplus>` every class, which describes C++ declarations has ``documentation`` property. This property should contain valid C++ string or ``None``. `Boost.Python`_ not always provides functionality, which exports documentation string. -In those cases, `Py++`_ will not generate documentation string. +In those cases, :doc:`Py++ <../pyplusplus>` will not generate documentation string. Also the previous method is pretty clear, it is not practical. There should be a better way, to complete the task. Lets take a look on @@ -48,10 +48,10 @@ * ``decl.location.line`` - line number. So, you can go to the source file and to extract declaration from it. -`Py++`_ will call ``doc_extractor`` on every exported declaration. +:doc:`Py++ <../pyplusplus>` will call ``doc_extractor`` on every exported declaration. -Now, when I think you understand what functionality `Py++`_ provides. -It is a time to say what functionality is missing. `Py++`_ does not +Now, when I think you understand what functionality :doc:`Py++ <../pyplusplus>` provides. +It is a time to say what functionality is missing. :doc:`Py++ <../pyplusplus>` does not provide any documentation extractor. It is not completely true. You can find document extractor for `doxygen`_ format in ``contrib/doc_extractors`` directory. Georgiy Dernovoy has contributed it. @@ -59,7 +59,6 @@ .. _`doxygen` : http://www.stack.nl/~dimitri/doxygen/ .. _`documentation string` : http://docs.python.org/tut/node6.html#SECTION006760000000000000000 -.. _`Py++` : ./../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/call_policies/as_tuple.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/as_tuple.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/call_policies/as_tuple.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -61,7 +61,7 @@ * none - do nothing -The `Py++`_ code is slightly different from the C++ one, but it is definitely shorter: +The :doc:`Py++ <../../../pyplusplus>` code is slightly different from the C++ one, but it is definitely shorter: .. code-block:: python @@ -78,7 +78,6 @@ .. _`ResultConverterGenerator` : http://boost.org/libs/python/doc/v2/ResultConverter.html#ResultConverterGenerator-concept .. _`CallPolicies` : http://www.boost.org/libs/python/doc/v2/CallPolicies.html#CallPolicies-concept -.. _`Py++` : ./../../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -16,26 +16,26 @@ Syntax ------ -The call policies in `Py++`_ are named exactly as in `Boost.Python`_, only the +The call policies in :doc:`Py++ <../../../pyplusplus>` are named exactly as in `Boost.Python`_, only the syntax is slightly different. For instance, this call policy: .. code-block:: c++ return_internal_reference< 1, with_custodian_and_ward<1, 2> >() -becomes in `Py++`_ +becomes in :doc:`Py++ <../../../pyplusplus>` .. code-block:: python return_internal_reference( 1, with_custodian_and_ward(1, 2) ) -`Py++`_ supports all call policies presented in `Boost.Python`_. +:doc:`Py++ <../../../pyplusplus>` supports all call policies presented in `Boost.Python`_. ------------- Usage example ------------- -Every "callable" object in `Py++`_ has ``call_policies`` property. +Every "callable" object in :doc:`Py++ <../../../pyplusplus>` has ``call_policies`` property. C++ code: @@ -70,7 +70,7 @@ Defaults -------- -`Py++`_ is able to "guess" few call policies, base on analysis of return type +:doc:`Py++ <../../../pyplusplus>` is able to "guess" few call policies, base on analysis of return type and\\or callable name: * ``default_call_policies``: @@ -92,7 +92,7 @@ * return type is ``T*`` and ``T`` is a user defined opaque type ``class_t`` and ``class_declaration_t`` classes have ``opaque`` property. - You have to set it to ``True``, if you want `Py++`_ to create this call + You have to set it to ``True``, if you want :doc:`Py++ <../../../pyplusplus>` to create this call policy automatically for all functions, that use ``T*`` as return type. * ``copy_const_reference`` @@ -124,15 +124,15 @@ If you don't specify call policy for a function and it needs one, few things will happen: -* `Py++`_ prints a warning message +* :doc:`Py++ <../../../pyplusplus>` prints a warning message -* `Py++`_ generates code with +* :doc:`Py++ <../../../pyplusplus>` generates code with .. code-block:: c++ /* undefined call policies */ - comment, instead of call policy. If `Py++`_ was wrong and function doesn't + comment, instead of call policy. If :doc:`Py++ <../../../pyplusplus>` was wrong and function doesn't need call policy the generate code will compile fine, otherwise you will get a compilation error. @@ -146,11 +146,11 @@ ``return_value_policy( return_opaque_pointer )`` is a special policy for `Boost.Python`_. In this case, it requires from you to define specialization for the ``boost::python::type_id`` function on the type pointed to by returned pointer. -`Py++`_ will generate the required code. +:doc:`Py++ <../../../pyplusplus>` will generate the required code. Actually you should define ``boost::python::type_id`` specialization also in case -a function takes the opaque type as an argument. `Py++`_ can do it for you, all +a function takes the opaque type as an argument. :doc:`Py++ <../../../pyplusplus>` can do it for you, all you need is to mark a declaration as opaque. Example: @@ -169,7 +169,7 @@ ... }; -`Py++`_ code: +:doc:`Py++ <../../../pyplusplus>` code: .. code-block:: python @@ -183,7 +183,7 @@ Py++ defined call policies -------------------------- -`Py++`_ defines few call policies. I hope you will find them useful. I don't mind +:doc:`Py++ <../../../pyplusplus>` defines few call policies. I hope you will find them useful. I don't mind to contribute them to `Boost.Python`_ library, but I don't have enough free time to "boostify" them. @@ -202,7 +202,6 @@ .. _`ResultConverterGenerator` : http://boost.org/libs/python/doc/v2/ResultConverter.html#ResultConverterGenerator-concept .. _`CallPolicies` : http://www.boost.org/libs/python/doc/v2/CallPolicies.html#CallPolicies-concept -.. _`Py++` : ./../../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/call_policies/custom_call_policies.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/custom_call_policies.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/call_policies/custom_call_policies.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -7,7 +7,7 @@ ---------- ``custom_call_policies`` is a special call policy, which allows you to integrate -the call policies, you defined, with `Py++`_ +the call policies, you defined, with :doc:`Py++ <../../../pyplusplus>` ------- Example @@ -30,7 +30,6 @@ = call_policies.custom_call_policies( <<<your call policies code>>>, "xyz.hpp" ) -.. _`Py++` : ./../../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/call_policies/return_addressof.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/return_addressof.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/call_policies/return_addressof.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -32,7 +32,7 @@ , bpl::return_value_policy< pyplusplus::call_policies::return_addressof<> >() ); } -The `Py++`_ code is not that different from what you already know: +The :doc:`Py++ <../../../pyplusplus>` code is not that different from what you already know: .. code-block:: python @@ -56,7 +56,6 @@ .. _`ResultConverterGenerator` : http://boost.org/libs/python/doc/v2/ResultConverter.html#ResultConverterGenerator-concept -.. _`Py++` : ./../../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/call_policies/return_pointee_value.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/return_pointee_value.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/call_policies/return_pointee_value.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -111,7 +111,7 @@ , bpl::return_value_policy< pyplusplus::call_policies::return_pointee_value<> >() ); } -The `Py++`_ code is not that different from what you already know: +The :doc:`Py++ <../../../pyplusplus>` code is not that different from what you already know: .. code-block:: python @@ -135,7 +135,6 @@ .. _`ResultConverterGenerator` : http://boost.org/libs/python/doc/v2/ResultConverter.html#ResultConverterGenerator-concept .. _`CallPolicies` : http://www.boost.org/libs/python/doc/v2/CallPolicies.html#CallPolicies-concept -.. _`Py++` : ./../../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -164,7 +164,7 @@ Py++ integration ~~~~~~~~~~~~~~~~ -The `Py++`_ code is not that different from what you already know: +The :doc:`Py++ <../../../pyplusplus>` code is not that different from what you already know: .. code-block:: python @@ -192,12 +192,12 @@ call_policies.return_range arguments: -1. A reference to function. `Py++`_ will extract by itself the type of the array +1. A reference to function. :doc:`Py++ <../../../pyplusplus>` will extract by itself the type of the array element. 2. A name of "get size" class. -3. A call policies for "__getitem__" function. `Py++`_ will analyze the array +3. A call policies for "__getitem__" function. :doc:`Py++ <../../../pyplusplus>` will analyze the array element type. If the type is mapped to immutable type, than ``default_call_policies`` is used, otherwise you have to specify call policies. @@ -215,7 +215,7 @@ Dependencies ~~~~~~~~~~~~ -The new call policy depends on `new indexing suite`_ and `Py++`_ :-). But if you +The new call policy depends on `new indexing suite`_ and :doc:`Py++ <../../../pyplusplus>` :-). But if you want you can extract the relevant piece of code from `this file`_. .. _`new indexing suite` : ./../../containers.html @@ -224,7 +224,6 @@ .. _`ResultConverterGenerator` : http://boost.org/libs/python/doc/v2/ResultConverter.html#ResultConverterGenerator-concept .. _`CallPolicies` : http://www.boost.org/libs/python/doc/v2/CallPolicies.html#CallPolicies-concept -.. _`Py++` : ./../../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/default_args.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/default_args.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/default_args.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -23,7 +23,7 @@ Do nothing approach ------------------- -By default `Py++`_ exposes function with its default arguments. +By default :doc:`Py++ <../../pyplusplus>` exposes function with its default arguments. .. code-block:: c++ @@ -96,8 +96,8 @@ The good news is that it is very easy to identify the problem: the module could not be loaded. The main reason is that expression ``arg("s1")=S1()`` requires ``S1`` struct to be registered. `GCC-XML`_ reports default arguments as strings. -`Py++`_ doesn't have enough information to generate code with the right class -registration order. In this case you have to instruct `Py++`_ to use macros: +:doc:`Py++ <../../pyplusplus>` doesn't have enough information to generate code with the right class +registration order. In this case you have to instruct :doc:`Py++ <../../pyplusplus>` to use macros: .. code-block:: python @@ -134,13 +134,12 @@ }; -You cannot use same work around and `Py++`_ ( version 0.8.2 ) could not help you. +You cannot use same work around and :doc:`Py++ <../../pyplusplus>` ( version 0.8.2 ) could not help you. The use case presented here is a little bit esoteric. If you have such use case -and you cannot change the source code, consider contacting `Py++`_ developers. +and you cannot change the source code, consider contacting :doc:`Py++ <../../pyplusplus>` developers. I am sure we will be able to help you. -.. _`Py++` : ./../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/functions.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/functions.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/functions.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -7,7 +7,7 @@ -------- `Boost.Python`_ provides very rich interface to expose functions and operators. -This section of documentation will explain how to configure `Py++`_ in order +This section of documentation will explain how to configure :doc:`Py++ <../../pyplusplus>` in order to export your functions, using desired `Boost.Python`_ functionality. -------- @@ -24,7 +24,6 @@ registration_order.rest -.. _`Py++` : ./../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/make_constructor.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/make_constructor.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/make_constructor.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -37,7 +37,7 @@ The code is pretty simple - it defines two ``create`` functions, which construct new class ``number_t`` instances. -`Py++`_ configuration is pretty simple: +:doc:`Py++ <../../pyplusplus>` configuration is pretty simple: .. code-block:: python @@ -70,7 +70,6 @@ print number.x .. _`make_constructor`: http://www.boost.org/doc/libs/1_35_0/libs/python/doc/v2/make_function.html#make_constructor-spec -.. _`Py++` : ./../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/overloading.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/overloading.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/overloading.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -41,7 +41,7 @@ Do nothing approach ------------------- -I am sure you will like "do nothing" approach. `Py++`_ recognize that you want to +I am sure you will like "do nothing" approach. :doc:`Py++ <../../pyplusplus>` recognize that you want to export an overloaded function and will generate the right code: .. code-block:: c++ @@ -92,9 +92,9 @@ }; If you didn't instantiate( use ) ``do_smth`` member function, than `GCC-XML`_ -will not report it. As a result, `Py++`_ will not be aware of the fact that +will not report it. As a result, :doc:`Py++ <../../pyplusplus>` will not be aware of the fact that ``do_smth`` is an overloaded function. To make the long story short, the generated -code will not compile. You have to instruct `Py++`_ to generate code, which +code will not compile. You have to instruct :doc:`Py++ <../../pyplusplus>` to generate code, which contains function type: .. code-block:: python @@ -106,7 +106,7 @@ y.member_function( 'do_smth' ).create_with_signature = True #------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Every `Py++`_ class, which describes C++ function\\operator has ``create_with_signature`` +Every :doc:`Py++ <../../pyplusplus>` class, which describes C++ function\\operator has ``create_with_signature`` property. You have to set it to ``True``. Default value of the property is computed. If the exported function is overloaded, then its value is ``True`` otherwise it will be ``False``. @@ -145,7 +145,7 @@ .. _`explanation` : http://boost.org/libs/python/doc/tutorial/doc/html/python/functions.html#python.auto_overloading -You can instruct `Py++`_ to generate code, which will use the macros: +You can instruct :doc:`Py++ <../../pyplusplus>` to generate code, which will use the macros: .. code-block:: python @@ -165,7 +165,6 @@ .. _`default arguments` : ./default_args.html -.. _`Py++` : ./../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/registration_order.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/registration_order.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/registration_order.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -38,7 +38,7 @@ { return "do_smth( int )"; } }; -`Py++`_ generates code, that register functions in the order they appear in the +:doc:`Py++ <../../pyplusplus>` generates code, that register functions in the order they appear in the source code: .. code-block:: c++ @@ -103,7 +103,7 @@ 2. You can reorder the declarations within the source file. -3. You can ask `Py++`_ to generate code, which takes into account the order of +3. You can ask :doc:`Py++ <../../pyplusplus>` to generate code, which takes into account the order of declarations: .. code-block:: python @@ -113,7 +113,7 @@ sort_algorithms.USE_CALLDEF_ORGANIZER = True # The functionality is available from version 0.8.3 -4. The last and the perfect solution. `Py++`_ will let you know, when your code +4. The last and the perfect solution. :doc:`Py++ <../../pyplusplus>` will let you know, when your code has such problem. The functionality is available from version 0.8.3. After this you can change the aliases of the functions. The third step is to create small "dispatch" function in Python: @@ -133,7 +133,7 @@ The technique shown here described pretty good in `Boost.Python`_ `Extending Wrapped Objects in Python tutorials`_ . - May be in future, `Py++`_ will generate this code for you. Anyway, if you have + May be in future, :doc:`Py++ <../../pyplusplus>` will generate this code for you. Anyway, if you have a lot of use cases like this consider to generate `Python`_ code and not to write it manually. @@ -142,7 +142,6 @@ -.. _`Py++` : ./../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/transformation/inout.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/inout.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/transformation/inout.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -32,7 +32,7 @@ Lets say that you need to expose ``hello_world`` function. As you know ``std::string`` is mapped to `Python`_ string, which is immutable type, so you -have to create small wrapper for the function. The following `Py++`_ code does it for you: +have to create small wrapper for the function. The following :doc:`Py++ <../../../pyplusplus>` code does it for you: .. code-block:: python @@ -59,7 +59,6 @@ bp::def( "hello_world", &hello_world_a3478182294a057b61508c30b1361318 ); } -.. _`Py++` : ./../../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/transformation/input.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/input.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/transformation/input.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -26,7 +26,7 @@ Lets say that you need to expose ``hello_world`` function. As you know ``std::string`` is mapped to `Python`_ string, which is immutable type, so you -have to create small wrapper for the function. The following `Py++`_ code does it for you: +have to create small wrapper for the function. The following :doc:`Py++ <../../../pyplusplus>` code does it for you: .. code-block:: python @@ -52,7 +52,6 @@ bp::def( "hello_world", &hello_world_a3478182294a057b61508c30b1361318 ); } -.. _`Py++` : ./../../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/transformation/input_c_buffer.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -25,7 +25,7 @@ }; In order to expose ``write`` member function we need to create small wrapper. -The following `Py++`_ code does it for you: +The following :doc:`Py++ <../../../pyplusplus>` code does it for you: .. code-block:: python @@ -66,7 +66,6 @@ , ( bp::arg("inst"), bp::arg("buffer") ) ); } -.. _`Py++` : ./../../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/transformation/input_static_array.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -32,7 +32,7 @@ }; In order to expose ``init`` member function we need to create small wrapper: -The following `Py++`_ code does it for you: +The following :doc:`Py++ <../../../pyplusplus>` code does it for you: .. code-block:: python @@ -69,7 +69,6 @@ .def_readwrite( "z", &ft::vector3::z ); } -.. _`Py++` : ./../../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest 2009-02-02 20:40:36 UTC (rev 1652) +++ pyplusplus_dev/docs/documentation/functions/transformation/modify_type.rest 2009-02-02 21:09:57 UTC (rev 1653) @@ -36,7 +36,7 @@ Lets say that you need to expose ``hello_world`` function. As you know ``std::string`` is mapped to `Python`_ string, which is immutable type, so you -have to create small wrapper for the function. The following `Py++`_ code does it for you: +have to create small wrapper for the function. The following :doc:`Py++ <../../../pyplusplus>` c... [truncated message content] |
From: <rom...@us...> - 2009-02-02 23:22:09
|
Revision: 1654 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1654&view=rev Author: roman_yakovenko Date: 2009-02-02 22:06:53 +0000 (Mon, 02 Feb 2009) Log Message: ----------- sphinx Modified Paths: -------------- pydsc_dev/docs/pydsc.rest pygccxml_dev/docs/pygccxml.rest pygccxml_dev/docs/upgrade_issues.rest pyplusplus_dev/docs/comparisons/compare_to.rest pyplusplus_dev/docs/comparisons/pyste.rest pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest pyplusplus_dev/docs/documentation/functions/overloading.rest pyplusplus_dev/docs/documentation/index.rest pyplusplus_dev/docs/examples/examples.rest pyplusplus_dev/docs/history/history.rest pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/automatic_conversion.rest pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.rest pyplusplus_dev/docs/troubleshooting_guide/shared_ptr/shared_ptr.rest pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptrs.rest Modified: pydsc_dev/docs/pydsc.rest =================================================================== --- pydsc_dev/docs/pydsc.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pydsc_dev/docs/pydsc.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -24,7 +24,7 @@ What it is useful for? ---------------------- -The `pydsc`_ module checks documentation strings and comments for spelling errors. +The :mod:`pydsc <pydsc>` module checks documentation strings and comments for spelling errors. Usage example ------------- @@ -76,5 +76,4 @@ python setup.py install -.. _`pydsc`: ./pydsc.html .. _`PyEnchant`: http://pyenchant.sourceforge.net/ Modified: pygccxml_dev/docs/pygccxml.rest =================================================================== --- pygccxml_dev/docs/pygccxml.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pygccxml_dev/docs/pygccxml.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -56,15 +56,13 @@ ``None`` means "any type". In my opinion, the code is prety clear and readable. -If you want to know more about provided API read `query interface`__ document or -API documentation. +If you want to know more about provided API read :doc:`query interface <query_interface>` +document or :doc:`API documentation <apidocs/api>` -.. __: ./query_interface.html - Type traits ----------- :doc:`pygccxml <pygccxml>` provides a lot of functionality to analyze C++ types and relationship -between them. For more information please refer to `design`__ document or API +between them. For more information please refer to :doc:`design <design>` document or API documentation. Just a few names of algorithms: * ``is_convertible( from, to )`` @@ -76,9 +74,7 @@ returns ``True`` if ``oper`` describes unary operator -.. __: ./design.html - Declaration dependencies ------------------------ You can query a declaration, about it dependencies - declarations it depends on. Modified: pygccxml_dev/docs/upgrade_issues.rest =================================================================== --- pygccxml_dev/docs/upgrade_issues.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pygccxml_dev/docs/upgrade_issues.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -20,12 +20,9 @@ an implicit ones. If you rely heavily on their existence in the generated XML, I suggest you to switch -to `type_traits.has_trivial_constructor`_/`type_traits.has_trivial_copy`_ functions. +to :func:`has_trivial_constructor <pygccxml.declarations.type_traits.has_trivial_constructor>` +and to :func:`has_trivial_copy <pygccxml.declarations.type_traits.has_copy_constructor>` functions. -.. _`type_traits.has_trivial_constructor` : ./apidocs/pygccxml.declarations.type_traits-pysrc.html#has_trivial_constructor -.. _`type_traits.has_trivial_copy` : ./apidocs/pygccxml.declarations.type_traits-pysrc.html#has_trivial_copy - - -------------------------- Pointer to member variable -------------------------- Modified: pyplusplus_dev/docs/comparisons/compare_to.rest =================================================================== --- pyplusplus_dev/docs/comparisons/compare_to.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pyplusplus_dev/docs/comparisons/compare_to.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -8,10 +8,8 @@ `Pyste`_ is the Boost.Python code generator, which is not under active development any more. Nevertheless, users request to compare :doc:`Py++ <../pyplusplus>` and `Pyste`_. You -can read `here`_ the comparison. +can read :doc:`here <pyste>` the comparison. -.. _`here` : ./pyste.html - ---------- SWIG & SIP ---------- Modified: pyplusplus_dev/docs/comparisons/pyste.rest =================================================================== --- pyplusplus_dev/docs/comparisons/pyste.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pyplusplus_dev/docs/comparisons/pyste.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -103,7 +103,7 @@ 1. GUI - small and simple graphic user interface, which does not request from user any knowledge about `Boost.Python`_ or :doc:`Py++ <../pyplusplus>`. You can see - its `screenshot`_. + its :doc:`screenshot <../documentation/tutorials/pyplusplus_gui>`. 2. API - object-oriented framework, that helps you to create code generator, that suites your needs. :doc:`Py++ <../pyplusplus>` framework consists 3 packages: @@ -422,7 +422,6 @@ thought about them, long before I created :doc:`Py++ <../pyplusplus>`. But unfortunately, lack of time and motivation prevents him to work on `Pyste`_. -.. _`screenshot` : ./../documentation/tutorials/pyplusplus_gui.html .. _`Pyste`: http://www.boost.org/libs/python/doc/index.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`SourceForge`: http://sourceforge.net/index.php Modified: pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest =================================================================== --- pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pyplusplus_dev/docs/documentation/ctypes/ctypes_integration.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -67,7 +67,7 @@ * expose variable, which has a union type -* return address of return value as integer - `new call policy was created`_ +* return address of return value as integer - :doc:`new call policy was created <../../documentation/functions/call_policies/return_addressof>` --------------------------- ctypes integration contents @@ -90,7 +90,6 @@ * to add ability to expose "C" functions without using `Boost.Python`_. -.. _`new call policy was created` : ./../../documentation/functions/call_policies/return_addressof.html .. _`ctypes` : http://docs.python.org/lib/module-ctypes.html .. _`from_address` : http://docs.python.org/lib/ctypes-data-types.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html Modified: pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pyplusplus_dev/docs/documentation/functions/call_policies/call_policies.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -196,12 +196,9 @@ return_range.rest custom_call_policies.rest -.. _`new indexing suite` : ./../../containers.html -.. _`this file` : http://pygccxml.svn.sourceforge.net/viewvc/pygccxml/pyplusplus_dev/pyplusplus/code_repository/call_policies.py?view=markup .. _`ResultConverterGenerator` : http://boost.org/libs/python/doc/v2/ResultConverter.html#ResultConverterGenerator-concept .. _`CallPolicies` : http://www.boost.org/libs/python/doc/v2/CallPolicies.html#CallPolicies-concept - .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pyplusplus_dev/docs/documentation/functions/call_policies/return_range.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -215,15 +215,10 @@ Dependencies ~~~~~~~~~~~~ -The new call policy depends on `new indexing suite`_ and :doc:`Py++ <../../../pyplusplus>` :-). But if you -want you can extract the relevant piece of code from `this file`_. +The new call policy depends on :doc:`new indexing suite <../../containers>` and :doc:`Py++ <../../../pyplusplus>` :-). -.. _`new indexing suite` : ./../../containers.html -.. _`this file` : http://pygccxml.svn.sourceforge.net/viewvc/pygccxml/pyplusplus_dev/pyplusplus/code_repository/call_policies.py?view=markup - .. _`ResultConverterGenerator` : http://boost.org/libs/python/doc/v2/ResultConverter.html#ResultConverterGenerator-concept .. _`CallPolicies` : http://www.boost.org/libs/python/doc/v2/CallPolicies.html#CallPolicies-concept - .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/overloading.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/overloading.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pyplusplus_dev/docs/documentation/functions/overloading.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -160,11 +160,8 @@ The default value of the property is ``False``. You don't really have to use the macros, unless you have "registration order" -problem. The problem and work around described in `default arguments`_ document. +problem. The problem and work around described in :doc:`default arguments <default_args>` document. -.. _`default arguments` : ./default_args.html - - .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/index.rest =================================================================== --- pyplusplus_dev/docs/documentation/index.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pyplusplus_dev/docs/documentation/index.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -44,63 +44,6 @@ functions/functions.rest how_to/how_to.rest -* `STL containers`_ - describes various methods to expose STL containers to `Python`_ - -.. _`STL containers` : ./containers.html - -* `architecture`_ - describes the architecture behind :doc:`Py++ <../pyplusplus>` - -.. _`architecture` : ./architecture.html - -* `documentation string`_ - explains how to automatically extract a documentation - from the source files and put it as Python documentation string - -.. _`documentation string` : ./doc_string.html - -* `functions & operators`_ - contains a complete guide to exposing functions and - operators, including "call policies" and description of different caveats - -.. _`functions & operators` : ./functions/functions.html - -* `how to ... ?`_ - contains answers for different FAQs and my suggestions about - better :doc:`Py++ <../pyplusplus>` usage. - -.. _`how to ... ?` : ./how_to/how_to.html - -* `inserting code`_ - a complete guide for insert your code into the generated one - -.. _`inserting code` : ./inserting_code.html - -* `multi-module development`_ - describes how expose hierarchy of classes, which - is spread few different libraries - -.. _`multi-module development`: ./multi_module_development.html - -* `properties`_ - describes how to create class properties using :doc:`Py++ <../pyplusplus>` and - built-in algorithm for automatic properties recognition - -.. _`properties`: ./properties.html - -* `splitting generated code to files`_ - :doc:`Py++ <../pyplusplus>` provides 4 different strategies - for splitting the generated code into files. Take a look on this document, - it will save you the time. - -.. _`splitting generated code to files` : ./split_module.html - -* `tutorials`_ - don't know where to start? Start here. Small and simple example - will help you to start with :doc:`Py++ <../pyplusplus>`. If you want to evaluate :doc:`Py++ <../pyplusplus>` you will - find here small and handy GUI program. - -.. _`tutorials` : ./tutorials/tutorials.html - -* `warnings`_ - :doc:`Py++ <../pyplusplus>` could be used as some kind of validator. It checks the - exposed declarations and reports the potential errors. Thus you are able to - create high quality Python bindings from the beginning. This document also - describes how to suppress the errors\\warnings. - -.. _`warnings` : ./warnings.html - - .. _`epydoc` : http://epydoc.sourceforge.net/ .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org Modified: pyplusplus_dev/docs/examples/examples.rest =================================================================== --- pyplusplus_dev/docs/examples/examples.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pyplusplus_dev/docs/examples/examples.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -5,23 +5,17 @@ Graphical interface ------------------- +:doc:`Py++ <../pyplusplus>` has nice, small and simple :doc:`graphical interface <../documentation/tutorials/pyplusplus_gui>`. +Consider to read :doc:`tutorials <../documentation/tutorials/tutorials>` for more information. -:doc:`Py++ <../pyplusplus>` has nice, small and simple `graphical interface`_. Please, read -`tutorials`_ for more information. - -.. _`graphical interface` : ./../documentation/tutorials/pyplusplus_gui.html -.. _`tutorials` : ./../documentation/tutorials/tutorials.html - --------- pyeasybmp --------- -`EasyBMP`_ is a small cross-platform library that provide you functionality +:doc:`EasyBMP <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`__. +to create Python bindings for the library. Read more :doc:`here <easybmp/easybmp>`. -.. __ : ./easybmp/easybmp.html - --------------- boost libraries --------------- @@ -51,8 +45,5 @@ .. _`boost.crc` : http://boost.org/libs/crc/index.html .. _`boost.rational` : http://boost.org/libs/rational/index.html .. _`boost.random` : http://boost.org/libs/random/index.html - -.. _`GUI`: ./../tutorials/pyplusplus_demo.png .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html -.. _`EasyBMP`: http://easybmp.sourceforge.net/ Modified: pyplusplus_dev/docs/history/history.rest =================================================================== --- pyplusplus_dev/docs/history/history.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pyplusplus_dev/docs/history/history.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -234,29 +234,21 @@ 3. Added new call policies: - * `as_tuple`_ + * :doc:`as_tuple <../documentation/functions/call_policies/as_tuple>` - * `custom_call_policies`_ + * :doc:`custom_call_policies <../documentation/functions/call_policies/return_range>` - * `return_range`_ + * :doc:`return_range <../documentation/functions/call_policies/return_range>` -.. _`as_tuple` : ../documentation/functions/call_policies/as_tuple.html -.. _`return_range`: ../documentation/functions/call_policies/return_range.html -.. _`custom_call_policies` : ../documentation/functions/call_policies/custom_call_policies.html - 4. Added an initial support for multi-module development. Now you can mark your declarations as ``already_exposed`` and :doc:`Py++ <../pyplusplus>` will do the rest. For more - information read `multi-module development guide`_. + information read :doc:`multi-module development guide <../documentation/multi_module_development>`. -.. _`multi-module development guide` : ../documentation/multi_module_development.html - .. line-separator -5. `input_c_buffer`_ - new functions transformation, which allows to pass a Python - sequence to function, instead of pair of arguments: pointer to buffer and size. +5. :doc:`input_c_buffer <../documentation/functions/transformation/input_c_buffer>` - new functions + transformation, which allows to pass a Python sequence to function, instead of pair of arguments: pointer to buffer and size. -.. _`input_c_buffer` : ../documentation/functions/transformation/input_c_buffer.html - 6. Added ability to control generated "include" directives. Now you can ask :doc:`Py++ <../pyplusplus>` to include a header file, when it generates code for some declaration. For more information refers to `inserting code guide`_. @@ -267,22 +259,16 @@ will be included from the generated files only in case the generated code depends on them. -.. line-separator - 8. Performance improvements: Py++ runs 1.5 - 2 times faster, than the previous one. -.. line-separator - 9. Added ability to add code before overridden and default function calls. For more information refer to `member function API documentation`_. .. _`member function API documentation` : ../documentation/apidocs/pyplusplus.decl_wrappers.calldef_wrapper.member_function_t-class.html 10. :doc:`Py++ <../pyplusplus>` will generate documentation for automatically constructed properties. - For more information refer to `properties guide`_ + For more information refer to :doc:`properties guide <../documentation/properties>`. -.. _`properties guide`: ../documentation/properties.html#documentation - 11. Added iteration functionality to Boost.Python Indexing Suite V2 ``std::map`` and ``std::multimap`` containers. @@ -290,24 +276,17 @@ Version 0.8.5 ------------- -1. Added `Function Transformation`_ feature. +1. Added :doc:`Function Transformation <../documentation/functions/transformation/transformation>` feature. -.. _`Function transformation` : ../documentation/functions/transformation/transformation.html - 2. "Py++" introduces new functionality, which allows you to control messages and - warnings: `how to disable warnings?`_ . + warnings: :doc:`how to disable warnings? <../documentation/warnings>`. -.. _`how to disable warnings?` : ../documentation/warnings.html - 3. Added new algorithm, which controls the registration order of the functions. - See `registration order document`_ + See :doc:`registration order document <../documentation/functions/registration_order>` -.. _`registration order document` : ../documentation/functions/registration_order.html +4. New "Py++" defined :doc:`return_pointee_value <../documentation/functions/call_policies/return_pointee_value>` + call policy was introduced. -4. New "Py++" defined `return_pointee_value`_ call policy was introduced. - -.. _`return_pointee_value` : ../documentation/functions/call_policies/return_pointee_value.html - 5. Support for opaque types was added. Read more about this feature `here`__. .. __ : ../documentation/functions/call_policies/call_policies.html#special-case @@ -337,7 +316,7 @@ 2. Performance improvements. In some cases you can get x10 performance boost. Many thanks to Allen Bierbaum! Saving and reusing results of different - :doc:`pygccxml <../pygccxml>` algorithms and type traits functions achieved this. + :doc:`pygccxml <../../pygccxml/pygccxml>` algorithms and type traits functions achieved this. 3. Convenience API for registering exception translator was introduced. Modified: pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/automatic_conversion.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/automatic_conversion.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pyplusplus_dev/docs/troubleshooting_guide/automatic_conversion/automatic_conversion.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -38,6 +38,4 @@ Download -------- -`automatic_conversion.zip`_ - -.. _`automatic_conversion.zip` : ./automatic_conversion.zip +:download:`automatic_conversion.zip` Modified: pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pyplusplus_dev/docs/troubleshooting_guide/exceptions/exceptions.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -57,7 +57,5 @@ Download -------- -`exceptions.zip`_ +:download:`exceptions.zip` -.. _`exceptions.zip` : ./exceptions.zip - Modified: pyplusplus_dev/docs/troubleshooting_guide/shared_ptr/shared_ptr.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/shared_ptr/shared_ptr.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pyplusplus_dev/docs/troubleshooting_guide/shared_ptr/shared_ptr.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -73,7 +73,5 @@ Download -------- -`shared_ptr.zip`_ +:download:`shared_ptr.zip` -.. _`shared_ptr.zip` : ./shared_ptr.zip - Modified: pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptrs.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptrs.rest 2009-02-02 21:09:57 UTC (rev 1653) +++ pyplusplus_dev/docs/troubleshooting_guide/smart_ptrs/smart_ptrs.rest 2009-02-02 22:06:53 UTC (rev 1654) @@ -25,10 +25,7 @@ Download -------- -`smart_ptrs.zip`_ +:download:`smart_ptrs.zip` -.. _`smart_ptrs.zip` : ./smart_ptrs.zip - - .. _`SourceForge`: http://sourceforge.net/index.php This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-02-03 19:30:39
|
Revision: 1655 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1655&view=rev Author: roman_yakovenko Date: 2009-02-03 19:30:36 +0000 (Tue, 03 Feb 2009) Log Message: ----------- sphinx Modified Paths: -------------- pygccxml_dev/docs/example/example.rest pygccxml_dev/pygccxml/declarations/algorithm.py pygccxml_dev/pygccxml/declarations/templates.py pyplusplus_dev/docs/comparisons/pyste.rest pyplusplus_dev/docs/documentation/functions/transformation/inout.rest pyplusplus_dev/docs/documentation/functions/transformation/terminology.rest pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest pyplusplus_dev/docs/documentation/how_to/best_practices.rest pyplusplus_dev/docs/documentation/how_to/exception_translation.rest pyplusplus_dev/docs/documentation/how_to/fatal_error_c1204.rest pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest pyplusplus_dev/docs/documentation/tutorials/tutorials.rest pyplusplus_dev/docs/examples/examples.rest pyplusplus_dev/docs/history/history.rest Modified: pygccxml_dev/docs/example/example.rest =================================================================== --- pygccxml_dev/docs/example/example.rest 2009-02-02 22:06:53 UTC (rev 1654) +++ pygccxml_dev/docs/example/example.rest 2009-02-03 19:30:36 UTC (rev 1655) @@ -2,7 +2,7 @@ Example ======= -This example prints all declarations found in `example.hpp <./example.hpp.html>`_ +This example prints all declarations found in :doc:`example.hpp <example.hpp>` file. For every class, it prints it's base and derived classes. @@ -12,7 +12,7 @@ .. toctree:: :maxdepth: 1 - C++ source code, this file was passed to GCC-XML <example.hpp.rest> - GCC-XML generated file <example.hpp.xml.rest> - :mod:`pygccxml` package API usage example <example.py.rest> - `example.py` output <output.txt.rest> + example.hpp.rest + example.hpp.xml.rest + example.py.rest + output.txt.rest Modified: pygccxml_dev/pygccxml/declarations/algorithm.py =================================================================== --- pygccxml_dev/pygccxml/declarations/algorithm.py 2009-02-02 22:06:53 UTC (rev 1654) +++ pygccxml_dev/pygccxml/declarations/algorithm.py 2009-02-03 19:30:36 UTC (rev 1655) @@ -308,7 +308,7 @@ class visit_function_has_not_been_found_t( RuntimeError ): """ - exception that is raised, from :function:`apply_visitor`, when a visitor could not be + exception that is raised, from :func:`apply_visitor`, when a visitor could not be applied. """ Modified: pygccxml_dev/pygccxml/declarations/templates.py =================================================================== --- pygccxml_dev/pygccxml/declarations/templates.py 2009-02-02 22:06:53 UTC (rev 1654) +++ pygccxml_dev/pygccxml/declarations/templates.py 2009-02-03 19:30:36 UTC (rev 1655) @@ -12,7 +12,7 @@ - name ( std::vector ) - list of arguments ( int ) -This module also defines few convenience function like :function:split and :function:join. +This module also defines few convenience function like :func:split and :func:join. """ import pattern_parser Modified: pyplusplus_dev/docs/comparisons/pyste.rest =================================================================== --- pyplusplus_dev/docs/comparisons/pyste.rest 2009-02-02 22:06:53 UTC (rev 1654) +++ pyplusplus_dev/docs/comparisons/pyste.rest 2009-02-03 19:30:36 UTC (rev 1655) @@ -216,10 +216,8 @@ modify\\create `Pyste`_ interface files. They are solved by :doc:`pygccxml <../../pygccxml/pygccxml>` package. Please take a look on :doc:`pygccxml <../../pygccxml/pygccxml>` - `query interface`__ documentation. + :doc:`query interface <../../pygccxml/query_interface>` documentation. -.. __ : ./../../pygccxml/query_interface.html - Now about mistakes. There is a gold rule: one class, one responsibility. `Pyste`_ breaks this rule. One more time *Exporter* class responsibilities: Modified: pyplusplus_dev/docs/documentation/functions/transformation/inout.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/inout.rest 2009-02-02 22:06:53 UTC (rev 1654) +++ pyplusplus_dev/docs/documentation/functions/transformation/inout.rest 2009-02-03 19:30:36 UTC (rev 1655) @@ -6,7 +6,7 @@ Definition ---------- -``inout`` transformer is a combination of `input`_ and `output`_ transformers. +``inout`` transformer is a combination of :doc:`input <inout>` and :doc:`output <output>` transformers. It removes a "reference" type from the function argument and then adds the "returned", by the original function, value to the return statement of the function-wrapper. @@ -15,9 +15,6 @@ argument. The argument should have "reference" type. Support for "pointer" type will be added pretty soon. -.. _`input` : input.html -.. _`output` : output.html - ------- Example ------- Modified: pyplusplus_dev/docs/documentation/functions/transformation/terminology.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/terminology.rest 2009-02-02 22:06:53 UTC (rev 1654) +++ pyplusplus_dev/docs/documentation/functions/transformation/terminology.rest 2009-02-03 19:30:36 UTC (rev 1655) @@ -29,7 +29,6 @@ Name under which `Python`_ users see the exposed function -.. _`Py++` : ./../../../pyplusplus.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest =================================================================== --- pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest 2009-02-02 22:06:53 UTC (rev 1654) +++ pyplusplus_dev/docs/documentation/functions/transformation/transformation.rest 2009-02-03 19:30:36 UTC (rev 1655) @@ -101,11 +101,9 @@ version of :doc:`Py++ <../../../pyplusplus>`. If you created your own transformer consider to contribute it to the project. -I suggest you to start reading `output`_ transformer. It is pretty simple and +I suggest you to start reading :doc:`output <output>` transformer. It is pretty simple and well explained. -.. _`output` : ./output.html - All built-in transformers could be applied on any function, except constructors and pure virtual functions. The support for them be added in future releases. Modified: pyplusplus_dev/docs/documentation/how_to/best_practices.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/best_practices.rest 2009-02-02 22:06:53 UTC (rev 1654) +++ pyplusplus_dev/docs/documentation/how_to/best_practices.rest 2009-02-03 19:30:36 UTC (rev 1655) @@ -19,10 +19,8 @@ First of all, let me to define "big project". "Big project" is a project with few hundred of header files. :doc:`Py++ <../../pyplusplus>` was born to create `Python`_ bindings -for such projects. If you take a look `here`__ you will find few such projects. +for such projects. If you take a look :doc:`here <../../quotes>` you will find few such projects. -.. __ : ./../../quotes.html - Tips ---- @@ -35,7 +33,8 @@ `GCC-XML`_ processing time from multiple hours with gigabytes of caches to a couple minutes with a reasonable cache size. - You can read more about different caches supported by :doc:`pygccxml <../../../pygccxml/pygccxml>` `here`__. + You can read more about different caches supported by :doc:`pygccxml <../../../pygccxml/pygccxml>` + :doc:`here <../../../pygccxml/design>`. ``module_builder_t.__init__`` method takes reference to an instance of cache class or ``None``: @@ -107,7 +106,6 @@ mb = module_builder( [ os.path.abspath('date_time/date_time.hpp') ], ... ) .. _`this error` : http://boost.org/libs/python/doc/v2/faq.html#c1204 -.. __ : ./../../../pygccxml/design.html * Keep the declaration tree small. Modified: pyplusplus_dev/docs/documentation/how_to/exception_translation.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/exception_translation.rest 2009-02-02 22:06:53 UTC (rev 1654) +++ pyplusplus_dev/docs/documentation/how_to/exception_translation.rest 2009-02-03 19:30:36 UTC (rev 1655) @@ -9,12 +9,10 @@ Boost.Python provides functionality to translate any C++ exception to a Python one. :doc:`Py++ <../../pyplusplus>` provides a convenient API to do this. -By the way, be sure to take a look on "`troubleshooting guide - exceptions`_". +By the way, be sure to take a look on ":doc:`troubleshooting guide - exceptions <../../troubleshooting_guide/exceptions/exceptions>`". The guide will introduces a complete solution for handling exceptions within Python scripts. -.. _`troubleshooting guide - exceptions` : ./../../troubleshooting_guide/exceptions/exceptions.html - -------- Solution -------- Modified: pyplusplus_dev/docs/documentation/how_to/fatal_error_c1204.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/fatal_error_c1204.rest 2009-02-02 22:06:53 UTC (rev 1654) +++ pyplusplus_dev/docs/documentation/how_to/fatal_error_c1204.rest 2009-02-03 19:30:36 UTC (rev 1655) @@ -15,11 +15,9 @@ could not be compiled, because of the error, you can ask :doc:`Py++ <../../pyplusplus>` to split the code generated for class to be split to few source files. -For more information, considre to read the `splitting generated code to files`_ +For more information, considre to read the :doc:`splitting generated code to files <../split_module>` document. -.. _`splitting generated code to files` : ./../split_module.html - .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest =================================================================== --- pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest 2009-02-02 22:06:53 UTC (rev 1654) +++ pyplusplus_dev/docs/documentation/how_to/file_name_too_long.rest 2009-02-03 19:30:36 UTC (rev 1655) @@ -38,9 +38,8 @@ holder.rename( 'IntHolder' ) Another solution to the problem, is to use different strategy to split the generated -code to files. You can read more about splitting files `here`_. +code to files. You can read more about splitting files :doc:`here <../split_module>`. -.. _`here` : ./../split_module.html .. _`Boost.Python`: http://www.boost.org/libs/python/doc/index.html .. _`Python`: http://www.python.org .. _`GCC-XML`: http://www.gccxml.org Modified: pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest =================================================================== --- pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest 2009-02-02 22:06:53 UTC (rev 1654) +++ pyplusplus_dev/docs/documentation/tutorials/module_builder/module_builder.rest 2009-02-03 19:30:36 UTC (rev 1655) @@ -16,15 +16,12 @@ please take a look on two files: -* `hello_world.hpp`_ - C++ source code, that we want to export to Python +* :doc:`hello_world.hpp <hello_world.hpp>` - C++ source code, that we want to export to Python -* `generate_code.py`_ - Python code, that uses :doc:`Py++ <../../../pyplusplus>` to export +* :doc:`generate_code.py <generate_code.py>` - Python code, that uses :doc:`Py++ <../../../pyplusplus>` to export declarations from the source file -.. _`hello_world.hpp` : ./hello_world.hpp.html -.. _`generate_code.py` : ./generate_code.py.html - ---------------- module_builder_t ---------------- Modified: pyplusplus_dev/docs/documentation/tutorials/tutorials.rest =================================================================== --- pyplusplus_dev/docs/documentation/tutorials/tutorials.rest 2009-02-02 22:06:53 UTC (rev 1654) +++ pyplusplus_dev/docs/documentation/tutorials/tutorials.rest 2009-02-03 19:30:36 UTC (rev 1655) @@ -16,11 +16,11 @@ ------------------- Graphical interface ------------------- -:doc:`Py++ <../../pyplusplus>` includes a `graphical interface`_. `Graphical interface`_ is invoked +:doc:`Py++ <../../pyplusplus>` includes a :doc:`graphical interface <pyplusplus_gui>`. :doc:`Graphical interface <pyplusplus_gui>` is invoked with the ``pyplusplus_gui`` command, or with ``pyplusplus_gui.pyw`` from the ``scripts`` subdirectory, of the `Python`_ installation directory. -My advise to you - start with `graphical interface`_, because: +My advise to you - start with :doc:`graphical interface <pyplusplus_gui>`, because: * you don't have to learn new API @@ -34,18 +34,13 @@ * it is able to generate :doc:`Py++ <../../pyplusplus>` code for you -.. _`graphical interface` : ./pyplusplus_gui.html -.. _`Graphical interface` : ./pyplusplus_gui.html - --------------- Getting started --------------- -I suppose you decided to do some coding with :doc:`Py++ <../../pyplusplus>`. `Module builder`_ -tutorials will help you. +I suppose you decided to do some coding with :doc:`Py++ <../../pyplusplus>`. +:doc:`Module builder <module_builder/module_builder>` tutorials will help you. -.. _`Module builder` : ./module_builder/module_builder.html - -------- Advanced -------- Modified: pyplusplus_dev/docs/examples/examples.rest =================================================================== --- pyplusplus_dev/docs/examples/examples.rest 2009-02-02 22:06:53 UTC (rev 1654) +++ pyplusplus_dev/docs/examples/examples.rest 2009-02-03 19:30:36 UTC (rev 1655) @@ -30,12 +30,10 @@ This is not "just another example". I went father and created new package: `pyboost`_. This is fully working Python package, with almost all unit test from -the libraries ported to Python. For more information please read `pyboost`_ +the libraries ported to Python. For more information please read :doc:`pyboost <boost/boost>` package documentation. -.. _`pyboost` : ./boost/boost.html - .. toctree:: boost/boost.rest Modified: pyplusplus_dev/docs/history/history.rest =================================================================== --- pyplusplus_dev/docs/history/history.rest 2009-02-02 22:06:53 UTC (rev 1654) +++ pyplusplus_dev/docs/history/history.rest 2009-02-03 19:30:36 UTC (rev 1655) @@ -150,14 +150,10 @@ for reporting them. 3. New and highly experimental feature was introduced - - `Boost.Python and ctypes integration`_. + :doc:`Boost.Python and ctypes integration <../documentation/ctypes/ctypes_integration>`. -.. _`Boost.Python and ctypes integration` : ../documentation/ctypes/ctypes_integration.html +4. Support for :doc:`boost::python::make_constructor <../documentation/functions/make_constructor>` functionality was added. -4. Support for `boost::python::make_constructor`_ functionality was added. - -.. _`boost::python::make_constructor` : ../documentation/functions/make_constructor.html - 5. Support for unions and unnamed classes was added. 6. Doxygen documentation extractor was improved. Many thanks to Hernán Ordiales. @@ -189,29 +185,23 @@ of ``std::vector< int, std::allocator< int > >``, in many cases :doc:`Py++ <../pyplusplus>` will generate ``std::vector< int >``. -5. `create_with_signature`_ algorithm was improved. :doc:`Py++ <../pyplusplus>` will generate correct - code in one more use case. +5. :doc:`create_with_signature <../documentation/functions/overloading>` algorithm was improved. + :doc:`Py++ <../pyplusplus>` will generate correct code in one more use case. -.. _`create_with_signature` : ../documentation/functions/overloading.html - 6. Added ability to exclude declarations from being exposed, if they will cause compilation to fail. 7. Starting from this version, :doc:`Py++ <../pyplusplus>` provides a complete solution for - `multi-module development`_. + :doc:`multi-module development <../documentation/multi_module_development>`. -.. _`multi-module development` : ../documentation/multi_module_development.html - 8. Classes, which expose C arrays will be registered only once. 9. Starting from this version, :doc:`Py++ <../pyplusplus>` supports a code generation with different encodings. 10. There is a new strategy to split code into files. It is IDE friendly. Be sure - to read `the updated documentation`_. + to read :doc:`the updated documentation <../documentation/split_module>`. -.. _`the updated documentation` : ../documentation/split_module.html - ------------- Version 0.9.0 ------------- @@ -222,16 +212,12 @@ an empty throw was fixed. Now the exception specification is generated properly. Many thanks to Martin Preisler for reporting the bug. -.. line-separator - 2. Added exposing of copy constructor, ``operator=`` and ``operator<<``. * ``operator=`` is exposed under "assign" name * ``operator<<`` is exposed under "__str__" name -.. line-separator - 3. Added new call policies: * :doc:`as_tuple <../documentation/functions/call_policies/as_tuple>` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-02-03 20:06:59
|
Revision: 1656 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1656&view=rev Author: roman_yakovenko Date: 2009-02-03 20:06:54 +0000 (Tue, 03 Feb 2009) Log Message: ----------- sphinx Modified Paths: -------------- pyplusplus_dev/docs/examples/examples.rest pyplusplus_dev/docs/peps/peps_index.rest Modified: pyplusplus_dev/docs/examples/examples.rest =================================================================== --- pyplusplus_dev/docs/examples/examples.rest 2009-02-03 19:30:36 UTC (rev 1655) +++ pyplusplus_dev/docs/examples/examples.rest 2009-02-03 20:06:54 UTC (rev 1656) @@ -29,7 +29,7 @@ * `Boost.Random`_ This is not "just another example". I went father and created new package: -`pyboost`_. This is fully working Python package, with almost all unit test from +:doc:`pyboost <boost/boost>`. This is fully working Python package, with almost all unit test from the libraries ported to Python. For more information please read :doc:`pyboost <boost/boost>` package documentation. Modified: pyplusplus_dev/docs/peps/peps_index.rest =================================================================== --- pyplusplus_dev/docs/peps/peps_index.rest 2009-02-03 19:30:36 UTC (rev 1655) +++ pyplusplus_dev/docs/peps/peps_index.rest 2009-02-03 20:06:54 UTC (rev 1656) @@ -6,7 +6,7 @@ Description ----------- -This page is an official `Py++`_ "TODO" page. +This page is an official `Py++` "TODO" page. For small features, the description of the feature and it's implementation will be written here. Big features will get their own page. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-05-11 11:14:15
|
Revision: 1715 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1715&view=rev Author: roman_yakovenko Date: 2009-05-11 11:14:03 +0000 (Mon, 11 May 2009) Log Message: ----------- documentation update Modified Paths: -------------- pyplusplus_dev/docs/download.rest pyplusplus_dev/docs/history/history.rest pyplusplus_dev/docs/pyplusplus.rest pyplusplus_dev/docs/troubleshooting_guide/lessons_learned.rest Modified: pyplusplus_dev/docs/download.rest =================================================================== --- pyplusplus_dev/docs/download.rest 2009-05-11 09:01:32 UTC (rev 1714) +++ pyplusplus_dev/docs/download.rest 2009-05-11 11:14:03 UTC (rev 1715) @@ -1,58 +1,58 @@ -================== -Download & install -================== - -------------------- -Py++ on SourceForge -------------------- - -:doc:`Py++ <pyplusplus>` project is hosted on SourceForge. Using SourceForge services you -can: - -1) get access to source code -2) get access to latest release version of :doc:`Py++ <pyplusplus>` - - ------------------ -Subversion access ------------------ - -http://sourceforge.net/svn/?group_id=118209 - --------- -Download --------- - -https://sourceforge.net/project/showfiles.php?group_id=118209 - ------------- -Installation ------------- - -In command prompt or shell change current directory to be "pyplusplus-X.Y.Z". -"X.Y.Z" is version of :doc:`Py++ <pyplusplus>`. Type the following command: - -| ``python setup.py install`` - -After this command complete, you should have installed :doc:`Py++ <pyplusplus>` package. - -Boost.Python installation -------------------------- - -Users of Microsoft Windows can enjoy from simple `installer for Boost Libraries`_. -You can find it `here`_. Take a look on new `getting started guide`_ for Boost -libraries. - -Another very valuable link related to Boost is http://engineering.meta-comm.com/boost.aspx . -You will find hourly snapshots of the source code and the documentation for all -Boost libraries. - -.. _`getting started guide` : http://boost.cvs.sourceforge.net/*checkout*/boost/boost/more/getting_started.html -.. _`here` : http://www.boost-consulting.com/products/free -.. _`installer for Boost Libraries` : http://www.boost-consulting.com/products/free - ------------- -Dependencies ------------- - -* :doc:`pygccxml <../pygccxml/pygccxml>` +================== +Download & Install +================== + +------------------- +Py++ on SourceForge +------------------- + +:doc:`Py++ <pyplusplus>` project is hosted on SourceForge. Using SourceForge services you +can: + +1) get access to source code +2) get access to latest release version of :doc:`Py++ <pyplusplus>` + + +----------------- +Subversion access +----------------- + +http://sourceforge.net/svn/?group_id=118209 + +-------- +Download +-------- + +https://sourceforge.net/project/showfiles.php?group_id=118209 + +------------ +Installation +------------ + +In command prompt or shell change current directory to be "pyplusplus-X.Y.Z". +"X.Y.Z" is version of :doc:`Py++ <pyplusplus>`. Type the following command: + +| ``python setup.py install`` + +After this command complete, you should have installed :doc:`Py++ <pyplusplus>` package. + +Boost.Python installation +------------------------- + +Users of Microsoft Windows can enjoy from simple `installer for Boost Libraries`_. +You can find it `here`_. Take a look on new `getting started guide`_ for Boost +libraries. + +Another very valuable link related to Boost is http://engineering.meta-comm.com/boost.aspx . +You will find hourly snapshots of the source code and the documentation for all +Boost libraries. + +.. _`getting started guide` : http://boost.cvs.sourceforge.net/*checkout*/boost/boost/more/getting_started.html +.. _`here` : http://www.boost-consulting.com/products/free +.. _`installer for Boost Libraries` : http://www.boost-consulting.com/products/free + +------------ +Dependencies +------------ + +* :doc:`pygccxml <../pygccxml/pygccxml>` Modified: pyplusplus_dev/docs/history/history.rest =================================================================== --- pyplusplus_dev/docs/history/history.rest 2009-05-11 09:01:32 UTC (rev 1714) +++ pyplusplus_dev/docs/history/history.rest 2009-05-11 11:14:03 UTC (rev 1715) @@ -1,559 +1,560 @@ -=================== -Development history -=================== - ------------- -Contributors ------------- - -Thanks to all the people that have contributed patches, bug reports and suggestions: - -* My wife - Yulia -* John Pallister -* Matthias Baas -* Allen Bierbaum -* Lakin Wecker -* Georgiy Dernovoy -* Gottfried Ganssauge -* Andy Miller -* Martin Preisler -* Meghana Haridev -* Julian Scheid -* Oliver Schweitzer -* Hernán Ordiales -* Bernd Fritzke -* Andrei Vermel -* Carsten( spom.spom ) - ------------ -Version 1.1 ------------ - -1. The bug related to exposing free operators was fixed. Many thanks to Andrei Vermel. - -2. Few bugs were fixed for 64Bit platform. Many thanks to Carsten. - -3. :mod:`ctypes` backend was introduced - :doc:`Py++ <../pyplusplus>` is able to - generate Python code, which uses :mod:`ctypes` package to call functions in - DLLs or shared libraries. - - Massive refactoring, which preserve backward compatibility to previous releases, - was done. - -4. From now on, :doc:`Py++ <../pyplusplus>` will use `Sphinx <http://sphinx.pocoo.org/>`_ - for all documentation. - -5. :doc:`Indexing Suite V2 <../documentation/indexing_suite_v2.html>` introduces - few backward compatibility changes. The indexing suite became "headers only" - library and doesn't requier Boost.Python library patching. - See ":doc:`../documentation/containers`" document for more information. - - ------------ -Version 1.0 ------------ - -1. The algorithm, which calculates what member functions should be redefined in - derived class wrappers, was improved. Many thanks to Julian Scheid for the bug - fix. - - The change explanation. - - .. code-block:: c++ - - struct A{ - virtual void foo() {} - }; - - class B: public A{ - }; - - Previous version of :doc:`Py++ <../pyplusplus>` didn't generate wrapper for class ``B``, even - though ``B`` inherits ``A``'s virtual function. Now if you have the following - Python code: - - .. code-block:: python - - class C(B): - def __init__( self ): - B.__init__(self) - def foo(self): - print "C.foo" - - then when ``foo`` is invoked on this instance on the C++ side of things, the - Python code won't be executed as the wrapper was missing. - - **Warning!** **There is a possibility that your generated code will not work!** - **Keep reading.** - - If you use "function transformation" functionality, than it is possible the - generated code will **NOT** work. Consider the following example: - - .. code-block:: c++ - - struct A{ - virtual void foo(int& i) {/*do smth*/} - }; - - class B: public A{ - virtual void foo(int& i) {/*do smth else*/} - }; - - The :doc:`Py++ <../pyplusplus>` code: - - .. code-block:: python - - from pyplusplus import module_builder - from pyplusplus import function_transformers as FT - - mb = module_builder_t( ... ) - foo = mb.mem_funs( 'foo' ) - foo.add_transformation( FT.output(0) ) - - The generated code, for class ``B``, is: - - .. code-block:: c++ - - namespace bp = boost::python; - - struct B_wrapper : B, bp::wrapper< B > { - virtual void foo( int & i ) const { ... } - - static boost::python::tuple default_foo( ::B const & inst ) - { ... } - - virtual void foo( int & i ) const - { ... } - - static boost::python::object default_foo( ::A const & inst ) - { ... } - }; - ... - bp::class_< B_wrapper, bp::bases< A > >( "B" ) - .def( "foo", (boost::python::tuple (*)( ::B const & ))( &B_wrapper::default_foo ) ) - .def( "foo", (boost::python::object (*)( ::A const & ))( &B_wrapper::default_foo ) ); - - As you can see, after applying the transformation both functions have same - signature. Do you know what function will be called in some situation? I do - - the wrong one :-(. - - Unfortunately, there is no easy work around or some trick that you can use, - which will not break the existing code. I see few solutions to the problem: - - * change the alias of the functions - - .. code-block:: python - - from pyplusplus import module_builder - from pyplusplus import function_transformers as FT - - mb = module_builder_t( ... ) - foo = mb.mem_funs( '::A::foo' ).add_transformation( FT.output(0), alias="foo_a" ) - foo = mb.mem_funs( '::B::foo' ).add_transformation( FT.output(0), alias="foo_b" ) - - * use ``inout`` transformation - it preserves a function signature - - * :doc:`Py++ <../pyplusplus>` can introduce a configuration, that will preserve the previous behaviour. - I think this is a wrong way to go and doing the API changes is the 'right' - longer term solution. - - If you **absolutely need** to preserve API backward compatible, contact me - and I will introduce such configuration option. - - Sorry for inconvenience. - -2. Few bugs, related to Indexing Suite 2, were fixed. Many thanks to Oliver Schweitzer - for reporting them. - -3. New and highly experimental feature was introduced - - :doc:`Boost.Python and ctypes integration <../documentation/ctypes/ctypes_integration>`. - -4. Support for :doc:`boost::python::make_constructor <../documentation/functions/make_constructor>` functionality was added. - -5. Support for unions and unnamed classes was added. - -6. Doxygen documentation extractor was improved. Many thanks to Hernán Ordiales. - -7. Py++ documentation was improved. Many thanks to Bernd Fritzke. - -------------- -Version 0.9.5 -------------- - -1. Bug fixes: - - * Py++ will not expose free operators, if at least one of the classes, it works - on, is not exposed. - Many thanks to Meghana Haridev for reporting the bug. - -2. Added ability to completely disable warnings reporting. - -3. All logging is now done to ``stderr`` instead of ``stdout``. - -4. Generated code improvements: - - * ``default_call_policies`` is not generated - - * ``return_internal_reference`` call policies - default arguments are not - generated - - * STD containers are generated without default arguments. For example instead - of ``std::vector< int, std::allocator< int > >``, in many cases :doc:`Py++ <../pyplusplus>` will - generate ``std::vector< int >``. - -5. :doc:`create_with_signature <../documentation/functions/overloading>` algorithm was improved. - :doc:`Py++ <../pyplusplus>` will generate correct code in one more use case. - -6. Added ability to exclude declarations from being exposed, if they will cause - compilation to fail. - -7. Starting from this version, :doc:`Py++ <../pyplusplus>` provides a complete solution for - :doc:`multi-module development <../documentation/multi_module_development>`. - -8. Classes, which expose C arrays will be registered only once. - -9. Starting from this version, :doc:`Py++ <../pyplusplus>` supports a code generation with different - encodings. - -10. There is a new strategy to split code into files. It is IDE friendly. Be sure - to read :doc:`the updated documentation <../documentation/split_module>`. - -------------- -Version 0.9.0 -------------- - -1. Bug fixes: - - * Declaration of virtual functions that have an exception specification with - an empty throw was fixed. Now the exception specification is generated properly. - Many thanks to Martin Preisler for reporting the bug. - -2. Added exposing of copy constructor, ``operator=`` and ``operator<<``. - - * ``operator=`` is exposed under "assign" name - - * ``operator<<`` is exposed under "__str__" name - -3. Added new call policies: - - * :doc:`as_tuple <../documentation/functions/call_policies/as_tuple>` - - * :doc:`custom_call_policies <../documentation/functions/call_policies/return_range>` - - * :doc:`return_range <../documentation/functions/call_policies/return_range>` - -4. Added an initial support for multi-module development. Now you can mark your - declarations as ``already_exposed`` and :doc:`Py++ <../pyplusplus>` will do the rest. For more - information read :doc:`multi-module development guide <../documentation/multi_module_development>`. - -.. line-separator - -5. :doc:`input_c_buffer <../documentation/functions/transformation/input_c_buffer>` - new functions - transformation, which allows to pass a Python sequence to function, instead of pair of arguments: pointer to buffer and size. - -6. Added ability to control generated "include" directives. Now you can ask :doc:`Py++ <../pyplusplus>` - to include a header file, when it generates code for some declaration. For more - information refers to `inserting code guide`_. - -.. _`inserting code guide` : ../documentation/inserting_code.html#header-files - -7. Code generation improvements: system header files ( Boost.Python or Py++ defined ) - will be included from the generated files only in case the generated code - depends on them. - -8. Performance improvements: Py++ runs 1.5 - 2 times faster, than the previous one. - -9. Added ability to add code before overridden and default function calls. - For more information refer to `member function API documentation`_. - -.. _`member function API documentation` : ../documentation/apidocs/pyplusplus.decl_wrappers.calldef_wrapper.member_function_t-class.html - -10. :doc:`Py++ <../pyplusplus>` will generate documentation for automatically constructed properties. - For more information refer to :doc:`properties guide <../documentation/properties>`. - -11. Added iteration functionality to Boost.Python Indexing Suite V2 ``std::map`` - and ``std::multimap`` containers. - -------------- -Version 0.8.5 -------------- - -1. Added :doc:`Function Transformation <../documentation/functions/transformation/transformation>` feature. - -2. "Py++" introduces new functionality, which allows you to control messages and - warnings: :doc:`how to disable warnings? <../documentation/warnings>`. - -3. Added new algorithm, which controls the registration order of the functions. - See :doc:`registration order document <../documentation/functions/registration_order>` - -4. New "Py++" defined :doc:`return_pointee_value <../documentation/functions/call_policies/return_pointee_value>` - call policy was introduced. - -5. Support for opaque types was added. Read more about this feature `here`__. - -.. __ : ../documentation/functions/call_policies/call_policies.html#special-case - -6. It is possible to configure "Py++" to generate faster ( compilation time ) - code for indexing suite version 2. See API documentation. - -7. The algorithm, which finds all class properties was improved. It provides - user with a better way to control properties creation. A property that would - hide another exposed declaration will not be registered\\created. - -8. Work around for "custom smart pointer as member variable" Boost.Python bug - was introduced. - -9. Bugs fixes and documentation improvement. - - -------------- -Version 0.8.2 -------------- - -1. Interface changes: - - * ``module_builder.module_builder_t.build_code_creator`` method: - argument ``create_casting_constructor`` was removed and deprecation warning - was introduced. - -2. Performance improvements. In some cases you can get x10 performance boost. - Many thanks to Allen Bierbaum! Saving and reusing results of different - :doc:`pygccxml <../../pygccxml/pygccxml>` algorithms and type traits functions achieved this. - -3. Convenience API for registering exception translator was introduced. - -4. :doc:`Py++ <../pyplusplus>` can generate code that uses ``BOOST_PYTHON_FUNCTION_OVERLOADS`` and - ``BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS`` macros. - -5. Treatment to previously generated and no more in-use files was added. By - default :doc:`Py++ <../pyplusplus>` will delete these files, but of course you can redefine this - behaviour. - -6. Generated code changes: - - * ``default_call_policies`` should not be generated any more. - - * For functions that have ``return_value_policy< return_opaque_pointer >`` - call policy, :doc:`Py++ <../pyplusplus>` will automatically generate ``BOOST_PYTHON_OPAQUE_SPECIALIZED_TYPE_ID`` - macro. Thank you very much for Gottfried Ganssauge for this idea. - -7. Support for Boost.Python properties was introduced. :doc:`Py++ <../pyplusplus>` implements small - algorithm, that will automatically discover properties, base on naming conventions. - -8. ``decl_wrappers.class_t`` has new function: ``is_wrapper_needed``. This - function explains why :doc:`Py++ <../pyplusplus>` creates class wrapper for exposed class. - -9. Python type traits module was introduce. Today it contains only single function: - - * ``is_immutable`` - returns ``True`` if exposed type is Python immutable type - - - -------------- -Version 0.8.1 -------------- - - -1. Georgiy Dernovoy contributed a patch, which allows :doc:`Py++ <../pyplusplus>` GUI to - save\\load last used header file. - - -2. :doc:`Py++ <../pyplusplus>` improved a lot functionality related to providing feedback to user: - - * every package has its own logger - * only important user messages are written to ``stdout`` - * user messages are clear - -3. Support for Boost.Python indexing suite version 2 was implemented. - -4. Every code creator class took ``parent`` argument in ``__init__`` method. - This argument was removed. ``adopt_creator`` and ``remove_creator`` will - set\unset reference to parent. - -5. Generated code for member and free functions was changed. This changed was - introduced to fix compilation errors on msvc 7.1 compiler. - -6. :doc:`Py++ <../pyplusplus>` generates "stable" code. If header files were not changed, - :doc:`Py++ <../pyplusplus>` will not change any file. - -7. Support for huge classes was added. :doc:`Py++ <../pyplusplus>` is able to split registration - code for the class to multiple cpp files. - -8. User code could be added almost anywhere, without use of low level API. - -9. Generated source files include only header files you passes as an argument - to module builder. - -10. Bug fixes. - -11. Documentation was improved. - - -Project name changed --------------------- - -In this version the project has been renamed from "pyplusplus" to "Py++". -There were few reasons to this: - -1. I like "Py++" more then "pyplusplus". - -2. "Py++" was the original name of the project: http://mail.python.org/pipermail/c++-sig/2005-July/009280.html - -3. Users always changed the name of the projects. I saw at least 6 different names. - - - -------------- -Version 0.8.0 -------------- - -1. :doc:`Py++ <../pyplusplus>` "user guide" functionality has been improved. Now :doc:`Py++ <../pyplusplus>` - can answer few questions: - - * why this declaration could not be exported - - * why this function could not be overridden from Python - -2. :doc:`Py++ <../pyplusplus>` can suggest an alias for exported classes. - -3. Small redesign has been done - now it is much easier to understand and - maintain code creators, which creates code for C++ functions. - -4. Exception specification is taken into account, when :doc:`Py++ <../pyplusplus>` exports - member functions. - -5. Member variables, that are pointers exported correctly. - -6. Added experimental support for ``vector_indexing_suite``. - -7. Bug fixes. - -------------- -Version 0.7.0 -------------- - -Many thanks to *Matthias Baas* and *Allen Bierbaum*! They contributed so much to -Py++, especially Matthias: - - * New high-level API: :doc:`Py++ <../pyplusplus>` has simple and powerful API - - * Documentation: Matthias and Allen added a lot of documentation strings - - * Bug fixes and performance improvements - -1. New GUI features: - - * It is possible now to see XML generated by GCC-XML. - - * It is possible to use GUI as wizard. It will help you to start with - :doc:`Py++ <../pyplusplus>`, by generating :doc:`Py++ <../pyplusplus>` code. - -2. **Attention - non backward compatible change**. - - ``module_creator.creator_t.__init__`` method has been changed. ``decls`` - argument could be interpreted as - - * list of all declaration to be exported - - * list of top-level declarations. ``creator_t`` should export all - declarations recursively. - - In order to clarify the use of ``decls`` argument new argument ``recursive`` - has been added. By default new value of ``recursive`` is ``False``. - - Guide for users/upgraders: if use are exporting all declaration without - filtering, you should set ``recursive`` argument to ``True``. If you use - ``pygccxml.declarations.filtering.*`` functions, you have nothing to do. - - Sorry for the inconvenience :-(. - -3. Better split of extension module to files. From now the following declarations will - have dedicated file: - - * named enumerations, defined within namespace - * unnamed enumerations and global variables - * free functions - - This functionality will keep the number of instantiated templates within - one file, ``main.cpp``, to be very low. Also it is possible to implement - solution, where ``main.cpp`` file does not contain templates instantiations - at all. - -4. Only constant casting operators could be used with ``implicitly_convertible``. - This bug has been fixed. - -5. Bug exporting non copyable class has been fixed. - -6. Small bug fix - from now file with identical content will not be overwritten. - -7. Boost.Python ``optional`` is now supported and used when a constructor has a - a default argument. - -8. :doc:`Py++ <../pyplusplus>` now generates correct code for hierarchy of abstract classes: - - .. code-block:: c++ - - struct abstract1{ - virtual void do_smth() = 0; - } - - struct abstract2 : public abstract1{ - virtual void do_smth_else() = 0; - } - - struct concrete : public abstract2{ - virtual void do_smth(){}; - virtual void do_smth_else(){}; - } - -9. Logging functionality has been added - -10. New packages ``module_builder``, ``decl_wrappers`` and ``_logging_`` has - been added. - -11. ... - -http://boost.org/libs/python/doc/v2/init.html#optional-spec - -------------- -Version 0.6.0 -------------- - -1. Code repository has been introduced. This repository contains classes - and functions that will help users to export different C++ classes and - declarations. Right now this repository contains two classes: - - * *array_1_t* - - * *const_array_1_t* - - Those classes helps to export static, single dimension arrays. - -2. Code generation has been improved. - -3. Code generation speed has been improved. - -4. If you have Niall Douglas *void\** patch, then you can enjoy from - automatically set call policies. - -5. Bit fields can be accessed from Python - -6. Creating custom code creator example has been added. - -7. Comparison to Pyste has been wrote. - -8. Using this version it is possible to export most of TnFOX Python bindings. - -------------- -Version 0.5.1 -------------- - -1. operator() is now supported. - -2. Special casting operators are renamed( *__int__*, *__str__*, ... ). - -3. Few bug fixes - - -.. _`SourceForge`: http://sourceforge.net/index.php - +=================== +Development history +=================== + +------------ +Contributors +------------ + +Thanks to all the people that have contributed patches, bug reports and suggestions: + +* My wife - Yulia +* John Pallister +* Matthias Baas +* Allen Bierbaum +* Lakin Wecker +* Georgiy Dernovoy +* Gottfried Ganssauge +* Andy Miller +* Martin Preisler +* Meghana Haridev +* Julian Scheid +* Oliver Schweitzer +* Hernán Ordiales +* Bernd Fritzke +* Andrei Vermel +* Carsten( spom.spom ) + +----------- +Version 1.1 +----------- + +1. The bug related to exposing free operators was fixed. Many thanks to Andrei Vermel. + +2. Few bugs were fixed for 64Bit platform. Many thanks to Carsten. + +3. :mod:`ctypes` backend was introduced - :doc:`Py++ <../pyplusplus>` is able to + generate Python code, which uses :mod:`ctypes` package to call functions in + DLLs or shared libraries. + + Massive refactoring, which preserve backward compatibility to previous releases, + was done. + +4. From now on, :doc:`Py++ <../pyplusplus>` will use `Sphinx <http://sphinx.pocoo.org/>`_ + for all documentation. + +5. :doc:`Indexing Suite V2 <../documentation/indexing_suite_v2.html>` introduces + few backward compatibility changes. The indexing suite became "headers only" + library and doesn't requier Boost.Python library patching. + See ":doc:`../documentation/containers`" document for more information. + +6. Support for `std::hash_map<...>` and `std::hash_set<...>` containers was added. + +----------- +Version 1.0 +----------- + +1. The algorithm, which calculates what member functions should be redefined in + derived class wrappers, was improved. Many thanks to Julian Scheid for the bug + fix. + + The change explanation. + + .. code-block:: c++ + + struct A{ + virtual void foo() {} + }; + + class B: public A{ + }; + + Previous version of :doc:`Py++ <../pyplusplus>` didn't generate wrapper for class ``B``, even + though ``B`` inherits ``A``'s virtual function. Now if you have the following + Python code: + + .. code-block:: python + + class C(B): + def __init__( self ): + B.__init__(self) + def foo(self): + print "C.foo" + + then when ``foo`` is invoked on this instance on the C++ side of things, the + Python code won't be executed as the wrapper was missing. + + **Warning!** **There is a possibility that your generated code will not work!** + **Keep reading.** + + If you use "function transformation" functionality, than it is possible the + generated code will **NOT** work. Consider the following example: + + .. code-block:: c++ + + struct A{ + virtual void foo(int& i) {/*do smth*/} + }; + + class B: public A{ + virtual void foo(int& i) {/*do smth else*/} + }; + + The :doc:`Py++ <../pyplusplus>` code: + + .. code-block:: python + + from pyplusplus import module_builder + from pyplusplus import function_transformers as FT + + mb = module_builder_t( ... ) + foo = mb.mem_funs( 'foo' ) + foo.add_transformation( FT.output(0) ) + + The generated code, for class ``B``, is: + + .. code-block:: c++ + + namespace bp = boost::python; + + struct B_wrapper : B, bp::wrapper< B > { + virtual void foo( int & i ) const { ... } + + static boost::python::tuple default_foo( ::B const & inst ) + { ... } + + virtual void foo( int & i ) const + { ... } + + static boost::python::object default_foo( ::A const & inst ) + { ... } + }; + ... + bp::class_< B_wrapper, bp::bases< A > >( "B" ) + .def( "foo", (boost::python::tuple (*)( ::B const & ))( &B_wrapper::default_foo ) ) + .def( "foo", (boost::python::object (*)( ::A const & ))( &B_wrapper::default_foo ) ); + + As you can see, after applying the transformation both functions have same + signature. Do you know what function will be called in some situation? I do - + the wrong one :-(. + + Unfortunately, there is no easy work around or some trick that you can use, + which will not break the existing code. I see few solutions to the problem: + + * change the alias of the functions + + .. code-block:: python + + from pyplusplus import module_builder + from pyplusplus import function_transformers as FT + + mb = module_builder_t( ... ) + foo = mb.mem_funs( '::A::foo' ).add_transformation( FT.output(0), alias="foo_a" ) + foo = mb.mem_funs( '::B::foo' ).add_transformation( FT.output(0), alias="foo_b" ) + + * use ``inout`` transformation - it preserves a function signature + + * :doc:`Py++ <../pyplusplus>` can introduce a configuration, that will preserve the previous behaviour. + I think this is a wrong way to go and doing the API changes is the 'right' + longer term solution. + + If you **absolutely need** to preserve API backward compatible, contact me + and I will introduce such configuration option. + + Sorry for inconvenience. + +2. Few bugs, related to Indexing Suite 2, were fixed. Many thanks to Oliver Schweitzer + for reporting them. + +3. New and highly experimental feature was introduced - + :doc:`Boost.Python and ctypes integration <../documentation/ctypes/ctypes_integration>`. + +4. Support for :doc:`boost::python::make_constructor <../documentation/functions/make_constructor>` functionality was added. + +5. Support for unions and unnamed classes was added. + +6. Doxygen documentation extractor was improved. Many thanks to Hernán Ordiales. + +7. Py++ documentation was improved. Many thanks to Bernd Fritzke. + +------------- +Version 0.9.5 +------------- + +1. Bug fixes: + + * Py++ will not expose free operators, if at least one of the classes, it works + on, is not exposed. + Many thanks to Meghana Haridev for reporting the bug. + +2. Added ability to completely disable warnings reporting. + +3. All logging is now done to ``stderr`` instead of ``stdout``. + +4. Generated code improvements: + + * ``default_call_policies`` is not generated + + * ``return_internal_reference`` call policies - default arguments are not + generated + + * STD containers are generated without default arguments. For example instead + of ``std::vector< int, std::allocator< int > >``, in many cases :doc:`Py++ <../pyplusplus>` will + generate ``std::vector< int >``. + +5. :doc:`create_with_signature <../documentation/functions/overloading>` algorithm was improved. + :doc:`Py++ <../pyplusplus>` will generate correct code in one more use case. + +6. Added ability to exclude declarations from being exposed, if they will cause + compilation to fail. + +7. Starting from this version, :doc:`Py++ <../pyplusplus>` provides a complete solution for + :doc:`multi-module development <../documentation/multi_module_development>`. + +8. Classes, which expose C arrays will be registered only once. + +9. Starting from this version, :doc:`Py++ <../pyplusplus>` supports a code generation with different + encodings. + +10. There is a new strategy to split code into files. It is IDE friendly. Be sure + to read :doc:`the updated documentation <../documentation/split_module>`. + +------------- +Version 0.9.0 +------------- + +1. Bug fixes: + + * Declaration of virtual functions that have an exception specification with + an empty throw was fixed. Now the exception specification is generated properly. + Many thanks to Martin Preisler for reporting the bug. + +2. Added exposing of copy constructor, ``operator=`` and ``operator<<``. + + * ``operator=`` is exposed under "assign" name + + * ``operator<<`` is exposed under "__str__" name + +3. Added new call policies: + + * :doc:`as_tuple <../documentation/functions/call_policies/as_tuple>` + + * :doc:`custom_call_policies <../documentation/functions/call_policies/return_range>` + + * :doc:`return_range <../documentation/functions/call_policies/return_range>` + +4. Added an initial support for multi-module development. Now you can mark your + declarations as ``already_exposed`` and :doc:`Py++ <../pyplusplus>` will do the rest. For more + information read :doc:`multi-module development guide <../documentation/multi_module_development>`. + +.. line-separator + +5. :doc:`input_c_buffer <../documentation/functions/transformation/input_c_buffer>` - new functions + transformation, which allows to pass a Python sequence to function, instead of pair of arguments: pointer to buffer and size. + +6. Added ability to control generated "include" directives. Now you can ask :doc:`Py++ <../pyplusplus>` + to include a header file, when it generates code for some declaration. For more + information refers to `inserting code guide`_. + +.. _`inserting code guide` : ../documentation/inserting_code.html#header-files + +7. Code generation improvements: system header files ( Boost.Python or Py++ defined ) + will be included from the generated files only in case the generated code + depends on them. + +8. Performance improvements: Py++ runs 1.5 - 2 times faster, than the previous one. + +9. Added ability to add code before overridden and default function calls. + For more information refer to `member function API documentation`_. + +.. _`member function API documentation` : ../documentation/apidocs/pyplusplus.decl_wrappers.calldef_wrapper.member_function_t-class.html + +10. :doc:`Py++ <../pyplusplus>` will generate documentation for automatically constructed properties. + For more information refer to :doc:`properties guide <../documentation/properties>`. + +11. Added iteration functionality to Boost.Python Indexing Suite V2 ``std::map`` + and ``std::multimap`` containers. + +------------- +Version 0.8.5 +------------- + +1. Added :doc:`Function Transformation <../documentation/functions/transformation/transformation>` feature. + +2. "Py++" introduces new functionality, which allows you to control messages and + warnings: :doc:`how to disable warnings? <../documentation/warnings>`. + +3. Added new algorithm, which controls the registration order of the functions. + See :doc:`registration order document <../documentation/functions/registration_order>` + +4. New "Py++" defined :doc:`return_pointee_value <../documentation/functions/call_policies/return_pointee_value>` + call policy was introduced. + +5. Support for opaque types was added. Read more about this feature `here`__. + +.. __ : ../documentation/functions/call_policies/call_policies.html#special-case + +6. It is possible to configure "Py++" to generate faster ( compilation time ) + code for indexing suite version 2. See API documentation. + +7. The algorithm, which finds all class properties was improved. It provides + user with a better way to control properties creation. A property that would + hide another exposed declaration will not be registered\\created. + +8. Work around for "custom smart pointer as member variable" Boost.Python bug + was introduced. + +9. Bugs fixes and documentation improvement. + + +------------- +Version 0.8.2 +------------- + +1. Interface changes: + + * ``module_builder.module_builder_t.build_code_creator`` method: + argument ``create_casting_constructor`` was removed and deprecation warning + was introduced. + +2. Performance improvements. In some cases you can get x10 performance boost. + Many thanks to Allen Bierbaum! Saving and reusing results of different + :doc:`pygccxml <../../pygccxml/pygccxml>` algorithms and type traits functions achieved this. + +3. Convenience API for registering exception translator was introduced. + +4. :doc:`Py++ <../pyplusplus>` can generate code that uses ``BOOST_PYTHON_FUNCTION_OVERLOADS`` and + ``BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS`` macros. + +5. Treatment to previously generated and no more in-use files was added. By + default :doc:`Py++ <../pyplusplus>` will delete these files, but of course you can redefine this + behaviour. + +6. Generated code changes: + + * ``default_call_policies`` should not be generated any more. + + * For functions that have ``return_value_policy< return_opaque_pointer >`` + call policy, :doc:`Py++ <../pyplusplus>` will automatically generate ``BOOST_PYTHON_OPAQUE_SPECIALIZED_TYPE_ID`` + macro. Thank you very much for Gottfried Ganssauge for this idea. + +7. Support for Boost.Python properties was introduced. :doc:`Py++ <../pyplusplus>` implements small + algorithm, that will automatically discover properties, base on naming conventions. + +8. ``decl_wrappers.class_t`` has new function: ``is_wrapper_needed``. This + function explains why :doc:`Py++ <../pyplusplus>` creates class wrapper for exposed class. + +9. Python type traits module was introduce. Today it contains only single function: + + * ``is_immutable`` - returns ``True`` if exposed type is Python immutable type + + + +------------- +Version 0.8.1 +------------- + + +1. Georgiy Dernovoy contributed a patch, which allows :doc:`Py++ <../pyplusplus>` GUI to + save\\load last used header file. + + +2. :doc:`Py++ <../pyplusplus>` improved a lot functionality related to providing feedback to user: + + * every package has its own logger + * only important user messages are written to ``stdout`` + * user messages are clear + +3. Support for Boost.Python indexing suite version 2 was implemented. + +4. Every code creator class took ``parent`` argument in ``__init__`` method. + This argument was removed. ``adopt_creator`` and ``remove_creator`` will + set\unset reference to parent. + +5. Generated code for member and free functions was changed. This changed was + introduced to fix compilation errors on msvc 7.1 compiler. + +6. :doc:`Py++ <../pyplusplus>` generates "stable" code. If header files were not changed, + :doc:`Py++ <../pyplusplus>` will not change any file. + +7. Support for huge classes was added. :doc:`Py++ <../pyplusplus>` is able to split registration + code for the class to multiple cpp files. + +8. User code could be added almost anywhere, without use of low level API. + +9. Generated source files include only header files you passes as an argument + to module builder. + +10. Bug fixes. + +11. Documentation was improved. + + +Project name changed +-------------------- + +In this version the project has been renamed from "pyplusplus" to "Py++". +There were few reasons to this: + +1. I like "Py++" more then "pyplusplus". + +2. "Py++" was the original name of the project: http://mail.python.org/pipermail/c++-sig/2005-July/009280.html + +3. Users always changed the name of the projects. I saw at least 6 different names. + + + +------------- +Version 0.8.0 +------------- + +1. :doc:`Py++ <../pyplusplus>` "user guide" functionality has been improved. Now :doc:`Py++ <../pyplusplus>` + can answer few questions: + + * why this declaration could not be exported + + * why this function could not be overridden from Python + +2. :doc:`Py++ <../pyplusplus>` can suggest an alias for exported classes. + +3. Small redesign has been done - now it is much easier to understand and + maintain code creators, which creates code for C++ functions. + +4. Exception specification is taken into account, when :doc:`Py++ <../pyplusplus>` exports + member functions. + +5. Member variables, that are pointers exported correctly. + +6. Added experimental support for ``vector_indexing_suite``. + +7. Bug fixes. + +------------- +Version 0.7.0 +------------- + +Many thanks to *Matthias Baas* and *Allen Bierbaum*! They contributed so much to +Py++, especially Matthias: + + * New high-level API: :doc:`Py++ <../pyplusplus>` has simple and powerful API + + * Documentation: Matthias and Allen added a lot of documentation strings + + * Bug fixes and performance improvements + +1. New GUI features: + + * It is possible now to see XML generated by GCC-XML. + + * It is possible to use GUI as wizard. It will help you to start with + :doc:`Py++ <../pyplusplus>`, by generating :doc:`Py++ <../pyplusplus>` code. + +2. **Attention - non backward compatible change**. + + ``module_creator.creator_t.__init__`` method has been changed. ``decls`` + argument could be interpreted as + + * list of all declaration to be exported + + * list of top-level declarations. ``creator_t`` should export all + declarations recursively. + + In order to clarify the use of ``decls`` argument new argument ``recursive`` + has been added. By default new value of ``recursive`` is ``False``. + + Guide for users/upgraders: if use are exporting all declaration without + filtering, you should set ``recursive`` argument to ``True``. If you use + ``pygccxml.declarations.filtering.*`` functions, you have nothing to do. + + Sorry for the inconvenience :-(. + +3. Better split of extension module to files. From now the following declarations will + have dedicated file: + + * named enumerations, defined within namespace + * unnamed enumerations and global variables + * free functions + + This functionality will keep the number of instantiated templates within + one file, ``main.cpp``, to be very low. Also it is possible to implement + solution, where ``main.cpp`` file does not contain templates instantiations + at all. + +4. Only constant casting operators could be used with ``implicitly_convertible``. + This bug has been fixed. + +5. Bug exporting non copyable class has been fixed. + +6. Small bug fix - from now file with identical content will not be overwritten. + +7. Boost.Python ``optional`` is now supported and used when a constructor has a + a default argument. + +8. :doc:`Py++ <../pyplusplus>` now generates correct code for hierarchy of abstract classes: + + .. code-block:: c++ + + struct abstract1{ + virtual void do_smth() = 0; + } + + struct abstract2 : public abstract1{ + virtual void do_smth_else() = 0; + } + + struct concrete : public abstract2{ + virtual void do_smth(){}; + virtual void do_smth_else(){}; + } + +9. Logging functionality has been added + +10. New packages ``module_builder``, ``decl_wrappers`` and ``_logging_`` has + been added. + +11. ... + +http://boost.org/libs/python/doc/v2/init.html#optional-spec + +------------- +Version 0.6.0 +------------- + +1. Code repository has been introduced. This repository contains classes + and functions that will help users to export different C++ classes and + declarations. Right now this repository contains two classes: + + * *array_1_t* + + * *const_array_1_t* + + Those classes helps to export static, single dimension arrays. + +2. Code generation has been improved. + +3. Code generation speed has been improved. + +4. If you have Niall Douglas *void\** patch, then you can enjoy from + automatically set call policies. + +5. Bit fields can be accessed from Python + +6. Creating custom code creator example has been added. + +7. Comparison to Pyste has been wrote. + +8. Using this version it is possible to export most of TnFOX Python bindings. + +------------- +Version 0.5.1 +------------- + +1. operator() is now supported. + +2. Special casting operators are renamed( *__int__*, *__str__*, ... ). + +3. Few bug fixes + + +.. _`SourceForge`: http://sourceforge.net/index.php + Modified: pyplusplus_dev/docs/pyplusplus.rest =================================================================== --- pyplusplus_dev/docs/pyplusplus.rest 2009-05-11 09:01:32 UTC (rev 1714) +++ pyplusplus_dev/docs/pyplusplus.rest 2009-05-11 11:14:03 UTC (rev 1715) @@ -1,190 +1,189 @@ -============== -`Py++` package -============== - ----------------- -What is `Py++`? ----------------- -Definition: - .. include:: ./definition.irest - -`Py++` uses few different programming paradigms to help you to expose C++ -declarations to Python. This code generator will not stand on your way. It will -guide you through the whole process. It will raise warnings in the case you are -doing something wrong with a link to the explanation. And the most important it -will save your time - you will not have to update code generator script every -time source code is changed. - ------------------------ -Code generation process ------------------------ - -Code generation process, using `Py++` consists from few steps. The following -paragraphs will tell you more about every step. - - -*"read declarations"* ---------------------- - -`Py++` does not reinvent the wheel. It uses `GCC C++ compiler`_ to parse C++ -source files. To be more precise, 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. `Py++` uses :doc:`pygccxml <../../pygccxml/pygccxml>` package to read `GCC-XML`_ generated file. - -The bottom line - you can be sure, that all your declarations are read correctly. - -.. _`GCC C++ compiler` : http://www.gnu.org/software/gcc - - -*"build module"* ------------------ - -Only very small and simple projects could be exported as is. Most of the projects -still require human invocation. Basically there are 2 questions that you should -answer: - - 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, `Py++` cannot answer those question, but it provides maximum help to you. - -How can `Py++` help you with first question? `Py++` provides very powerful and -simple query interface. 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: - -.. code-block:: python - - mb = module_builder_t( ... ) #module_builder_t is the main class that - #will help you with code generation process - mb.free_functions( arg_types=[ 'int &', None ] ) - -Another example - the developer wants to exclude all protected functions from -being exported: - -.. code-block:: python - - mb = module_builder_t( ... ) - mb.calldefs( access_type_matcher_t( 'protected' ) ).exclude() - -The developer can create custom criteria, for example exclude all declarations -with 'impl' ( implementation ) string within the name. - -.. code-block:: python - - mb = module_builder_t( ... ) - mb.decls( lambda decl: 'impl' in decl.name ).exclude() - -Note the way the queries were built. You can think about those queries as -the rules, which will continue to work even after exported C++ code was changed. -It means that you don't have to change code generator source code every time. - -So far, so good what about second question? Well, by default `Py++` generates a -code that will satisfy almost all developers. `Py++` could be configured in many -ways to satisfy your needs. But sometimes this is still not enough. There are -use cases when you need full control over generated code. One of the biggest -problems, with code generators in general, is modifying generated code and -preserving changes. How many code generators did you use or know, that -allow you to put your code anywhere or to reorder generated code as you wish? -`Py++` allows you to do that. - -`Py++` introduces new concept: code creator and code creators tree. You can think -about code creators tree as some kind of `AST`_. The only difference is that code -creators tree provides more specific functionality. For example ``include_t`` code -creator is responsible to create C++ ``include`` directive code. You have full -control over code creators tree, before it is written to disc. Here you -can find UML diagram of almost all code creators: `class diagram`_. - -.. _`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, which is ready to be written -to disc. - -*"write code to files"* ------------------------ -During this step `Py++` reads the code creators tree and writes the code to a -disc. The code generation process result should not be different from the one, -which would be achieved by human. For small project writing all code into single -file is good approach, for big ones the code should be splitted into multiple files. -`Py++` implements both strategies. - -------------- -Features list -------------- - -* `Py++` supports almost all features found in `Boost.Python`_ library - -* Using `Py++` you can develop few extension modules simultaneously, especially - when they share the code. - -* `Py++` generates code, which will help you: - - * to understand compiler generated error messages - - * to minimize project built time - -* `Py++` has few modes of writing code into files: - - * single file - - * multiple files - - * fixed set of multiple files - - * multiple files, where single class code is split to few files - -* You have full control over generated code. Your code could be inserted almost - anywhere. - -* Your license is written at the top of every generated file - -* `Py++` will check the "completeness" of the bindings. It will check for you - that the exposed declarations don't have references to unexposed ones. - -* `Py++` provides enough functionality to extract source code documentation - and write it as Python documentation string - -* `Py++` provides simple and powerful framework to create a wrapper for - functions, which could not be exposed as is to `Python`_. - -* ... - -------- -License -------- - -`Boost Software License`_. - ---------------------------- -Documentation contents ---------------------------- - -.. toctree:: - :maxdepth: 1 - - documentation/tutorials/tutorials.rest - quotes.rest - download.rest - documentation/index.rest - examples/examples.rest - links.rest - comparisons/compare_to.rest - peps/peps_index.rest - troubleshooting_guide/lessons_learned.rest - history/history.rest - - -.. _`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 +============== +`Py++` package +============== + +---------------- +What is `Py++`? +---------------- +Definition: + .. include:: ./definition.irest + +`Py++` uses few different programming paradigms to help you to expose C++ +declarations to Python. This code generator will not stand on your way. It will +guide you through the whole process. It will raise warnings in the case you are +doing something wrong with a link to the explanation. And the most important it +will save your time - you will not have to update code generator script every +time source code is changed. + +----------------------- +Code generation process +----------------------- + +Code generation process, using `Py++` consists from few steps. The following +paragraphs will tell you more about every step. + + +*"read declarations"* +--------------------- + +`Py++` does not reinvent the wheel. It uses `GCC C++ compiler`_ to parse C++ +source files. To be more precise, 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. `Py++` uses :doc:`pygccxml <../../pygccxml/pygccxml>` package to read `GCC-XML`_ generated file. + +The bottom line - you can be sure, that all your declarations are read correctly. + +.. _`GCC C++ compiler` : http://www.gnu.org/software/gcc + + +*"build module"* +----------------- + +Only very small and simple projects could be exported as is. Most of the projects +still require human invocation. Basically there are 2 questions that you should +answer: + + 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, `Py++` cannot answer those question, but it provides maximum help to you. + +How can `Py++` help you with first question? `Py++` provides very powerful and +simple query interface. 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: + +.. code-block:: python + + mb = module_builder_t( ... ) #module_builder_t is the main class that + #will help you with code generation process + mb.free_functions( arg_types=[ 'int &', None ] ) + +Another example - the developer wants to exclude all protected functions from +being exported: + +.. code-block:: python + + mb = module_builder_t( ... ) + mb.calldefs( access_type_matcher_t( 'protected' ) ).exclude() + +The developer can create custom criteria, for example exclude all declarations +with 'impl' ( implementation ) string within the name. + +.. code-block:: python + + mb = module_builder_t( ... ) + mb.decls( lambda decl: 'impl' in decl.name ).exclude() + +Note the way the queries were built. You can think about those queries as +the rules, which will continue to work even after exported C++ code was changed. +It means that you don't have to change code generator source code every time. + +So far, so good what about second question? Well, by default `Py++` generates a +code that will satisfy almost all developers. `Py++` could be configured in many +ways to satisfy your needs. But sometimes this is still not enough. There are +use cases when you need full control over generated code. One of the biggest +problems, with code generators in general, is modifying generated code and +preserving changes. How many code generators did you use or know, that +allow you to put your code anywhere or to reorder generated code as you wish? +`Py++` allows you to do that. + +`Py++` introduces new concept: code creator and code creators tree. You can think +about code creators tree as some kind of `AST`_. The only difference is that code +creators tree provides more specific functionality. For example ``include_t`` code +creator is responsible to create C++ ``include`` directive code. You have full +control over code creators tree, before it is written to disc. Here you +can find UML diagram of almost all code creators: `class diagram`_. + +.. _`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, which is ready to be written +to disc. + +*"write code to files"* +----------------------- +During this step `Py++` reads the code creators tree and writes the code to a +disc. The code generation process result should not be different from the one, +which would be achieved by human. For small project writing all code into single +file is good approach, for big ones the code should be splitted into multiple files. +`Py++` implements both strategies. + +------------- +Features list +------------- + +* `Py++` supports almost all features found in `Boost.Python`_ library + +* Using `Py++` you can develop few extension modules simultaneously, especially + when they share the code. + +* `Py++` generates code, which will help you: + + * to understand compiler generated error messages + + * to minimize project built time + +* `Py++` has few modes of writing code into files: + + * single file + + * multiple files + + * fixed set of multiple files + + * multiple files, where single class code is split to few files + +* You have full control over generated code. Your code could be inserted almost + anywhere. + +* Your license is written at the top of every generated file + +* `Py++` will check the "completeness" of the bindings. It will check for you + that the exposed declarations don't have references to unexposed ones. + +* `Py++` provides enough functionality to extract source code documentation + and write it as Python documentation string + +* `Py++` provides simple and powerful framework to create a wrapper for + functions, which could not be exposed as is to `Python`_. + +* ... + +------- +License +------- + +`Boost Software License`_. + +--------------------------- +Documentation contents +--------------------------- + +.. toctree:: + :maxdepth: 1 + + documentation/tutorials/tutorials.rest + quotes.rest + download.rest + documentation/index.rest + examples/examples.rest + links.rest + comparisons/compare_to.rest + peps/peps_index.rest + troubleshooting_guide/lessons_learned.rest + history/history.rest + +.. _`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 Modified: pyplusplus_dev/docs/troubleshooting_guide/lessons_learned.rest =================================================================== --- pyplusplus_dev/docs/troubleshooting_guide/lessons_learned.rest 2009-05-11 09:01:32 UTC (rev 1714) +++ pyplusplus_dev/docs/troubleshooting_guide/lessons_learned.rest 2009-05-11 11:14:03 UTC (rev 1715) @@ -1,21 +1,22 @@ -============================== -Boost.Python - lessons learned -============================== - --------- -Preamble --------- - -Software development is an interactive process. During `Py++` development -I see many interesting problems and even more interesting solutions. - -On this page you will find my collection of the solutions to some of the problems. - -.. toctree:: - - easy_extending_guide/easy_extending_guide.rest - smart_ptrs/smart_ptrs.rest - shared_ptr/shared_ptr.rest - automatic_conversion/automatic_conversion.rest - exceptions/exceptions.rest - +============================== +Boost.Python - lessons learned +============================== + +-------- +Preamble +-------- + +Software development is an interactive process. During `Py++` development +I see many interesting problems and even more interesting solutions. + +On this page you will find my collection of the solutions to some of the problems. + +.. toctree:: + :maxdepth: 1 + + easy_extending_guide/easy_extending_guide.rest + smart_ptrs/smart_ptrs.rest + shared_ptr/shared_ptr.rest + automatic_conversion/automatic_conversion.rest + exceptions/exceptions.rest + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |