From: <wsf...@us...> - 2010-06-08 06:03:02
|
Revision: 12105 http://swig.svn.sourceforge.net/swig/?rev=12105&view=rev Author: wsfulton Date: 2010-06-08 06:02:56 +0000 (Tue, 08 Jun 2010) Log Message: ----------- Add section on Aspect Oriented Programming after discussion on swig-devel Modified Paths: -------------- trunk/Doc/Manual/Contents.html trunk/Doc/Manual/Typemaps.html Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2010-06-08 05:37:49 UTC (rev 12104) +++ trunk/Doc/Manual/Contents.html 2010-06-08 06:02:56 UTC (rev 12105) @@ -336,6 +336,7 @@ <li><a href="Typemaps.html#Typemaps_nn6">Reusing typemaps</a> <li><a href="Typemaps.html#Typemaps_nn7">What can be done with typemaps?</a> <li><a href="Typemaps.html#Typemaps_nn8">What can't be done with typemaps?</a> +<li><a href="Typemaps.html#Typemaps_aspects">Similarities to Aspect Oriented Programming</a> <li><a href="Typemaps.html#Typemaps_nn9">The rest of this chapter</a> </ul> <li><a href="Typemaps.html#Typemaps_nn10">Typemap specifications</a> Modified: trunk/Doc/Manual/Typemaps.html =================================================================== --- trunk/Doc/Manual/Typemaps.html 2010-06-08 05:37:49 UTC (rev 12104) +++ trunk/Doc/Manual/Typemaps.html 2010-06-08 06:02:56 UTC (rev 12105) @@ -18,6 +18,7 @@ <li><a href="#Typemaps_nn6">Reusing typemaps</a> <li><a href="#Typemaps_nn7">What can be done with typemaps?</a> <li><a href="#Typemaps_nn8">What can't be done with typemaps?</a> +<li><a href="#Typemaps_aspects">Similarities to Aspect Oriented Programming</a> <li><a href="#Typemaps_nn9">The rest of this chapter</a> </ul> <li><a href="#Typemaps_nn10">Typemap specifications</a> @@ -115,7 +116,7 @@ <p> One of the most important problems in wrapper code generation is the -conversion of datatypes between programming languages. Specifically, +conversion or marshalling of datatypes between programming languages. Specifically, for every C/C++ declaration, SWIG must somehow generate wrapper code that allows values to be passed back and forth between languages. Since every programming language represents data differently, this is @@ -637,10 +638,28 @@ </pre> </div> -<H3><a name="Typemaps_nn9"></a>10.1.7 The rest of this chapter</H3> +<H3><a name="Typemaps_aspects"></a>10.1.7 Similarities to Aspect Oriented Programming</H3> <p> +SWIG has parallels to <a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming">Aspect Oriented Software Development (AOP)</a>. +The <a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming#Terminology">AOP terminology</a> with respect to SWIG typemaps can be viewed as follows: +</p> +<ul> + <li> <b>Cross-cutting concerns</b>: The cross-cutting concerns are the modularization of the functionality that the typemaps implement, which is primarily marshalling of types from/to the target language and C/C++. + <li> <b>Advice</b>: The typemap body contains code which is executed whenever the marshalling is required. + <li> <b>Pointcut</b>: The pointcuts are the positions in the wrapper code that the typemap code is generated into. + <li> <b>Aspect</b>: Aspects are the combination of the pointcut and the advice, hence each typemap is an aspect. +</ul> +<p> +SWIG can also be viewed as has having a second set of aspects based around <a href="Customization.html">%feature</a>. +Features such as <tt>%exception</tt> are also cross-cutting concerns as they encapsulate code that can be used to add logging or exception handling to any function. +</p> + +<H3><a name="Typemaps_nn9"></a>10.1.8 The rest of this chapter</H3> + + +<p> The rest of this chapter provides detailed information for people who want to write new typemaps. This information is of particular importance to anyone who intends to write a new SWIG target language module. Power users can also This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |