From: <den...@us...> - 2010-08-01 16:17:32
|
Revision: 249 http://stdair.svn.sourceforge.net/stdair/?rev=249&view=rev Author: denis_arnaud Date: 2010-08-01 16:17:26 +0000 (Sun, 01 Aug 2010) Log Message: ----------- [Doc] Improved the documentation a little bit. Modified Paths: -------------- trunk/stdair/doc/Makefile.am trunk/stdair/doc/doxygen_html.cfg.in trunk/stdair/doc/local/codingrules.doc trunk/stdair/doc/local/documentation.doc trunk/stdair/doc/local/help_wanted.doc trunk/stdair/doc/local/howto_release.doc trunk/stdair/doc/local/installation.doc trunk/stdair/doc/local/linking.doc trunk/stdair/doc/local/stdair_footer.html trunk/stdair/doc/local/stdair_header.html Removed Paths: ------------- trunk/stdair/doc/sourceforge/ Modified: trunk/stdair/doc/Makefile.am =================================================================== --- trunk/stdair/doc/Makefile.am 2010-07-28 13:09:40 UTC (rev 248) +++ trunk/stdair/doc/Makefile.am 2010-08-01 16:17:26 UTC (rev 249) @@ -17,9 +17,8 @@ html_tarname = @PACKAGE_TARNAME@-doc-@PACKAGE_VERSION@ pdf_tarname = @PACKAGE_TARNAME@-pdf-@PACKAGE_VERSION@ -#noinst_DATA = sourceforge/howto_release_stdair.html.in -#EXTRA_DIST = $(noinst_DATA) -EXTRA_DIST = +noinst_DATA = +EXTRA_DIST = $(noinst_DATA) # Targets all-local: html-local Modified: trunk/stdair/doc/doxygen_html.cfg.in =================================================================== --- trunk/stdair/doc/doxygen_html.cfg.in 2010-07-28 13:09:40 UTC (rev 248) +++ trunk/stdair/doc/doxygen_html.cfg.in 2010-08-01 16:17:26 UTC (rev 249) @@ -126,7 +126,7 @@ STRIP_FROM_INC_PATH = @top_srcdir@/ # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems +# (but less readable) file names. This can be useful if your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO @@ -576,7 +576,6 @@ INPUT = @top_srcdir@/@PACKAGE@ \ @top_srcdir@/doc/local \ - @top_builddir@/doc/local \ @top_srcdir@/doc/tutorial # This tag can be used to specify the character encoding of the source files @@ -1353,13 +1352,13 @@ # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. -GENERATE_TAGFILE = doxygen_html.tag +GENERATE_TAGFILE = html/doxygen_@PACKAGE@.tag # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. -ALLEXTERNALS = NO +ALLEXTERNALS = YES # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will Modified: trunk/stdair/doc/local/codingrules.doc =================================================================== --- trunk/stdair/doc/local/codingrules.doc 2010-07-28 13:09:40 UTC (rev 248) +++ trunk/stdair/doc/local/codingrules.doc 2010-08-01 16:17:26 UTC (rev 249) @@ -9,14 +9,14 @@ Variables names follow Java naming conventions. Examples: -- \c `lNumberOfPassengers' -- \c `lSeatAvailability' +- \c lNumberOfPassengers +- \c lSeatAvailability \section cr_functions Default Naming Rules for Functions Function names follow Java naming conventions. Example: -- \c `int \c myFunctionName (\c const \c int& \c a, \c int \c b)' +- <tt>int myFunctionName (const int& a, int b)</tt> \section cr_classes Default Naming Rules for Classes and Structures @@ -24,18 +24,18 @@ Each new word in a class or structure name should always start with a capital letter and the words should be separated with an under-score. Abbreviations are written with capital letters. Examples: -- \c `MyClassName' -- \c `MyStructName' +- \c MyClassName +- \c MyStructName \section cr_files Default Naming Rules for Files Files are named after the C++ class names. -Source files are named using \c `.cpp' suffix, whereas header -files end with \c `.hpp' extension. Examples: -- \c `FlightDate.hpp' -- \c `SegmentDate.cpp' +Source files are named using <tt>.cpp</tt> suffix, whereas header +files end with <tt>.hpp</tt> extension. Examples: +- <tt>FlightDate.hpp</tt> +- <tt>SegmentDate.cpp</tt> Modified: trunk/stdair/doc/local/documentation.doc =================================================================== --- trunk/stdair/doc/local/documentation.doc 2010-07-28 13:09:40 UTC (rev 248) +++ trunk/stdair/doc/local/documentation.doc 2010-08-01 16:17:26 UTC (rev 249) @@ -4,9 +4,9 @@ \section doc_general General Rules All classes in StdAir should be properly documented with Doxygen -comments in include (\c `.hpp') files. Source (\c `.cpp') files should be -documented according to a normal standard for well documented C++ -code. +comments in include (<tt>.hpp</tt>) files. Source (<tt>.cpp</tt>) +files should be documented according to a normal standard for well +documented C++ code. An example of how the interface of a class shall be documented in StdAir is shown here: @@ -75,32 +75,18 @@ * \file * \brief Brief description of the file here * \author Names of the authors who contributed to this code + * \date Date * * Detailed description of the file here if needed. * - * $Date: 2005-12-13 12:27:39 +0100 (mar, 13 déc 2005) $ - * $Revision: 93 $ - * * ------------------------------------------------------------------------- * * StdAir - C++ Standard Airline IT Object Library * * Copyright (C) 2009-2010 (see AUTHORS file for a list of contributors) * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * See COPYING file for license information * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * * ------------------------------------------------------------------------- */ \endverbatim @@ -121,8 +107,8 @@ \endverbatim -The following example shows how to document the function \c -`myFunction' and how to add it to the group \c `my_group': +The following example shows how to document the function \c myFunction +and how to add it to the group \c my_group: \verbatim /*! Modified: trunk/stdair/doc/local/help_wanted.doc =================================================================== --- trunk/stdair/doc/local/help_wanted.doc 2010-07-28 13:09:40 UTC (rev 248) +++ trunk/stdair/doc/local/help_wanted.doc 2010-08-01 16:17:26 UTC (rev 249) @@ -21,7 +21,7 @@ - Help us to port StdAir to new platforms. If you manage to compile StdAir on a new platform, then tell us how you did it. - Send us your code. If you have a good StdAir compatible code, which you can -release under the GPL, and you think it should be included in StdAir, then +release under the LGPL, and you think it should be included in StdAir, then send it to us. - Become an StdAir developer. Send us an e-mail and tell what you can do for StdAir. Modified: trunk/stdair/doc/local/howto_release.doc =================================================================== --- trunk/stdair/doc/local/howto_release.doc 2010-07-28 13:09:40 UTC (rev 248) +++ trunk/stdair/doc/local/howto_release.doc 2010-08-01 16:17:26 UTC (rev 249) @@ -51,11 +51,11 @@ Check to which Subversion revision the release corresponds to. For instance the <a href="http://sourceforge.net/apps/trac/stdair/changeset/233/">StdAir release 0.2.0 corresponds to Subversion revision r233</a>. -The trunk \c configure.ac file specifies a fake release number, namely +The trunk <tt>configure.ac</tt> file specifies a fake release number, namely 99.99.99, for current (head) development. When a release is made, two Subversion revisions are committed with, as the sole change, the release number within -the \c configure.ac file: +the <tt>configure.ac</tt> file: - one revision is committed with the to-be-released version number (e.g., 0.2.0) and commit message prefixed with "[Release x.y.z]", - and another one with the release number back to 99.99.99 and message stating @@ -127,7 +127,8 @@ This will configure, compile and check the package. The output packages will -be named, for instance, \c stdair-0.2.0.tar.gz and \c stdair-0.2.0.tar.bz2. +be named, for instance, <tt>stdair-0.2.0.tar.gz</tt> and +<tt>stdair-0.2.0.tar.bz2</tt>. \section generate_rpm_packages Generation the RPM packages @@ -164,13 +165,13 @@ \section create_doc_packages Create the documentation packages Create the documentation packages using the following command: -\c make dist-html and \c make dist-tex +<tt>make dist-html</tt> and <tt>make dist-tex</tt> The output documentation packages will be named, for instance: -- \c stdair-doc-0.2.0.tar.gz and \c stdair-doc-0.2.0.tar.bz2 for the - HTML documentation. -- \c stdair-pdf-0.2.0.tar.gz and \c stdair-pdf-0.2.0.tar.bz2 for the - PDF documentation. +- <tt>stdair-doc-0.2.0.tar.gz</tt> and <tt>stdair-doc-0.2.0.tar.bz2</tt> + for the HTML documentation. +- <tt>stdair-pdf-0.2.0.tar.gz</tt> and <tt>stdair-pdf-0.2.0.tar.bz2</tt> + for the PDF documentation. \section upload_files Upload the files to SourceForge @@ -187,23 +188,31 @@ \verbatim cd ~/dev cd stdairsvn/branches/stdair/0.2.0/main -rsync -aiv doc/html joe,st...@we...:htdocs/ +rsync -aiv doc/html/ joe,st...@we...:htdocs/ \endverbatim where \c -aiv options mean: - \c -a: archive/mirror mode; equals \c -rlptgoD (no \c -H, \c -A, \c -X) - \c -v: increase verbosity - \c -i: output a change-summary for all updates + - Note the trailing slashes (/) at the end of both the source and target + directories. It means that the content of the source directory + (<tt>doc/html</tt>), rather than the directory itself, has to be copied + into the content of the target directory. - or use the <a href="https://sourceforge.net/apps/trac/sourceforge/wiki/Shell%20service">SourceForge Shell service</a>. \section post_news Make a new post -- submit a new entry in the <a href="https://sourceforge.net/news/submit.php?group_id=267760">SourceForge project-related news feed</a> -- make a new post on the <a href="https://sourceforge.net/apps/wordpress/stdair/wp-admin/">SourceForge hosted WordPress blog</a> +- submit a new entry in the + <a href="https://sourceforge.net/news/submit.php?group_id=267760">SourceForge + project-related news feed</a> +- make a new post on the + <a href="https://sourceforge.net/apps/wordpress/stdair/wp-admin/">SourceForge + hosted WordPress blog</a> - and update, if necessary, -<a href="https://sourceforge.net/apps/trac/stdair/report">Trac tickets</a>. + <a href="https://sourceforge.net/apps/trac/stdair/report">Trac tickets</a>. \section send_announce Send an email on the announcement mailing-list Modified: trunk/stdair/doc/local/installation.doc =================================================================== --- trunk/stdair/doc/local/installation.doc 2010-07-28 13:09:40 UTC (rev 248) +++ trunk/stdair/doc/local/installation.doc 2010-08-01 16:17:26 UTC (rev 249) @@ -69,7 +69,7 @@ \section basic_instructions Basic Installation - Briefly, the shell commands \c `./configure; make; make install' + Briefly, the shell commands <tt>`./configure; make; make install'</tt> should configure, build, and install this package. The following more-detailed instructions are generic; see the \c `README' file for instructions specific to this package. Some packages provide this @@ -101,53 +101,56 @@ some point \c `config.cache' contains results you don't want to keep, you may remove or edit it. - The file \c `configure.ac' (or \c `configure.in') is used to create -\c `configure' by a program called \c `autoconf'. You need \c `configure.ac' -if you want to change it or regenerate \c `configure' using a newer version -of \c `autoconf'. + The file <tt>`configure.ac'</tt> (or <tt>`configure.in'</tt>) is +used to create \c `configure' by a program called \c `autoconf'. You +need <tt>`configure.ac'</tt> if you want to change it or regenerate \c +`configure' using a newer version of \c `autoconf'. The simplest way to compile this package is: --# \c `cd' to the directory containing the package's source code and type - \c `./configure' to configure the package for your system. - Running \c `configure' might take a while. While running, it prints - some messages telling which features it is checking for. +-# \c `cd' to the directory containing the package's source code and + type <tt>`./configure'</tt> to configure the package for your + system. Running \c `configure' might take a while. While running, + it prints some messages telling which features it is checking for. -# Type \c `make' to compile the package. --# Optionally, type \c `make check' to run any self-tests that come with - the package, generally using the just-built uninstalled binaries. --# Type \c `make install' to install the programs and any data files and - documentation. When installing into a prefix owned by root, it is - recommended that the package be configured and built as a regular - user, and only the `make install' phase executed with root - privileges. --# Optionally, type \c `make installcheck' to repeat any self-tests, but - this time using the binaries in their final installed location. - This target does not install anything. Running this target as a - regular user, particularly if the prior \c `make install' required - root privileges, verifies that the installation completed - correctly. +-# Optionally, type <tt>`make check'<tt> to run any self-tests that + come with the package, generally using the just-built uninstalled + binaries. +-# Type <tt>`make install'</tt> to install the programs and any data + files and documentation. When installing into a prefix owned by + root, it is recommended that the package be configured and built as + a regular user, and only the `make install' phase executed with + root privileges. +-# Optionally, type <tt>`make installcheck'</tt> to repeat any + self-tests, but this time using the binaries in their final + installed location. This target does not install anything. + Running this target as a regular user, particularly if the prior + <tt>`make install'</tt> required root privileges, verifies that the + installation completed correctly. -# You can remove the program binaries and object files from the - source code directory by typing \c `make clean'. To also remove the - files that \c `configure' created (so you can compile the package for - a different kind of computer), type \c `make distclean'. There is - also a \c `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. --# Often, you can also type \c `make uninstall' to remove the installed + source code directory by typing <tt>`make clean'</tt>. To also + remove the files that \c `configure' created (so you can compile + the package for a different kind of computer), type <tt>`make + distclean'</tt>. There is also a <tt>`make maintainer-clean'</tt> + target, but that is intended mainly for the package's developers. + If you use it, you may have to get all sorts of other programs in + order to regenerate files that came with the distribution. +-# Often, you can also type <tt>`make uninstall'</tt> to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. --# Some packages, particularly those that use Automake, provide \c `make - distcheck', which can by used by developers to test that all other - targets like \c `make install' and \c `make uninstall' work correctly. - This target is generally not run by end users. +-# Some packages, particularly those that use Automake, provide + <tt>`make distcheck'</tt>, which can by used by developers to test + that all other targets like <tt>`make install'</tt> and <tt>`make + uninstall'</tt> work correctly. This target is generally not run + by end users. \section compilers Compilers and Options - Some systems require unusual options for compilation or linking that -the \c `configure' script does not know about. Run \c `./configure --help' -for details on some of the pertinent environment variables. + Some systems require unusual options for compilation or linking +that the \c `configure' script does not know about. Run +<tt>`./configure --help'</tt> for details on some of the pertinent +environment variables. You can give \c `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here @@ -157,7 +160,7 @@ ./configure CC=c99 CFLAGS=-g LIBS=-lposix \endverbatim - *Note \ref defining_variables for more details. + \see \ref defining_variables for more details. \section compiling_for_multi_arch Compiling For Multiple Architectures @@ -168,9 +171,9 @@ directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This -is known as a "VPATH" build. +is known as a \c "VPATH" build. - With a non-GNU `make', it is safer to compile the package for one + With a non-GNU \c `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. @@ -194,79 +197,85 @@ \section installation_names Installation Names - By default, \c `make install' installs the package's commands under -\c `/usr/local/bin', include files under \c `/usr/local/include', etc. You -can specify an installation prefix other than \c `/usr/local' by giving -\c `configure' the option \c `--prefix=PREFIX', where \c PREFIX must be an -absolute file name. + By default, <tt>`make install'</tt> installs the package's commands +under <tt>`/usr/local/bin'</tt>, include files under +<tt>`/usr/local/include'</tt>, etc. You can specify an installation +prefix other than <tt>`/usr/local'</tt> by giving \c `configure' the +option <tt>`--prefix=PREFIX'</tt>, where \c PREFIX must be an absolute +file name. You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -pass the option \c `--exec-prefix=PREFIX' to `configure', the package uses -\c PREFIX as the prefix for installing programs and libraries. -Documentation and other data files still use the regular prefix. +architecture-specific files and architecture-independent files. If +you pass the option <tt>`--exec-prefix=PREFIX'</tt> to `configure', +the package uses \c PREFIX as the prefix for installing programs and +libraries. Documentation and other data files still use the regular +prefix. In addition, if you use an unusual directory layout you can give -options like \c `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. In general, the -default for these options is expressed in terms of \c `${prefix}', so that -specifying just \c `--prefix' will affect all of the other directory -specifications that were not explicitly provided. +options like <tt>`--bindir=DIR'</tt> to specify different values for +particular kinds of files. Run `configure --help' for a list of the +directories you can set and what kinds of files go in them. In +general, the default for these options is expressed in terms of +<tt>`${prefix}'</tt>, so that specifying just <tt>`--prefix'</tt> will +affect all of the other directory specifications that were not +explicitly provided. - The most portable way to affect installation locations is to pass the -correct locations to \c `configure'; however, many packages provide one or -both of the following shortcuts of passing variable assignments to the -\c `make install' command line to change installation locations without -having to reconfigure or recompile. + The most portable way to affect installation locations is to pass +the correct locations to \c `configure'; however, many packages +provide one or both of the following shortcuts of passing variable +assignments to the <tt>`make install'</tt> command line to change +installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each -affected directory. For example, -\c `make install prefix=/alternate/directory' will choose an alternate location -for all directory configuration variables that were expressed in terms of -\c `${prefix}'. Any directories that were specified during \c `configure', -but not in terms of \c `${prefix}', must each be overridden at install -time for the entire installation to be relocated. The approach of -makefile variable overrides for each directory variable is required by -the GNU Coding Standards, and ideally causes no recompilation. -However, some platforms have known limitations with the semantics of -shared libraries that end up requiring recompilation when using this -method, particularly noticeable in packages that use GNU Libtool. +affected directory. For example, <tt>`make install +prefix=/alternate/directory'</tt> will choose an alternate location +for all directory configuration variables that were expressed in terms +of <tt>`${prefix}'</tt>. Any directories that were specified during +\c `configure', but not in terms of <tt>`${prefix}'</tt>, must each be +overridden at install time for the entire installation to be +relocated. The approach of makefile variable overrides for each +directory variable is required by the GNU Coding Standards, and +ideally causes no recompilation. However, some platforms have known +limitations with the semantics of shared libraries that end up +requiring recompilation when using this method, particularly +noticeable in packages that use GNU Libtool. - The second method involves providing the \c `DESTDIR' variable. For -example, \c `make install DESTDIR=/alternate/directory' will prepend -\c `/alternate/directory' before all installation names. The approach of -\c `DESTDIR' overrides is not required by the GNU Coding Standards, and -does not work on platforms that have drive letters. On the other hand, -it does better at avoiding recompilation issues, and works well even -when some directory options were not specified in terms of \c `${prefix}' -at \c `configure' time. + The second method involves providing the \c `DESTDIR' variable. +For example, <tt>`make install DESTDIR=/alternate/directory'</tt> will +prepend <tt>`/alternate/directory'</tt> before all installation names. +The approach of \c `DESTDIR' overrides is not required by the GNU +Coding Standards, and does not work on platforms that have drive +letters. On the other hand, it does better at avoiding recompilation +issues, and works well even when some directory options were not +specified in terms of <tt>`${prefix}'</tt> at \c `configure' time. \section optional_features Optional Features If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving \c `configure' the -option \c `--program-prefix=PREFIX' or \c `--program-suffix=SUFFIX'. +with an extra prefix or suffix on their names by giving \c `configure' +the option <tt>`--program-prefix=PREFIX'</tt> or +<tt>`--program-suffix=SUFFIX'</tt>. - Some packages pay attention to \c `--enable-FEATURE' options to -\c `configure', where \c FEATURE indicates an optional part of the package. -They may also pay attention to \c `--with-PACKAGE' options, where \c PACKAGE -is something like \c `gnu-as' or \c `x' (for the X Window System). The -\c `README' should mention any \c `--enable-' and \c `--with-' options that -the package recognizes. + Some packages pay attention to <tt>`--enable-FEATURE'</tt> options +to \c `configure', where \c FEATURE indicates an optional part of the +package. They may also pay attention to <tt>`--with-PACKAGE'</tt> +options, where \c PACKAGE is something like <tt>`gnu-as'</tt> or \c +`x' (for the X Window System). The \c `README' should mention any +<tt>`--enable-'</tt> and <tt>`--with-'</tt> options that the package +recognizes. For packages that use the X Window System, \c `configure' can usually find the X include and library files automatically, but if it doesn't, -you can use the \c `configure' options \c `--x-includes=DIR' and -\c `--x-libraries=DIR' to specify their locations. +you can use the \c `configure' options <tt>`--x-includes=DIR'</tt> and +<tt>`--x-libraries=DIR'</tt> to specify their locations. Some packages offer the ability to configure how verbose the -execution of `make' will be. For these packages, running \c `./configure ---enable-silent-rules' sets the default to minimal output, which can be -overridden with \c `make V=1'; while running \c `./configure ---disable-silent-rules' sets the default to verbose, which can be -overridden with \c `make V=0'. +execution of `make' will be. For these packages, running <tt>`./configure +--enable-silent-rules'</tt> sets the default to minimal output, which can be +overridden with <tt>`make V=1'</tt>; while running <tt>`./configure +--disable-silent-rules'</tt> sets the default to verbose, which can be +overridden with <tt>`make V=0'</tt>. \section particular_systems Particular systems @@ -281,10 +290,10 @@ and if that doesn't work, install pre-built binaries of GCC for HP-UX. - On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot -parse its \c `<wchar.h>' header file. The option \c `-nodtk' can be used as -a workaround. If GNU CC is not installed, it is therefore recommended -to try + On OSF/1 a.k.a. Tru64, some versions of the default C compiler +cannot parse its <tt>`<wchar.h>'</tt> header file. The option +<tt>`-nodtk'</tt> can be used as a workaround. If GNU CC is not +installed, it is therefore recommended to try \verbatim ./configure CC="cc" @@ -375,31 +384,35 @@ \c `configure' recognizes the following options to control how it operates. -- \c `--help', \c `-h' print a summary of all of the options to `configure', - and exit. -- \c `--help=short', \c `--help=recursive' print a summary of the options - unique to this package's \c `configure', and exit. +- <tt>`--help'</tt>, \c `-h' print a summary of all of the options to + `configure', and exit. +- <tt>`--help=short'</tt>, <tt>`--help=recursive'</tt> print a summary + of the options unique to this package's \c `configure', and exit. The \c `short' variant lists options used only in the top level, while the \c `recursive' variant lists options also present in any nested packages. -- \c `--version', `-V' print the version of Autoconf used to generate +- <tt>`--version'</tt>, `-V' print the version of Autoconf used to generate the `configure' script, and exit. -- \c `--cache-file=FILE' enable the cache: use and save the results of the - tests in \c FILE, traditionally \c `config.cache'. - \c FILE defaults to \c `/dev/null' to disable caching. -- \c `--config-cache', \c `-C' alias for \c `--cache-file=config.cache'. -- \c `--quiet', \c `--silent', \c `-q' do not print messages saying which - checks are being made. To suppress all normal output, redirect it to - `/dev/null' (any error messages will still be shown). -- \c `--srcdir=DIR' look for the package's source code in directory \c DIR. - Usually \c `configure' can determine that directory automatically. -- \c `--prefix=DIR' use \c DIR as the installation prefix. - *note \ref installation_names for more details, including other options +- <tt>`--cache-file=FILE'</tt> enable the cache: use and save the + results of the tests in \c FILE, traditionally + <tt>`config.cache'</tt>. + \c FILE defaults to <tt>`/dev/null'</tt> to disable caching. +- <tt>`--config-cache'</tt>, \c `-C' alias for + <tt>`--cache-file=config.cache'</tt>. +- <tt>`--quiet'</tt>, <tt>`--silent'</tt>, \c `-q' do not print + messages saying which checks are being made. To suppress all normal + output, redirect it to <tt>`/dev/null'</tt> (any error messages will + still be shown). +- <tt>`--srcdir=DIR'</tt> look for the package's source code in + directory \c DIR. Usually \c `configure' can determine that + directory automatically. +- <tt>`--prefix=DIR'</tt> use \c DIR as the installation prefix. + \see \ref installation_names for more details, including other options available for fine-tuning the installation locations. --c \c `--no-create', \c `-n' run the configure checks, but stop before creating - any output files. +- <tt>`--no-create'</tt>, \c `-n' run the configure checks, but stop + before creating any output files. \c `configure' also accepts some other, not widely useful, options. Run -\c `configure --help' for more details. +<tt>`configure --help'</tt> for more details. The \c `configure' script produces an ouput like this: @@ -481,9 +494,9 @@ \endverbatim It is recommended that you check if your library has been compiled and -linked properly and works as expected. To do so, you should execute the -testing process \c `make check'. As a result, you should obtain a similar -report: +linked properly and works as expected. To do so, you should execute +the testing process <tt>`make check'</tt>. As a result, you should +obtain a similar report: \verbatim [...] @@ -519,7 +532,7 @@ and (optionally) HTML and PDF documentation by typing: \verbatim -% make install +make install \endverbatim Depending on the \c PREFIX settings during configuration, you might need Modified: trunk/stdair/doc/local/linking.doc =================================================================== --- trunk/stdair/doc/local/linking.doc 2010-07-28 13:09:40 UTC (rev 248) +++ trunk/stdair/doc/local/linking.doc 2010-08-01 16:17:26 UTC (rev 249) @@ -5,6 +5,7 @@ - \ref intro - \ref pkgconfig - \ref stdair_config +- \ref autotools - \ref dynamiclinking @@ -53,23 +54,6 @@ g++ `stdair-config --cflags` -o my_prog my_prog.cpp `stdair-config --libs` \endcode -If you would like to use the same optimisation flags (\c CXXFLAGS), as those -used for compiling the StdAir library, you might try the following command: - -\code -g++ `stdair-config --cflags-opt` -o my_prog_opt my_prog.cpp \ - `stdair-config --libs-opt` -\endcode - -Moreover, if you compiled and installed the \c `libstdair_debug.*' library by -using \c `--enable-debug' swich to configure, you can compile and link your -program with debugging options using the following command instead: - -\code -g++ `stdair-config --cflags-debug` -o my_prog_debug my_prog.cpp \ - `stdair-config --libs-debug` -\endcode - A list of \c `stdair-config' options can be obtained by typing: \code @@ -84,6 +68,19 @@ \endcode +\section autotools M4 macro for the GNU Autotools + +A M4 macro file is delivered with StdAir, namely `stdair.m4', which +can be found in, e.g., `/usr/share/aclocal'. When used by a +`configure' script, thanks to he <tt>`AM_PATH_STDAIR'</tt> macro +(specified in the M4 macro file), the following Makefile variables are +then defined: +- <tt>`STDAIR_VERSION'</tt> (e.g., defined to 0.2.0) +- <tt>`STDAIR_CFLAGS'</tt> (e.g., defined to <tt>`-I${prefix}/include'</tt>) +- <tt>`STDAIR_LIBS'</tt> (e.g., defined to <tt>`-L${prefix}/lib -lstdair'</tt>) + + + \section dynamiclinking Using StdAir with dynamic linking When using static linking some of the library routines in StdAir are Modified: trunk/stdair/doc/local/stdair_footer.html =================================================================== --- trunk/stdair/doc/local/stdair_footer.html 2010-07-28 13:09:40 UTC (rev 248) +++ trunk/stdair/doc/local/stdair_footer.html 2010-08-01 16:17:26 UTC (rev 249) @@ -1,6 +1,9 @@ <div style="clear: both; width: 100%; height: 31px; background-color: #ffff00; border: 1px solid #b0b0b0; margin: 5px 5px 5px 0; padding: 2px;"> - <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=177703&type=1" alt="SourceForge Logo" style="float: right; border: 0;"></a> - <p style="padding-left: 10px; font-size: 85%;">Generated on $datetime for $projectname by <a href="http://www.doxygen.org/index.html">Doxygen</a> $doxygenversion</p> + <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=267760&type=1" alt="SourceForge Logo" style="float: right; border: 0;"></a> + + <p style="padding-left: 10px; font-size: 85%;">Generated on $datetime for + $projectname by <a href="http://www.doxygen.org/index.html">Doxygen</a> $doxygenversion</p> + </div> </body> </html> Modified: trunk/stdair/doc/local/stdair_header.html =================================================================== --- trunk/stdair/doc/local/stdair_header.html 2010-07-28 13:09:40 UTC (rev 248) +++ trunk/stdair/doc/local/stdair_header.html 2010-08-01 16:17:26 UTC (rev 249) @@ -14,6 +14,6 @@ src="stdair_logo.png" alt="StdAir Logo" style="float: left; border: 0;"></a> <a href="http://sourceforge.net/projects/stdair/"><img width="150" - height="40" src="sfx_logo.png" alt="Sourceforge Logo" + height="40" src="sfx_logo.png" alt="Get Standard Airline IT Object Library at SourceForge.net. Fast, secure and Free Open Source software downloads" style="float: right; border: 0;"></a> </div> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <den...@us...> - 2010-08-11 15:08:27
|
Revision: 263 http://stdair.svn.sourceforge.net/stdair/?rev=263&view=rev Author: denis_arnaud Date: 2010-08-11 15:08:21 +0000 (Wed, 11 Aug 2010) Log Message: ----------- [Doc] Added a sub-directory dedicated to Ditaa-based diagrams. Added Paths: ----------- trunk/stdair/doc/diagrams/ trunk/stdair/doc/diagrams/stdair_bom_ditaa.txt Added: trunk/stdair/doc/diagrams/stdair_bom_ditaa.txt =================================================================== --- trunk/stdair/doc/diagrams/stdair_bom_ditaa.txt (rev 0) +++ trunk/stdair/doc/diagrams/stdair_bom_ditaa.txt 2010-08-11 15:08:21 UTC (rev 263) @@ -0,0 +1,44 @@ + +--------+ +-------+ +-------+ + | c897 +---+ ditaa +--->| | + | Text | +-------+ |diagram| + |Document| |!magic!| | | + | {d}| | c978 | | c789 | + +---+-=--+ +-------+ +-------+ + : ^ + | Lots of work | + \-------------------------/ + + ^ + | +-----------------+ + /--------+ /----*<-+----\ | Things to do | + | cRED | |cBLU| |cEEE| | cFB9 | + | /----+ +----+--+----/ | * Cut the grass | + | |cYEL| | | | * Buy jam | + +---+----+ \--+--=-->*+ * Make website | + | +-----------------+ +/--\/--\/--\ v +| || || | +| ++ ++ | +----+---+----+----+---+---+---+ +\\ cDB6 // | |{o}| | |{c}|{s}| | + | /----\ | |{tr}| |{mo}|{io}| | |{d}| + | |c733| | +----+---+----+----+---+---+---+ + +-+----+-+ + +-------+ ++-------+ | | +---------+ +|cFDA | |{c} | |eat cFF8 + +|wake up+-->+hungry?+--->|breakfast| +| {o} | | cDBF |Y +----+----+ ++-------+ | | | + +---+---+ v + |N +-----------+ + +------->| save c9FB | + | planet{mo}| + +-----------+ + + /-----------------------\ + | ditaa | + | /- /\ +\/+ +\ | +- | + | \\ ++ |\/| +/ | +- | + | -/ || | | | +- +- | + | cDEF {o} | + \-----------------------/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gsa...@us...> - 2010-10-20 14:23:31
|
Revision: 354 http://stdair.svn.sourceforge.net/stdair/?rev=354&view=rev Author: gsabatier Date: 2010-10-20 14:23:22 +0000 (Wed, 20 Oct 2010) Log Message: ----------- First step in tutorial writting Modified Paths: -------------- trunk/stdair/doc/local/users_guide.doc trunk/stdair/doc/tutorial/sources.mk trunk/stdair/doc/tutorial/src/sources.mk trunk/stdair/doc/tutorial/tutorial.doc Added Paths: ----------- trunk/stdair/doc/tutorial/completeex.doc trunk/stdair/doc/tutorial/invobject.doc trunk/stdair/doc/tutorial/rootinvobject.doc trunk/stdair/doc/tutorial/rootobject.doc trunk/stdair/doc/tutorial/src/completeex.cpp trunk/stdair/doc/tutorial/src/completeex.ref trunk/stdair/doc/tutorial/src/invobject.cpp trunk/stdair/doc/tutorial/src/invobject.ref trunk/stdair/doc/tutorial/src/rootinvobject.cpp trunk/stdair/doc/tutorial/src/rootinvobject.ref trunk/stdair/doc/tutorial/src/rootobject.cpp trunk/stdair/doc/tutorial/src/rootobject.ref Removed Paths: ------------- trunk/stdair/doc/tutorial/bpsk.doc trunk/stdair/doc/tutorial/convcode.doc trunk/stdair/doc/tutorial/interleaver.doc trunk/stdair/doc/tutorial/itfile.doc trunk/stdair/doc/tutorial/ldpc_bersim_awgn.doc trunk/stdair/doc/tutorial/ldpc_gen_codes.doc trunk/stdair/doc/tutorial/matlab_itpp.doc trunk/stdair/doc/tutorial/mimoconv.doc trunk/stdair/doc/tutorial/mog.doc trunk/stdair/doc/tutorial/qpsk_simulation.doc trunk/stdair/doc/tutorial/rayleigh.doc trunk/stdair/doc/tutorial/reedsolomon.doc trunk/stdair/doc/tutorial/spread.doc trunk/stdair/doc/tutorial/src/bpsk.cpp trunk/stdair/doc/tutorial/src/bpsk.ref trunk/stdair/doc/tutorial/src/convcode.cpp trunk/stdair/doc/tutorial/src/convcode.ref trunk/stdair/doc/tutorial/src/interleaver.cpp trunk/stdair/doc/tutorial/src/interleaver.ref trunk/stdair/doc/tutorial/src/ldpc_bersim_awgn.cpp trunk/stdair/doc/tutorial/src/ldpc_gen_codes.cpp trunk/stdair/doc/tutorial/src/mimoconv.cpp trunk/stdair/doc/tutorial/src/mog.cpp trunk/stdair/doc/tutorial/src/qpsk_simulation.cpp trunk/stdair/doc/tutorial/src/qpsk_simulation.ref trunk/stdair/doc/tutorial/src/rayleigh.cpp trunk/stdair/doc/tutorial/src/read_it_file.cpp trunk/stdair/doc/tutorial/src/reedsolomon.cpp trunk/stdair/doc/tutorial/src/reedsolomon.ref trunk/stdair/doc/tutorial/src/spread.cpp trunk/stdair/doc/tutorial/src/spread.ref trunk/stdair/doc/tutorial/src/timer.cpp trunk/stdair/doc/tutorial/src/timer.ref trunk/stdair/doc/tutorial/src/vector_and_matrix.cpp trunk/stdair/doc/tutorial/src/vector_and_matrix.ref trunk/stdair/doc/tutorial/src/write_it_file.cpp trunk/stdair/doc/tutorial/timer.doc trunk/stdair/doc/tutorial/vector_and_matrix.doc Modified: trunk/stdair/doc/local/users_guide.doc =================================================================== --- trunk/stdair/doc/local/users_guide.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/local/users_guide.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -27,14 +27,11 @@ \section introduction Introduction -The \c itbase library is the core of \c IT++ and it contains classes and -functions for mathematics with scalars, vectors, and matrices. This document -does not cover all the aspects of the \c itbase library. It does however -explain the most important things you need to know in order to start using -IT++. Once you are more familiar with the \c itbase library you will find -the online reference manual more useful. +The \c StdAir library contains classes for airline business management. +This document does not cover all the aspects of the \c StdAir library. It +does however explain the most important things you need to know in order + to start using \c StdAir. - \section predefined_types Predefined Data Types Deleted: trunk/stdair/doc/tutorial/bpsk.doc =================================================================== --- trunk/stdair/doc/tutorial/bpsk.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/bpsk.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -1,15 +0,0 @@ -/*! -\page bpsk BPSK modulation over an AWGN channel - -As a first example we will generate a sequence of 500000 random bits {0,1} and -BPSK modulate these. Thereafter the BPSK signals will be transmitted over -an AWGN channel with a signal-to-noise ratio \f$E_b/N_0 = 0\f$ dB. The received signal -is then decoded and the number of bit errors are calculated. - -\include bpsk.cpp - -When you run this program, the output will look something like this: - -\include bpsk.ref - -*/ Added: trunk/stdair/doc/tutorial/completeex.doc =================================================================== --- trunk/stdair/doc/tutorial/completeex.doc (rev 0) +++ trunk/stdair/doc/tutorial/completeex.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -0,0 +1,12 @@ +/*! +\page completeex Constructing a complete Bom tree + +In this example we are constructing a complete Bom tree: + +\include completeex.cpp + +When you run this program, the output will look: + +\include completeex.ref + +*/ Deleted: trunk/stdair/doc/tutorial/convcode.doc =================================================================== --- trunk/stdair/doc/tutorial/convcode.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/convcode.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -1,12 +0,0 @@ -/*! -\page convcode Simulation of a convolutional encoder and decoder - -In this example we will show how to use the convolutional encoder/decoder class in it++. The Viterbi decoder uses the soft received values. - -\include convcode.cpp - -When you run this program, the output will look something like this: - -\include convcode.ref - -*/ Deleted: trunk/stdair/doc/tutorial/interleaver.doc =================================================================== --- trunk/stdair/doc/tutorial/interleaver.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/interleaver.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -1,12 +0,0 @@ -/*! -\page interleaver Interleaving and de-interleaving of data - -This example shows how to use one of the interleaving classes. - -\include interleaver.cpp - -When you run this program, the output will look like this: - -\include interleaver.ref - -*/ Added: trunk/stdair/doc/tutorial/invobject.doc =================================================================== --- trunk/stdair/doc/tutorial/invobject.doc (rev 0) +++ trunk/stdair/doc/tutorial/invobject.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -0,0 +1,12 @@ +/*! +\page invobject Creating an Inventory object + +In this example we are constructing an airline inventory whose code is "BA": + +\include invobject.cpp + +When you run this program, the output will look: + +\include invobject.ref + +*/ Deleted: trunk/stdair/doc/tutorial/itfile.doc =================================================================== --- trunk/stdair/doc/tutorial/itfile.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/itfile.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -1,34 +0,0 @@ -/*! -\page itfile Writing and reading data from files - -Here we will use the \c it_file class to store some data. The program \c -write_it_file.cpp looks as follows: - -\include write_it_file.cpp - -When you run this program you will obtain a file called \c it_file_test.it -in your current directory. You can read the file into Matlab/Octave to view -the data by using the following commands: - -\code -itload('it_file_test.it') -figure(1); clf; -plot(a) -\endcode - -Note: Make sure that <tt>$PREFIX/share/itpp</tt> is in your Matlab/Octave -path and that you run the code above from the directory where \c -it_file_test.it is located (\c $PREFIX is the IT++ installation prefix; -<tt>/usr/local</tt> by default). - -The IT++ program \c read_it_file.cpp that reads the file and prints its -content can look like this: - -\include read_it_file.cpp - -Here is the output of the program: - -\verbatim -a = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] -\endverbatim -*/ Deleted: trunk/stdair/doc/tutorial/ldpc_bersim_awgn.doc =================================================================== --- trunk/stdair/doc/tutorial/ldpc_bersim_awgn.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/ldpc_bersim_awgn.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -1,16 +0,0 @@ -/*! -\page ldpc_bersim_awgn Simulation of LDPC codes the AWGN channel - -This program simulates the performance of LDPC codes on the AWGN channel. Since the channel is symmetric, the zero codeword is used. - -\include ldpc_bersim_awgn.cpp -To simulate the code "RU_10000.it" over a range of SNR (see \ref ldpc_gen_codes for how to generate codec) -\code -./ldpc_bersim_awgn RU_10000.it -\endcode - -To simulate at Eb/N0=1.1 dB -\code -./ldpc_bersim_awgn RU_10000.it 1.1 -\endcode -*/ Deleted: trunk/stdair/doc/tutorial/ldpc_gen_codes.doc =================================================================== --- trunk/stdair/doc/tutorial/ldpc_gen_codes.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/ldpc_gen_codes.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -1,6 +0,0 @@ -/*! -\page ldpc_gen_codes Generation of LDPC codes - -\include ldpc_gen_codes.cpp - -*/ Deleted: trunk/stdair/doc/tutorial/matlab_itpp.doc =================================================================== --- trunk/stdair/doc/tutorial/matlab_itpp.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/matlab_itpp.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -1,89 +0,0 @@ -/*! -\page matlab_itpp Conversion table between IT++ syntax and Matlab/Octave - -Here we provide a conversion table between Matlab/Octave and IT++ -syntax. This table is intended to help with the transition from -Matlab/Octave programming to IT++, but it is not an exhaustive list of -possible operations. - -<br><br> -In what follows, -<ul> -<li>a, b denote vectors (assumed to be column vectors in Matlab/Octave notation),</li> -<li>A, B denote matrices, </li> -<li>x is a scalar,</li> -<li>k, l, n are indices</li> -</ul> -<br> -<b>Vector indexing and manipulation:</b> -\code -a.length() // length(a) -a(0) // a(1) -a(1) // a(2) -a(k-1) // a(k) -a(k-1)=x; or a.set(k-1,x); // a(k)=x; -a.left(k) // a(1:k) -a.right(k) // a(end-k+1:end) -a.mid(k,l) // a(k:k+l-1) -a.del(k); // a=[a(1:k-1); a(k+1:end)]; -concat(a,b) // [a; b] (or [a.' b.'].') -a.clear(); // a=zeros(size(a)); (or a=complex(zeros(size(a)));) -to_cmat(a) // complex(a) (assuming a real-valued) -\endcode -Note that indexing in IT++ starts at 0, whereas indexing in Matlab starts at 1. Also -note that Matlab/Octave does distinguish between column and row -vectors, whereas IT++ does not. -<br><br> -<b>Matrix indexing and manipulation:</b> -\code -A.rows() // size(A,1) -A.cols() // size(A,2) -A(k-1,l-1) // A(k,l) -A.set(k-1,l-1,x); // A(k,l)=x; -A.get_col(k-1) // A(:,k) -A.get_row(k-1) // A(k,:) -A.set_col(k-1,a); // A(:,k)=a; -A.set_row(k-1,a); // A(k,:)=a; -A.append_row(a); // A=[A; a.']; -A.append_col(a); // A=[A a]; -A.transpose() // A.' -A.hermitian_transpose() // A' -A.clear(); // A=zeros(size(A)); (or A=complex(zeros(size(A)));) -to_cmat(A) // complex(A) (assuming a real-valued) -\endcode -<br><br> -<b>Some vector and matrix algebra:</b> -\code -a+b // a+b -a-b // a-b -elem_mult(a,b) // a.*b (elementwise product) -a*b // a.'*b (inner product) -conj(a)*b // a'*b (inner product) -outer_product(a,b) // a*b.' (outer product) -elem_div(a,b) // a./b -A+B; // A+B; -A-B; // A-B; -A*B; // A*B; -elem_mul(A,B) // A.*B -elem_div(A,B) // A./B -A\b; // ls_solve_od(A,b); (assuming the system is overdetermined) -\endcode -<br><br> -<b>Special matrices and vectors:</b> -\code -zeros(n,n) // zeros(n,n) -zeros_c(n,n) // complex(zeros(n,n)) -eye(n) // eye(n) -eye_c(n) // complex(eye(n)) -linspace(alpha,beta,n) // linspace(alpha,beta,n) -\endcode -<br><br> -<b>Hardcoded initializations:</b> -\code -mat X="1.1 1.2; 2.1; 2.2"; // X=[1.1 1.2; 2.1 2.2]; -ivec a="1 2 3 4 5"; // a=[1; 2; 3; 4; 5]; (or a=[1 2 3 4 5].';) -ivec a="1:-3:-8"; // a=1:-3:-8; -\endcode - - -*/ Deleted: trunk/stdair/doc/tutorial/mimoconv.doc =================================================================== --- trunk/stdair/doc/tutorial/mimoconv.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/mimoconv.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -1,24 +0,0 @@ -/*! -\page mimoconv MIMO (spatial multiplexing) with convolutional coding - -This example demonstrates how to use the \c Modulator_ND (MIMO) class -for soft-output demodulation. The program simulates a simple -convolutionally coded spatial-multiplexing (V-BLAST style) MIMO system -with maximum-likelihood, alternatively zero-forcing, demodulation and -soft Viterbi decoding, but no iteration between the demodulator and -the decoder. - -\include mimoconv.cpp - -To run the program, - -\code -mimoconv nTx nRx nC Tc -\endcode -where -- nTx=number of transmit antennas -- nRx=number of receive antennas -- nC=constellation (1=QPSK, 2=16-QAM, 3=64-QAM) -- Tc=coherence time (channel uses) - -*/ Deleted: trunk/stdair/doc/tutorial/mog.doc =================================================================== --- trunk/stdair/doc/tutorial/mog.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/mog.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -1,11 +0,0 @@ -/*! -\page mog Using Mixture of Gaussians (MOG) module to model data - -This example demonstrates how to find the parameters of -a MOG model via using the kmeans and EM based optimisers. -Synthetic data is utilised. - -\include mog.cpp - - -*/ Deleted: trunk/stdair/doc/tutorial/qpsk_simulation.doc =================================================================== --- trunk/stdair/doc/tutorial/qpsk_simulation.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/qpsk_simulation.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -1,32 +0,0 @@ -/*! -\page qpsk_simulation Simulation of QPSK modulation on an AWGN channel - -In this example we will introduce a few new features compared to the BPSK example. We will use the it_ifile class to store the results of the simulation. We will use the Real_Timer class to measure the execution time of our program. Furthermore we will use one of the channel classes, the AWGN_Channel. We will also show how to read the results in to Matlab with the load_it function. The program is as follows: - -\include qpsk_simulation.cpp - -When you run this program, the output will look something like this: - -\include qpsk_simulation.ref - -Now it is time to plot the simulation results in Matlab and compare with theory using the Matlab code below. -The results will be stored in a file called "qpsk_result_file.it". Make sure load_it.m is in your Matlab path -(look in $(ITXX_HOME)/matlab) and that you run the example code below from the directory where qpsk_result_file.it is located - -\code -figure(1); clf; -load_it qpsk_result_file.it -h1 = semilogy(EbN0dB,ber,'*-r'); hold on -ebn0db = 0:.1:10; -ebn0 = 10.^(ebn0db/10); -Pb = 0.5 * erfc(sqrt(ebn0)); -h2 = semilogy(ebn0db,Pb); -set(gca,'fontname','times','fontsize',16); -xlabel('{\it E_b} / {\it N}_0 [dB]'); -ylabel('BER') -title('QPSK on an AWGN Channel'); -legend([h1 h2],'Simulation','Theory'); -grid on; -\endcode - -*/ Deleted: trunk/stdair/doc/tutorial/rayleigh.doc =================================================================== --- trunk/stdair/doc/tutorial/rayleigh.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/rayleigh.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -1,24 +0,0 @@ -/*! -\page rayleigh Generating a correlated Rayleigh fading process - -In this example we will generate a correlated Rayleigh fading process with a -normaized Doppler frequency equal to 0.1. The normalized Doppler is defined -as the multiplication of the maximum Doppler frequency by the sampling time -(i.e. \f$f_d = F_d T_s\f$). - -\include rayleigh.cpp - -You can use Matlab or Octave to examine the channel fading process that is -stored int the output file \c rayleigh_test.it. Try the followigh code to -view a part of the fading process: - -\code -itload("rayleigh_test.it") -figure(1); clf; -semilogy(abs(ch_coeffs(1:200))) -\endcode - -Note: Make sure that the folder <tt>$PREFIX/share/itpp</tt> is included your -Matlab/Octave path variable (\c $PREFIX is the IT++ installation prefix: -<tt>/usr/local</tt> by default). -*/ Deleted: trunk/stdair/doc/tutorial/reedsolomon.doc =================================================================== --- trunk/stdair/doc/tutorial/reedsolomon.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/reedsolomon.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -1,12 +0,0 @@ -/*! -\page reedsolomon Simulation of a Reed-Solomon Block Code - -A Reed-Solomon code is a \f$q^m\f$-ary BCH code of length \f$q^m-1\f$. The generator polynomial for a \f$t\f$-error correcting code is \f$g(x) = (x-\alpha) (x-\alpha^1) \ldots (x-\alpha^{2t-1})\f$. The decoder uses the Berlkamp-Massey algorithm for decoding as described in: S. B. Wicker, "Error Control Systems for digital communication and storage," Prentice Hall. The following example simulates a binary (i.e. \f$q=2\f$) Reed-Solomon code with parameters \f$m\f$ and \f$t\f$: - -\include reedsolomon.cpp - -A typical run of this program can look like this: - -\include reedsolomon.ref - -*/ Added: trunk/stdair/doc/tutorial/rootinvobject.doc =================================================================== --- trunk/stdair/doc/tutorial/rootinvobject.doc (rev 0) +++ trunk/stdair/doc/tutorial/rootinvobject.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -0,0 +1,12 @@ +/*! +\page rootinvobject Linking an inventory object with the Bom root object + +In this example we are linking an airline inventory whose code is "BA" with the Bom root object. + +\include rootinvobject.cpp + +When you run this program, the output will look: + +\include rootinvobject.ref + +*/ Added: trunk/stdair/doc/tutorial/rootobject.doc =================================================================== --- trunk/stdair/doc/tutorial/rootobject.doc (rev 0) +++ trunk/stdair/doc/tutorial/rootobject.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -0,0 +1,12 @@ +/*! +\page rootobject Creating a Bom root object + +In this example we are constructing a Bom root object (i,e a root for all classes in the project): + +\include rootobject.cpp + +When you run this program, the output will look: + +\include rootobject.ref + +*/ Modified: trunk/stdair/doc/tutorial/sources.mk =================================================================== --- trunk/stdair/doc/tutorial/sources.mk 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/sources.mk 2010-10-20 14:23:22 UTC (rev 354) @@ -1,17 +1,5 @@ doc_tutorial_sources = \ - $(top_srcdir)/doc/tutorial/bpsk.doc \ - $(top_srcdir)/doc/tutorial/convcode.doc \ - $(top_srcdir)/doc/tutorial/interleaver.doc \ - $(top_srcdir)/doc/tutorial/itfile.doc \ - $(top_srcdir)/doc/tutorial/qpsk_simulation.doc \ - $(top_srcdir)/doc/tutorial/rayleigh.doc \ - $(top_srcdir)/doc/tutorial/reedsolomon.doc \ - $(top_srcdir)/doc/tutorial/spread.doc \ - $(top_srcdir)/doc/tutorial/timer.doc \ - $(top_srcdir)/doc/tutorial/tutorial.doc \ - $(top_srcdir)/doc/tutorial/vector_and_matrix.doc \ - $(top_srcdir)/doc/tutorial/mimoconv.doc \ - $(top_srcdir)/doc/tutorial/matlab_itpp.doc \ - $(top_srcdir)/doc/tutorial/mog.doc \ - $(top_srcdir)/doc/tutorial/ldpc_gen_codes.doc \ - $(top_srcdir)/doc/tutorial/ldpc_bersim_awgn.doc + $(top_srcdir)/doc/tutorial/invobject.doc \ + $(top_srcdir)/doc/tutorial/rootobject.doc \ + $(top_srcdir)/doc/tutorial/rootinvobject.doc \ + $(top_srcdir)/doc/tutorial/completeex.doc Deleted: trunk/stdair/doc/tutorial/spread.doc =================================================================== --- trunk/stdair/doc/tutorial/spread.doc 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/spread.doc 2010-10-20 14:23:22 UTC (rev 354) @@ -1,14 +0,0 @@ -/*! -\page spread Simulation of a Multicode CDMA system on an AWGN channel - -In this example we will introduce the multi-code spreading class \c Multicode_Spread_2d. This is the most general spreading class availiable in it++. Different spreading codes may be assigned to the I and Q branches. The number of multiple spreading codes and the spreading factor is determined by the number of rows and collumns respectively that is used when calling the member function set_codes. In this example we will use four Hadamard sequenced of length four, and the same spreading sequences will be used for the I and Q brances. - -\include spread.cpp - -A typical run of this program will look like this: - -\include spread.ref - -Use copy-and-paste to insert the variables \c EbN0dB and \c ber into Matlab and plot the result. - -*/ Deleted: trunk/stdair/doc/tutorial/src/bpsk.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/bpsk.cpp 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/src/bpsk.cpp 2010-10-20 14:23:22 UTC (rev 354) @@ -1,54 +0,0 @@ -#include <itpp/itcomm.h> - -using namespace itpp; - -//These lines are needed for use of cout and endl -using std::cout; -using std::endl; - -int main() -{ - //Scalars - int N; - double N0; - - //Vectors - bvec bits, dec_bits; - vec symbols, rec; - - //Classes - BPSK bpsk; //The BPSK modulator/debodulator class - BERC berc; //The Bit Error Rate Counter class - - //Init - N = 500000; //The number of bits to simulate - N0 = 1; //0 dB SNR - - //Randomize the random number generator - RNG_randomize(); - - //Generate the bits: - bits = randb(N); - - //Do the BPSK modulation - bpsk.modulate_bits(bits, symbols); - - //Add the AWGN - rec = symbols + sqrt(N0/2)* randn(N); - - //Decode the received bits - bpsk.demodulate_bits(rec, dec_bits); - - //Count the number of errors - berc.count(bits,dec_bits); - - //Print the results - cout << "There were " << berc.get_errors() << " received bits in error." << endl; - cout << "There were " << berc.get_corrects() << " correctly received bits." << endl; - cout << "The error probability was " << berc.get_errorrate() << endl; - cout << "The theoretical error probability is " << 0.5*erfc(1.0) << endl; - - //Exit program: - return 0; - -} Deleted: trunk/stdair/doc/tutorial/src/bpsk.ref =================================================================== --- trunk/stdair/doc/tutorial/src/bpsk.ref 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/src/bpsk.ref 2010-10-20 14:23:22 UTC (rev 354) @@ -1,4 +0,0 @@ -There were 39224 received bits in error. -There were 460776 correctly received bits. -The error probability was 0.078448 -The theoretical error probability is 0.0786496 Added: trunk/stdair/doc/tutorial/src/completeex.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/completeex.cpp (rev 0) +++ trunk/stdair/doc/tutorial/src/completeex.cpp 2010-10-20 14:23:22 UTC (rev 354) @@ -0,0 +1,328 @@ +// StdAir +#include <stdair/bom/BomManager.hpp> +#include <stdair/bom/BomRoot.hpp> +#include <stdair/bom/Inventory.hpp> +#include <stdair/bom/InventoryTypes.hpp> +#include <stdair/bom/FlightDate.hpp> +#include <stdair/bom/FlightDateTypes.hpp> +#include <stdair/bom/LegDate.hpp> +#include <stdair/bom/LegDateTypes.hpp> +#include <stdair/bom/LegCabin.hpp> +#include <stdair/bom/LegCabinTypes.hpp> +#include <stdair/bom/SegmentDate.hpp> +#include <stdair/bom/SegmentDateTypes.hpp> +#include <stdair/bom/SegmentCabin.hpp> +#include <stdair/bom/SegmentCabinTypes.hpp> +#include <stdair/bom/FareFamily.hpp> +#include <stdair/bom/FareFamilyTypes.hpp> +#include <stdair/bom/BookingClass.hpp> +#include <stdair/bom/BookingClassTypes.hpp> +#include <stdair/factory/FacBomManager.hpp> + +//These lines are needed for use of cout and endl +using std::cout; +using std::endl; + +int main() +{ + // ///////////// Step 0.0: Initialisation //////////// + // Create the root of the Bom tree (i.e., a BomRoot object) + stdair::BomRoot& lBomRoot = + stdair::FacBom<stdair::BomRoot>::instance().create(); + + // Step 0.1: Inventory level + // Create an Inventory for BA + const stdair::InventoryKey lBAKey ("BA"); + stdair::Inventory& lBAInv = + stdair::FacBom<stdair::Inventory>::instance().create (lBAKey); + stdair::FacBomManager::instance().addToList (lBomRoot, lBAInv); + + // Create an Inventory for AF + const stdair::InventoryKey lAFKey ("AF"); + stdair::Inventory& lAFInv = + stdair::FacBom<stdair::Inventory>::instance().create (lAFKey); + stdair::FacBomManager::instance().addToList (lBomRoot, lAFInv); + + // ////// BA /////// + // Step 0.2: Flight-date level + // Create a FlightDate (BA15/10-JUN-2010) for BA's Inventory + stdair::FlightNumber_T lFlightNumber = 15; + stdair::Date_T lDate (2010, 6, 10); + stdair::FlightDateKey lFlightDateKey (lFlightNumber, lDate); + + stdair::FlightDate& lBA15_20100610_FD = + stdair::FacBom<stdair::FlightDate>::instance().create (lFlightDateKey); + stdair::FacBomManager::instance().addToList (lBAInv, lBA15_20100610_FD); + + // Step 0.3: Segment-date level + // Create a first SegmentDate (LHR-SYD) for BA's Inventory + const stdair::AirportCode_T lLHR ("LHR"); + const stdair::AirportCode_T lSYD ("SYD"); + stdair::SegmentDateKey lSegmentDateKey (lLHR, lSYD); + + stdair::SegmentDate& lLHRSYDSegment = + stdair::FacBom<stdair::SegmentDate>::instance().create (lSegmentDateKey); + stdair::FacBomManager::instance().addToList (lBA15_20100610_FD, + lLHRSYDSegment); + + // Create a second SegmentDate (LHR-BKK) for BA's Inventory + const stdair::AirportCode_T lBKK ("BKK"); + lSegmentDateKey = stdair::SegmentDateKey (lLHR, lBKK); + + stdair::SegmentDate& lLHRBKKSegment = + stdair::FacBom<stdair::SegmentDate>::instance().create (lSegmentDateKey); + stdair::FacBomManager::instance().addToList (lBA15_20100610_FD, + lLHRBKKSegment); + + // Create a third SegmentDate (BKK-SYD) for BA's Inventory + lSegmentDateKey = stdair::SegmentDateKey (lBKK, lSYD); + + stdair::SegmentDate& lBKKSYDSegment = + stdair::FacBom<stdair::SegmentDate>::instance().create (lSegmentDateKey); + stdair::FacBomManager::instance().addToList (lBA15_20100610_FD, + lBKKSYDSegment); + + // Step 0.4: Leg-date level + // Create a first LegDate (LHR) for BA's Inventory + stdair::LegDateKey lLegDateKey (lLHR); + + stdair::LegDate& lLHRLeg = + stdair::FacBom<stdair::LegDate>::instance().create (lLegDateKey); + stdair::FacBomManager::instance().addToList (lBA15_20100610_FD, lLHRLeg); + + // Create a second LegDate (BKK) + lLegDateKey = stdair::LegDateKey (lBKK); + + stdair::LegDate& lBKKLeg = + stdair::FacBom<stdair::LegDate>::instance().create (lLegDateKey); + stdair::FacBomManager::instance().addToList (lBA15_20100610_FD, lBKKLeg); + + // Step 0.5: segment-cabin level + // Create a SegmentCabin (Y) for the Segment LHR-BKK of BA's Inventory + const stdair::CabinCode_T lY ("Y"); + stdair::SegmentCabinKey lYSegmentCabinKey (lY); + + stdair::SegmentCabin& lLHRBKKSegmentYCabin = + stdair::FacBom<stdair::SegmentCabin>::instance().create(lYSegmentCabinKey); + stdair::FacBomManager::instance().addToList (lLHRBKKSegment, + lLHRBKKSegmentYCabin); + + // Create a SegmentCabin (Y) of the Segment BKK-SYD; + stdair::SegmentCabin& lBKKSYDSegmentYCabin = + stdair::FacBom<stdair::SegmentCabin>::instance().create(lYSegmentCabinKey); + stdair::FacBomManager::instance().addToList (lBKKSYDSegment, + lBKKSYDSegmentYCabin); + + // Create a SegmentCabin (Y) of the Segment LHR-SYD; + stdair::SegmentCabin& lLHRSYDSegmentYCabin = + stdair::FacBom<stdair::SegmentCabin>::instance().create(lYSegmentCabinKey); + stdair::FacBomManager::instance().addToList (lLHRSYDSegment, + lLHRSYDSegmentYCabin); + + // Step 0.6: leg-cabin level + // Create a LegCabin (Y) for the Leg LHR-BKK on BA's Inventory + stdair::LegCabinKey lYLegCabinKey (lY); + + stdair::LegCabin& lLHRLegYCabin = + stdair::FacBom<stdair::LegCabin>::instance().create (lYLegCabinKey); + stdair::FacBomManager::instance().addToList (lLHRLeg, lLHRLegYCabin); + + // Create a LegCabin (Y) for the Leg BKK-SYD + stdair::LegCabin& lBKKLegYCabin = + stdair::FacBom<stdair::LegCabin>::instance().create (lYLegCabinKey); + stdair::FacBomManager::instance().addToList (lBKKLeg, lBKKLegYCabin); + + // Step 0.7: fare family level + // Create a FareFamily (1) for the Segment LHR-BKK, cabin Y on BA's Inv + const stdair::FamilyCode_T l1 ("1"); + stdair::FareFamilyKey l1FareFamilyKey (l1); + + stdair::FareFamily& lLHRBKKSegmentYCabin1Family = + stdair::FacBom<stdair::FareFamily>::instance().create(l1FareFamilyKey); + stdair::FacBomManager::instance().addToList (lLHRBKKSegmentYCabin, + lLHRBKKSegmentYCabin1Family); + + // Create a FareFamily (1) for the Segment BKK-SYD, cabin Y on BA's Inv + stdair::FareFamily& lBKKSYDSegmentYCabin1Family = + stdair::FacBom<stdair::FareFamily>::instance().create(l1FareFamilyKey); + stdair::FacBomManager::instance().addToList (lBKKSYDSegmentYCabin, + lBKKSYDSegmentYCabin1Family); + + // Create a FareFamily (1) for the Segment LHR-SYD, cabin Y on BA's Inv + stdair::FareFamily& lLHRSYDSegmentYCabin1Family = + stdair::FacBom<stdair::FareFamily>::instance().create(l1FareFamilyKey); + stdair::FacBomManager::instance().addToList (lLHRSYDSegmentYCabin, + lLHRSYDSegmentYCabin1Family); + + // Step 0.8: booking class level + // Create a BookingClass (Q) for the Segment LHR-BKK, cabin Y, fare family 1 on BA's Inv + const stdair::ClassCode_T lQ ("Q"); + stdair::BookingClassKey lQBookingClassKey (lQ); + + stdair::BookingClass& lLHRBKKSegmentYCabin1FamilyQClass = + stdair::FacBom<stdair::BookingClass>::instance().create(lQBookingClassKey); + stdair::FacBomManager::instance().addToList (lLHRBKKSegmentYCabin1Family, + lLHRBKKSegmentYCabin1FamilyQClass); + + // Create a BookingClass (Q) for the Segment BKK-SYD, cabin Y, fare family 1 on BA's Inv + stdair::BookingClass& lBKKSYDSegmentYCabin1FamilyQClass = + stdair::FacBom<stdair::BookingClass>::instance().create(lQBookingClassKey); + stdair::FacBomManager::instance().addToList (lBKKSYDSegmentYCabin1Family, + lBKKSYDSegmentYCabin1FamilyQClass); + + // Create a BookingClass (Q) for the Segment LHR-SYD, cabin Y, fare family 1 on BA's Inv + stdair::BookingClass& lLHRSYDSegmentYCabin1FamilyQClass = + stdair::FacBom<stdair::BookingClass>::instance().create(lQBookingClassKey); + stdair::FacBomManager::instance().addToList (lLHRSYDSegmentYCabin1Family, + lLHRSYDSegmentYCabin1FamilyQClass); + + // ////// AF /////// + // Step 0.2: Flight-date level + // Create a FlightDate (AF102/20-MAR-2010) for AF's Inventory + lFlightNumber = 102; + lDate = stdair::Date_T (2010, 3, 20); + lFlightDateKey = stdair::FlightDateKey (lFlightNumber, lDate); + + stdair::FlightDate& lAF102_20100320_FD = + stdair::FacBom<stdair::FlightDate>::instance().create (lFlightDateKey); + stdair::FacBomManager::instance().addToList (lAFInv, lAF102_20100320_FD); + + // Step 0.3: Segment-date level + // Create a SegmentDate (CDG-SFO) for AF's Inventory + const stdair::AirportCode_T lCDG ("CDG"); + const stdair::AirportCode_T lSFO ("SFO"); + lSegmentDateKey = stdair::SegmentDateKey (lCDG, lSFO); + + stdair::SegmentDate& lCDGSFOSegment = + stdair::FacBom<stdair::SegmentDate>::instance().create (lSegmentDateKey); + stdair::FacBomManager::instance().addToList (lAF102_20100320_FD, + lCDGSFOSegment); + + // Step 0.4: Leg-date level + // Create a LegDate (CDG) for AF's Inventory + lLegDateKey = stdair::LegDateKey (lCDG); + + stdair::LegDate& lCDGLeg = + stdair::FacBom<stdair::LegDate>::instance().create (lLegDateKey); + stdair::FacBomManager::instance().addToList (lAF102_20100320_FD, lCDGLeg); + + // Step 0.5: segment-cabin level + // Create a SegmentCabin (Y) for the Segment CDG-SFO of AF's Inventory + stdair::SegmentCabin& lCDGSFOSegmentYCabin = + stdair::FacBom<stdair::SegmentCabin>::instance().create(lYSegmentCabinKey); + stdair::FacBomManager::instance().addToList (lCDGSFOSegment, + lCDGSFOSegmentYCabin); + + // Step 0.6: leg-cabin level + // Create a LegCabin (Y) for the Leg CDG-SFO on AF's Inventory + stdair::LegCabin& lCDGLegYCabin = + stdair::FacBom<stdair::LegCabin>::instance().create (lYLegCabinKey); + stdair::FacBomManager::instance().addToList (lCDGLeg, lCDGLegYCabin); + + // Step 0.7: fare family level + // Create a fareFamily (1) for the Segment CDG-SFO, cabin Y on AF's Inv + stdair::FareFamily& lCDGSFOSegmentYCabin1Family = + stdair::FacBom<stdair::FareFamily>::instance().create(l1FareFamilyKey); + stdair::FacBomManager::instance().addToList (lCDGSFOSegmentYCabin, + lCDGSFOSegmentYCabin1Family); + + // Step 0.8: booking class level + // Create a BookingClass (Q) for the Segment CDG-SFO, cabin Y, fare family 1 on AF's Inv + stdair::BookingClass& lCDGSFOSegmentYCabin1FamilyQClass = + stdair::FacBom<stdair::BookingClass>::instance().create(lQBookingClassKey); + stdair::FacBomManager::instance().addToList (lCDGSFOSegmentYCabin1Family, + lCDGSFOSegmentYCabin1FamilyQClass); + + + // /////////// Step 1.0: Display the BOM tree ////////// + // 1.0. Bom root level + cout << lBomRoot.describeKey() << endl; + + // 1.1. Inventory level + const stdair::InventoryList_T& lInventoryList = + stdair::BomManager::getList<stdair::Inventory> (lBomRoot); + for (stdair::InventoryList_T::const_iterator itInv = lInventoryList.begin(); + itInv != lInventoryList.end(); ++itInv) { + const stdair::Inventory* lInv_ptr = *itInv; + + cout << " " <<lInv_ptr->describeKey() << endl; + + // 1.2. FlightDate level + const stdair::FlightDateList_T& lFlightDateList = + stdair::BomManager::getList<stdair::FlightDate> (*lInv_ptr); + for (stdair::FlightDateList_T::const_iterator itFD=lFlightDateList.begin(); + itFD != lFlightDateList.end(); ++itFD) { + const stdair::FlightDate* lFD_ptr = *itFD; + + cout << " " << lFD_ptr->toString() << endl; + + // 1.4. LegDate level + const stdair::LegDateList_T& lLegDateList = + stdair::BomManager::getList<stdair::LegDate> (*lFD_ptr); + for (stdair::LegDateList_T::const_iterator itLD = + lLegDateList.begin(); + itLD != lLegDateList.end(); ++itLD) { + const stdair::LegDate* lLD_ptr = *itLD; + + cout << " " << lLD_ptr->toString() << endl; + + // 1.6. LegCabin level + const stdair::LegCabinList_T& lLegCabinList = + stdair::BomManager::getList<stdair::LegCabin> (*lLD_ptr); + for (stdair::LegCabinList_T::const_iterator itLC = + lLegCabinList.begin(); + itLC != lLegCabinList.end(); ++itLC) { + const stdair::LegCabin* lLC_ptr = *itLC; + + cout << " " << lLC_ptr->toString() << endl; + } + } + + // 1.3. SegmentDate level + const stdair::SegmentDateList_T& lSegmentDateList = + stdair::BomManager::getList<stdair::SegmentDate> (*lFD_ptr); + for (stdair::SegmentDateList_T::const_iterator itSD = + lSegmentDateList.begin(); + itSD != lSegmentDateList.end(); ++itSD) { + const stdair::SegmentDate* lSD_ptr = *itSD; + + cout << " " << lSD_ptr->toString() << endl; + + // 1.5. SegmentCabin level + const stdair::SegmentCabinList_T& lSegmentCabinList = + stdair::BomManager::getList<stdair::SegmentCabin> (*lSD_ptr); + for (stdair::SegmentCabinList_T::const_iterator itSC = + lSegmentCabinList.begin(); + itSC != lSegmentCabinList.end(); ++itSC) { + const stdair::SegmentCabin* lSC_ptr = *itSC; + + cout << " " << lSC_ptr->toString() << endl; + + // 1.7. FareFamily level + const stdair::FareFamilyList_T& lFareFamilyList = + stdair::BomManager::getList<stdair::FareFamily> (*lSC_ptr); + for (stdair::FareFamilyList_T::const_iterator itFF = + lFareFamilyList.begin(); + itFF != lFareFamilyList.end(); ++itFF) { + const stdair::FareFamily* lFF_ptr = *itFF; + + cout << " " << lFF_ptr->toString() << endl; + + // 1.8. BookingClass level + const stdair::BookingClassList_T& lBookingClassList = + stdair::BomManager::getList<stdair::BookingClass> (*lFF_ptr); + for (stdair::BookingClassList_T::const_iterator itBC = + lBookingClassList.begin(); + itBC != lBookingClassList.end(); ++itBC) { + const stdair::BookingClass* lBC_ptr = *itBC; + + cout << " " << lBC_ptr->toString() << endl; + } + } + } + } + } + } + // Exit program: + return 0; +} Added: trunk/stdair/doc/tutorial/src/completeex.ref =================================================================== --- trunk/stdair/doc/tutorial/src/completeex.ref (rev 0) +++ trunk/stdair/doc/tutorial/src/completeex.ref 2010-10-20 14:23:22 UTC (rev 354) @@ -0,0 +1,27 @@ + -- ROOT -- + BA + 15, 2010-Jun-10 + LHR + Y + BKK + Y + LHR-SYD + Y + 1 + Q + LHR-BKK + Y + 1 + Q + BKK-SYD + Y + 1 + Q + AF + 102, 2010-Mar-20 + CDG + Y + CDG-SFO + Y + 1 + Q Deleted: trunk/stdair/doc/tutorial/src/convcode.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/convcode.cpp 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/src/convcode.cpp 2010-10-20 14:23:22 UTC (rev 354) @@ -1,85 +0,0 @@ -#include <itpp/itcomm.h> - -using namespace itpp; - -//These lines are needed for use of cout and endl -using std::cout; -using std::endl; - -int main() -{ - //Scalars - int constraint_length, MaxNrofErrors, Nobits, MaxIterations, p, i; - double Ec, Eb; - - //Vectors - ivec generators; - vec EbN0dB, EbN0, N0, ber, trans_symbols, rec_symbols; - bvec uncoded_bits, coded_bits, decoded_bits; - - //Classes - BPSK bpsk; - BERC berc; - Convolutional_Code conv_code; - AWGN_Channel channel; - - /* - Set up the convolutional encoder/decoder class: - The generators are given in octal form by adding a zero in front of the numbers. - In this example we will simulate a rate 1/3 code that is listed in J. G. Proakis, - "Digital communications". The encoder has constraint length 7. - */ - generators.set_size(3,false); - generators(0) = 0133; - generators(1) = 0145; - generators(2) = 0175; - constraint_length = 7; - conv_code.set_generator_polynomials(generators, constraint_length); - - //Init: Calculate some simulation specific parameters: - Ec = 1.0; - EbN0dB = linspace(-2,6,5); - EbN0 = inv_dB(EbN0dB); - Eb = Ec / conv_code.get_rate(); - N0 = Eb * pow(EbN0,-1); - MaxNrofErrors = 100; - Nobits = 10000; - MaxIterations = 10; - ber.set_size(EbN0dB.length(),false); - ber.clear(); - - //Randomize the random number generators. - RNG_randomize(); - - for (p=0; p<EbN0dB.length(); p++) { - - cout << "Now simulating point " << p+1 << " out of " << EbN0dB.length() << endl; - berc.clear(); //Clear the bit error rate counter. - channel.set_noise(N0(p)/2.0); //Set the noise value of the AWGN channel. - - for (i=0; i<MaxIterations; i++) { - - uncoded_bits = randb(Nobits); //The uncoded bits. - coded_bits = conv_code.encode(uncoded_bits); //The convolutional encoder function. - bpsk.modulate_bits(coded_bits, trans_symbols); //The BPSK modulator. - rec_symbols = channel( trans_symbols ); //The AWGN channel. - decoded_bits = conv_code.decode(rec_symbols); //The Viterbi decoder function. - berc.count(uncoded_bits,decoded_bits); //Count the errors. - ber(p) = berc.get_errorrate(); - - //Break the simulation on this point if sufficient number of bit errors were observed: - if (berc.get_errors()>MaxNrofErrors) { - cout << "Breaking on point " << p+1 << " with " << berc.get_errors() << " errors." << endl; break; - } - - } - } - - //Print the results: - cout << "BER = " << ber << endl; - cout << "EbN0dB = " << EbN0dB << endl; - - //Exit program: - return 0; - -} Deleted: trunk/stdair/doc/tutorial/src/convcode.ref =================================================================== --- trunk/stdair/doc/tutorial/src/convcode.ref 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/src/convcode.ref 2010-10-20 14:23:22 UTC (rev 354) @@ -1,10 +0,0 @@ -Now simulating point 1 out of 5 -Breaking on point 1 with 3297 errors. -Now simulating point 2 out of 5 -Breaking on point 2 with 781 errors. -Now simulating point 3 out of 5 -Breaking on point 3 with 112 errors. -Now simulating point 4 out of 5 -Now simulating point 5 out of 5 -BER = [0.330858 0.0783743 0.00280983 0 0] -EbN0dB = [-2 0 2 4 6] Deleted: trunk/stdair/doc/tutorial/src/interleaver.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/interleaver.cpp 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/src/interleaver.cpp 2010-10-20 14:23:22 UTC (rev 354) @@ -1,43 +0,0 @@ -#include <itpp/itcomm.h> - -using namespace itpp; - -//These lines are needed for use of cout and endl -using std::cout; -using std::endl; - -int main() -{ - //Declare scalars and vectors: - int rows, cols; - ivec input, output, deinterleaved; - - //Declare the interleaver. The interleaver classes are templated, and therefore we must specify - //the type of the data elements. In this example we are using integers: - Block_Interleaver<int> my_interleaver; - - //Initialize the interleaver class. Note that this can be done already in the declaration by writing - //Block_Interleaver<int> my_interleaver(rows,cols); - rows = 4; - cols = 5; - my_interleaver.set_rows(rows); - my_interleaver.set_cols(cols); - - //Define the input to the interleaver: - input = "1:20"; - - //Do the interleaving: - output = my_interleaver.interleave(input); - - //Do the de-interleaving: - deinterleaved = my_interleaver.deinterleave(output); - - //Print the results: - cout << "input = " << input << endl; - cout << "output = " << output << endl; - cout << "deinterleaved = " << deinterleaved << endl; - - //Exit program: - return 0; - -} Deleted: trunk/stdair/doc/tutorial/src/interleaver.ref =================================================================== --- trunk/stdair/doc/tutorial/src/interleaver.ref 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/src/interleaver.ref 2010-10-20 14:23:22 UTC (rev 354) @@ -1,3 +0,0 @@ -input = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] -output = [1 5 9 13 17 2 6 10 14 18 3 7 11 15 19 4 8 12 16 20] -deinterleaved = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] Added: trunk/stdair/doc/tutorial/src/invobject.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/invobject.cpp (rev 0) +++ trunk/stdair/doc/tutorial/src/invobject.cpp 2010-10-20 14:23:22 UTC (rev 354) @@ -0,0 +1,24 @@ +// StdAir +#include <stdair/factory/FacBomManager.hpp> +#include <stdair/bom/BomRoot.hpp> +#include <stdair/bom/Inventory.hpp> + +// These lines are needed for use of cout and endl +using std::cout; +using std::endl; + +int main() +{ + // Create an inventory Key (i,e an airline code) + const stdair::InventoryKey lBAKey ("BA"); + + // Create an inventory object whose airline code is BA + stdair::Inventory& lBAInv = + stdair::FacBom<stdair::Inventory>::instance().create (lBAKey); + + // Display the airline code + cout << " Inventory: " << lBAInv.describeKey() << endl; + + // Exit program: + return 0; +} Added: trunk/stdair/doc/tutorial/src/invobject.ref =================================================================== --- trunk/stdair/doc/tutorial/src/invobject.ref (rev 0) +++ trunk/stdair/doc/tutorial/src/invobject.ref 2010-10-20 14:23:22 UTC (rev 354) @@ -0,0 +1 @@ + Inventory: BA Deleted: trunk/stdair/doc/tutorial/src/ldpc_bersim_awgn.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/ldpc_bersim_awgn.cpp 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/src/ldpc_bersim_awgn.cpp 2010-10-20 14:23:22 UTC (rev 354) @@ -1,83 +0,0 @@ -#include <itpp/itcomm.h> - -using namespace std; -using namespace itpp; - -extern int main(int argc, char **argv) -{ - int Nbits=1000*1000*5000; // maximum number of bits simulated for any SNR point - int Nbers=2000; // target number of bit errors per SNR point - double BERmin=1e-6; // BER at which to terminate simulation - vec EbN0db = "0.6:0.2:5"; - - LDPC_Code C(argv[1]); - bool single_snr_mode=false; - if (argc==3) { - double x; - sscanf(argv[2],"%lf",&x); - EbN0db.set_size(1); - EbN0db(0)=x; - single_snr_mode=true; - } - - cout << "Running with Eb/N0: " << EbN0db << endl; - - // High performance: 2500 iterations, high resolution LLR algebra - C.setup_decoder("bp","2500 1 0"); - - // Alt. setting -- High speed: 50 iterations, logmax approximation - // C.setup_decoder("bp","50 1 0",LLR_calc_unit(12,0,7)); - - cout << C << endl; - - int N = C.get_nvar(); // number of bits per codeword - BPSK Mod; - bvec bitsin = zeros_b(N); - vec s = Mod.modulate_bits(bitsin); - - RNG_randomize(); - for (int j=0; j<length(EbN0db); j++) { - // noise variance is N0/2 per dimension - double N0 = pow(10.0,-EbN0db(j)/10.0) / C.get_rate(); - AWGN_Channel chan(N0/2); - BERC berc; // counters for coded and uncoded BER - BLERC ferc; // counter for coded FER - ferc.set_blocksize(N); - for (long int i=0; i<Nbits; i+=C.get_nvar()) { - // Received data - vec x = chan(s); - - // Demodulate - vec softbits=Mod.demodulate_soft_bits(x,N0); - - //Decode the received bits - bvec bitsout=C.decode(softbits); - - //Count the number of errors - berc.count(bitsin,bitsout); - ferc.count(bitsin,bitsout); - - if (single_snr_mode) { - cout << "Eb/N0=" << EbN0db(j) << " Simulated " - << ferc.get_total_blocks() << " frames and " - << berc.get_total_bits() << " bits. " - << "Obtained " << berc.get_errors() << " bit errors. " - << " BER: " << berc.get_errorrate() - << " FER: " << ferc.get_errorrate() << endl; - cout.flush(); - } else { - if (berc.get_errors()>Nbers) { break;} - } - } - - cout << "Eb/N0=" << EbN0db(j) << " Simulated " - << ferc.get_total_blocks() << " frames and " - << berc.get_total_bits() << " bits. " - << "Obtained " << berc.get_errors() << " bit errors. " - << " BER: " << berc.get_errorrate() - << " FER: " << ferc.get_errorrate() << endl; - cout.flush(); - if (berc.get_errorrate()<BERmin) { break; } - } - return 0; -} Deleted: trunk/stdair/doc/tutorial/src/ldpc_gen_codes.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/ldpc_gen_codes.cpp 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/src/ldpc_gen_codes.cpp 2010-10-20 14:23:22 UTC (rev 354) @@ -1,97 +0,0 @@ -// Generate some example LDPC codes - -#include <itpp/itcomm.h> - -using namespace itpp; -using namespace std; - -extern int main(int argc, char **argv) -{ - { // This generates a random regular (3,6) code with 500 bits - cout << "========= RANDOM (3,6) CODE ==========" << endl; - LDPC_Parity_Matrix H; - H.generate_regular_ldpc(500,3,6, - "rand", // random unstructured matrix - "500 10"); // optimize girth - H.display_stats(); - LDPC_Code C1(H); - C1.save_to_file("random_3_6_code.it"); - } - - { // This is the code "204.33.484 (N=204,K=102,M=102,R=0.5)" from - // David MacKay's database over sparse-graph code. It can be - // obtained with "wget - // http://www.inference.phy.cam.ac.uk/mackay/codes/EN/C/204.33.484" - cout << "========= MACKAY CODE ==========" << endl; - LDPC_Parity_Matrix H("204.33.484","alist"); - H.display_stats(); - LDPC_Generator_Matrix G(H); - LDPC_Code C(H,G); - C.save_to_file("mackay_204.33.484.it"); - - // Now produce a girth-optimized version of this code by removing - // cycles. This slightly improves the performance at high SNR. - H.cycle_removal_MGW(12); - LDPC_Generator_Matrix G1(H); - LDPC_Code C1(H,G1); - C1.save_to_file("mackay_204.33.484_opt.it"); - } - - // Irregular 1/2-rate codes optimized for the AWGN channel. The - // degree distributions are taken from Richardson & Urbanke, - // Trans. IT 2001. - - { // 1000 bits - cout << "========= IRREGULAR CODE 1000 BITS ==========" << endl; - LDPC_Parity_Matrix H; - H.generate_irregular_ldpc(1000, - "0 0.27684 0.28342 0 0 0 0 0 0.43974", - "0 0 0 0 0 0.01568 0.85244 0.13188", - "rand", // random unstructured matrix - "500 8"); // optimize girth - LDPC_Code C(H); - C.save_to_file("RU_1000.it"); - } - - { // 10000 bits (takes a few minutes to run) - cout << "========= IRREGULAR CODE 10000 BITS ==========" << endl; - LDPC_Parity_Matrix H; - H.generate_irregular_ldpc(10000,"0 0.21991 0.23328 0.02058 0 0.08543 0.06540 0.04767 \ - 0.01912 0 0 0 0 0 0 0 0 0 0.08064 0.22798", - "0 0 0 0 0 0 0 0.64854 0.34747 0.00399", - "rand", // random unstructured matrix - "150 8"); // optimize - LDPC_Code C(H); - C.save_to_file("RU_10000.it"); - } - - { // 100000 bits (takes a while to run) - cout << "========= IRREGULAR CODE 100000 BITS ==========" << endl; - LDPC_Parity_Matrix H; - H.generate_irregular_ldpc(100000,"0 0.1712 0.21053 0.00273 0 0 0.00009 0.15269 0.09227 \ - 0.02802 0 0 0 0 0.01206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07212 0 0 0 0 \ - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25830", - "0 0 0 0 0 0 0 0 0.33620 0.08883 0.57497", - "rand", - "40 4"); // less aggressive optimization - LDPC_Code C(H); - C.save_to_file("RU_100000.it"); - } - - exit(0); - - { // 1000000 bits (THIS CODE REQUIRES ABOUT 450 MB TO STORE AND 2GB - // INTERNAL MEMORY TO GENERATE) - cout << "========= IRREGULAR CODE 1000000 BITS ==========" << endl; - LDPC_Parity_Matrix H; - H.generate_irregular_ldpc(1000000,"0 0.1712 0.21053 0.00273 0 0 0.00009 0.15269 0.09227 \ - 0.02802 0 0 0 0 0.01206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07212 0 0 0 0 \ - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25830", - "0 0 0 0 0 0 0 0 0.33620 0.08883 0.57497", - "rand", - "0 0"); // no optimization here - LDPC_Code C(H); - C.save_to_file("RU_1000000.it"); - } - -} Deleted: trunk/stdair/doc/tutorial/src/mimoconv.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/mimoconv.cpp 2010-10-18 11:37:53 UTC (rev 353) +++ trunk/stdair/doc/tutorial/src/mimoconv.cpp 2010-10-20 14:23:22 UTC (rev 354) @@ -1,241 +0,0 @@ - -#include <itpp/itcomm.h> - -using std::cout; -using std::endl; -using namespace itpp; -using namespace std; - -/* Zero-forcing detector with ad hoc soft information. This function - applies the ZF (pseudoinverse) linear filter to the received - data. This results in effective noise with covariance matrix - inv(H'H)*sigma2. The diagonal elements of this noise covariance - matrix are taken as noise variances per component in the processed - received data but the noise correlation is ignored. - - */ - -void ZF_demod(ND_UQAM &channel, ivec &LLR_apr, ivec &LLR_apost, double sigma2, cmat &H, cvec &y) -{ - it_assert(H.rows()>=H.cols(),"ZF_demod() - underdetermined systems not tolerated"); - cvec shat=ls_solve_od(H,y); // the ZF solution - vec Sigma2=real(diag(inv(H.hermitian_transpose()*H)))*sigma2; // noise covariance of shat - cvec h(length(shat)); - for (int i=0; i<length(shat); i++) { - shat(i) = shat(i)/sqrt(Sigma2(i)); - h(i) = 1.0/sqrt(Sigma2(i)); - } - channel.map_demod(LLR_apr,LLR_apost,1.0,h,shat); -} - - -extern int main(int argc, char **argv) -{ - // -- modulation and channel parameters (taken from command line input) -- - int nC; // type of constellation (1=QPSK, 2=16-QAM, 3=64-QAM) - int nRx; // number of receive antennas - int nTx; // number of transmit antennas - int Tc; // coherence time (number of channel vectors with same H) - - if (argc!=5) { - cout << "Usage: cm nTx nRx nC Tc" << endl << "Example: cm 2 2 1 100000 (2x2 QPSK MIMO on slow fading channel)" << endl; - exit(1); - } else { - sscanf(argv[1],"%i",&nTx); - sscanf(argv[2],"%i",&nRx); - sscanf(argv[3],"%i",&nC); - sscanf(argv[4],"%i",&Tc); - } - - cout << "Initializing.. " << nTx << " TX antennas, " << nRx << " RX antennas, " - << (1<<nC) << "-PAM per dimension, coherence time " << Tc << endl; - - // -- simulation control parameters -- - const vec EbN0db = "-5:0.5:50"; // SNR range - const int Nmethods =2; // number of demodulators to try - const long int Nbitsmax=50*1000*1000; // maximum number of bits to ever simulate per SNR point - const int Nu = 1000; // length of data packet (before applying channel coding) - - int Nbers, Nfers; // target number of bit/frame errors per SNR point - double BERmin, FERmin; // BER/FER at which to terminate simulation - if (Tc==1) { // Fast fading channel, BER is of primary interest - BERmin = 0.001; // stop simulating a given method if BER<this value - FERmin = 1.0e-10; // stop simulating a given method if FER<this value - Nbers = 1000; // move to next SNR point after counting 1000 bit errors - Nfers = 200; // do not stop on this condition - } else { // Slow fading channel, FER is of primary interest here - BERmin = 1.0e-15; // stop simulating a given method if BER<this value - FERmin = 0.01; // stop simulating a given method if FER<this value - Nbers = -1; // do not stop on this condition - Nfers = 200; // move to next SNR point after counting 200 frame errors - } - - // -- Channel code parameters -- - Convolutional_Code code; - ivec generator(3); - generator(0)=0133; // use rate 1/3 code - generator(1)=0165; - generator(2)=0171; - double rate=1.0/3.0; - code.set_generator_polynomials(generator, 7); - bvec dummy; - code.encode_tail(randb(Nu),dummy); - const int Nc = length(dummy); // find out how long the coded blocks are - - // ============= Initialize ==================================== - - const int Nctx = (int) (2*nC*nTx*ceil(double(Nc)/double(2*nC*nTx))); // Total number of bits to transmit - const int Nvec = Nctx/(2*nC*nTx); // Number of channel vectors to transmit - const int Nbitspvec = 2*nC*nTx; // Number of bits per channel vector - - // initialize MIMO channel with uniform QAM per complex dimension and Gray coding - ND_UQAM chan; - chan.set_Gray_QAM(nTx,1<<(2*nC)); - cout << chan << endl; - - // initialize interleaver - Sequence_Interleaver<bin> sequence_interleaver_b(Nctx); - Sequence_Interleaver<int> sequence_interleaver_i(Nctx); - sequence_interleaver_b.randomize_interleaver_sequence(); - sequence_interleaver_i.set_interleaver_sequence(sequence_interleaver_b.get_interleaver_sequence()); - - // RNG_randomize(); - - Array<cvec> Y(Nvec); // received data - Array<cmat> H(Nvec/Tc+1); // channel matrix (new matrix for each coherence interval) - - ivec Contflag = ones_i(Nmethods); // flag to determine whether to run a given demodulator - if (pow(2.0,nC*2.0*nTx)>256) { // ML decoder too complex.. - Contflag(1)=0; - } - if (nTx>nRx) { - Contflag(0)=0; // ZF not for underdetermined systems - } - cout << "Running methods: " << Contflag << endl; - - cout.setf(ios::fixed, ios::floatfield); - cout.setf(ios::showpoint); - cout.precision(5); - - // ================== Run simulation ======================= - for (int nsnr=0; nsnr<length(EbN0db); nsnr++) { - const double Eb=1.0; // transmitted energy per information bit - const double N0 = pow(10.0,-EbN0db(nsnr)/10.0); - const double sigma2=N0; // Variance of each scalar complex noise sample - const double Es=rate*2*nC*Eb; // Energy per complex scalar symbol - // (Each transmitted scalar complex symbol contains rate*2*nC - // information bits.) - const double Ess=sqrt(Es); - - Array<BERC> berc(Nmethods); // counter for coded BER - Array<BERC> bercu(Nmethods); // counter for uncoded BER - Array<BLERC> ferc(Nmethods); // counter for coded FER - - for (int i=0; i<Nmethods; i++) { - ferc(i).set_blocksize(Nu); - } - - long int nbits=0; - while (nbits<Nbitsmax) { - nbits += Nu; - - // generate and encode random data - bvec inputbits = randb(Nu); - bvec txbits; - code.encode_tail(inputbits, txbits); - // coded block length is not always a multiple of the number of - // bits per channel vector - txbits=concat(txbits,randb(Nctx-Nc)); - txbits = sequence_interleaver_b.interleave(txbits); - - // -- generate channel and data ---- - for (int k=0; k<Nvec; k++) { - /* A complex valued channel matrix is used here. An - alternative (with equivalent result) would be to use a - real-valued (structured) channel matrix of twice the - dimension. - */ - if (k%Tc==0) { // generate a new channel realization every Tc intervals - H(k/Tc) = Ess*randn_c(nRx,nTx); - } - - // modulate and transmit bits - bvec bitstmp = txbits(k*2*nTx*nC,(k+1)*2*nTx*nC-1); - cvec x=chan.modulate_bits(bitstmp); - cvec e=sqrt(sigma2)*randn_c(nRx); - Y(k) = H(k/Tc)*x+e; - } - - // -- demodulate -- - Array<QLLRvec> LLRin(Nmethods); - for (i... [truncated message content] |
From: <den...@us...> - 2010-11-07 13:29:33
|
Revision: 364 http://stdair.svn.sourceforge.net/stdair/?rev=364&view=rev Author: denis_arnaud Date: 2010-11-07 13:29:26 +0000 (Sun, 07 Nov 2010) Log Message: ----------- [Doc] Improved the tutorials. Modified Paths: -------------- trunk/stdair/doc/local/authors.doc trunk/stdair/doc/local/help_wanted.doc trunk/stdair/doc/local/howto_release.doc trunk/stdair/doc/local/index.doc trunk/stdair/doc/tutorial/sources.mk trunk/stdair/doc/tutorial/src/completeex.cpp trunk/stdair/doc/tutorial/src/invobject.cpp trunk/stdair/doc/tutorial/src/rootinvobject.cpp trunk/stdair/doc/tutorial/src/rootobject.cpp trunk/stdair/doc/tutorial/tutorial.doc Added Paths: ----------- trunk/stdair/doc/tutorial/01_rootobject.doc trunk/stdair/doc/tutorial/02_invobject.doc trunk/stdair/doc/tutorial/03_rootinvobject.doc trunk/stdair/doc/tutorial/04_completeex.doc trunk/stdair/doc/tutorial/src/.deps/ trunk/stdair/doc/tutorial/src/makefile.tutorial Removed Paths: ------------- trunk/stdair/doc/tutorial/completeex.doc trunk/stdair/doc/tutorial/invobject.doc trunk/stdair/doc/tutorial/rootinvobject.doc trunk/stdair/doc/tutorial/rootobject.doc Property Changed: ---------------- trunk/stdair/doc/tutorial/src/ Modified: trunk/stdair/doc/local/authors.doc =================================================================== --- trunk/stdair/doc/local/authors.doc 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/local/authors.doc 2010-11-07 13:29:26 UTC (rev 364) @@ -2,14 +2,11 @@ \page authors People -\section admins Project Admins +\section admins Project Admins (and Developers) - Denis Arnaud <den...@us...> (\ref N) - Anh Quan Nguyen <qua...@us...> (\ref N) - - -\section developers Developers - +- Gabrielle Sabatier <gsa...@us...> (\ref N) - Christophe Lacombe <dd...@us...> (\ref N) Modified: trunk/stdair/doc/local/help_wanted.doc =================================================================== --- trunk/stdair/doc/local/help_wanted.doc 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/local/help_wanted.doc 2010-11-07 13:29:26 UTC (rev 364) @@ -23,7 +23,7 @@ - Send us your code. If you have a good StdAir compatible code, which you can release under the LGPL, and you think it should be included in StdAir, then send it to us. -- Become an StdAir developer. Send us an e-mail and tell what you can do for +- Become an StdAir developer. Send us (see the \ref authors page) an e-mail and tell what you can do for StdAir. */ Modified: trunk/stdair/doc/local/howto_release.doc =================================================================== --- trunk/stdair/doc/local/howto_release.doc 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/local/howto_release.doc 2010-11-07 13:29:26 UTC (rev 364) @@ -41,23 +41,23 @@ \verbatim cd ~/dev cd stdairsvn/branches/stdair -mkdir 0.2.0 -svn add 0.2.0 -svn ci -m "[Branch 0.2.0] Prepared the branch 0.2.0 to be copied from head of the trunk." +mkdir 0.8.0 +svn add 0.8.0 +svn ci -m "[Branch 0.8.0] Prepared the branch 0.8.0 to be copied from head of the trunk." \endverbatim \section check_release_revision Check Subversion revision for the release Check to which Subversion revision the release corresponds to. For instance -the <a href="http://sourceforge.net/apps/trac/stdair/changeset/233/">StdAir - release 0.2.0 corresponds to Subversion revision r233</a>. +the <a href="http://sourceforge.net/apps/trac/stdair/changeset/360/">StdAir + release 0.8.0 corresponds to Subversion revision r360</a>. The trunk <tt>configure.ac</tt> file specifies a fake release number, namely 99.99.99, for current (head) development. When a release is made, two Subversion revisions are committed with, as the sole change, the release number within the <tt>configure.ac</tt> file: - one revision is committed with the to-be-released version number (e.g., - 0.2.0) and commit message prefixed with "[Release x.y.z]", + 0.8.0) and commit message prefixed with "[Release x.y.z]", - and another one with the release number back to 99.99.99 and message stating "[Release] Back to working version (99.99.99)." . @@ -75,18 +75,18 @@ Create a release branch by copying the <a href="https://stdair.svn.sourceforge.net/svnroot/stdair/trunk/stdair">source tree</a> to be released, from the found revision (e.g., -<a href="http://sourceforge.net/apps/trac/stdair/changeset/233">r233</a>) +<a href="http://sourceforge.net/apps/trac/stdair/changeset/360">r360</a>) into the dedicated -<a href="https://stdair.svn.sourceforge.net/svnroot/stdair/branches/stdair/0.2.0">'branches' sub-directory of the Subversion repository</a>, e.g.: +<a href="https://stdair.svn.sourceforge.net/svnroot/stdair/branches/stdair/0.8.0">'branches' sub-directory of the Subversion repository</a>, e.g.: \verbatim -svn copy -r233 \ +svn copy -r360 \ https://stdair.svn.sourceforge.net/svnroot/stdair/trunk/stdair \ - https://stdair.svn.sourceforge.net/svnroot/stdair/branches/stdair/0.2.0/main \ - -m "[Release] Created the main 0.2.0 release branch, from revision r233." + https://stdair.svn.sourceforge.net/svnroot/stdair/branches/stdair/0.8.0/main \ + -m "[Release] Created the main 0.8.0 release branch, from revision r360." \endverbatim Check the results:<br> -\c firefox -new-tab \"<a href="http://sourceforge.net/apps/trac/stdair/browser/branches/stdair/0.2.0/main">http://sourceforge.net/apps/trac/stdair/browser/branches/stdair/0.2.0/main</a>\" +\c firefox -new-tab \"<a href="http://sourceforge.net/apps/trac/stdair/browser/branches/stdair/0.8.0/main">http://sourceforge.net/apps/trac/stdair/browser/branches/stdair/0.8.0/main</a>\" \section checkout_new_release Check-out the new release @@ -95,7 +95,7 @@ may be made (for instance, on the RPM specification file): \verbatim cd ~/dev -cd stdairsvn/branches/stdair/0.2.0 +cd stdairsvn/branches/stdair/0.8.0 svn up cd main \endverbatim @@ -121,14 +121,14 @@ Create the distribution packages using the following command:<br> \verbatim cd ~/dev -cd stdairsvn/branches/stdair/0.2.0/main +cd stdairsvn/branches/stdair/0.8.0/main ./autogen.sh && make distcheck \endverbatim This will configure, compile and check the package. The output packages will -be named, for instance, <tt>stdair-0.2.0.tar.gz</tt> and -<tt>stdair-0.2.0.tar.bz2</tt>. +be named, for instance, <tt>stdair-0.8.0.tar.gz</tt> and +<tt>stdair-0.8.0.tar.bz2</tt>. \section generate_rpm_packages Generation the RPM packages @@ -137,7 +137,7 @@ <a href="http://fedoraproject.org">Fedora</a>/<a href="http://www.redhat.com">RedHat</a>): \verbatim cd ~/dev -cd stdairsvn/branches/stdair/0.2.0/main +cd stdairsvn/branches/stdair/0.8.0/main ./autogen.sh && make dist \endverbatim @@ -145,10 +145,10 @@ available in the system. \verbatim cp stdair.spec ~/dev/packages/SPECS \ - && cp stdair-0.2.0.tar.bz2 ~/dev/packages/SOURCES + && cp stdair-0.8.0.tar.bz2 ~/dev/packages/SOURCES cd ~/dev/packages/SPECS rpmbuild -ba stdair.spec -rpmlint -i ../SPECS/stdair.spec ../SRPMS/stdair-0.2.0-1.fc13.src.rpm \ +rpmlint -i ../SPECS/stdair.spec ../SRPMS/stdair-0.8.0-1.fc13.src.rpm \ ../RPMS/i686/stdair-* \endverbatim @@ -168,9 +168,9 @@ <tt>make dist-html</tt> and <tt>make dist-tex</tt> The output documentation packages will be named, for instance: -- <tt>stdair-doc-0.2.0.tar.gz</tt> and <tt>stdair-doc-0.2.0.tar.bz2</tt> +- <tt>stdair-doc-0.8.0.tar.gz</tt> and <tt>stdair-doc-0.8.0.tar.bz2</tt> for the HTML documentation. -- <tt>stdair-pdf-0.2.0.tar.gz</tt> and <tt>stdair-pdf-0.2.0.tar.bz2</tt> +- <tt>stdair-pdf-0.8.0.tar.gz</tt> and <tt>stdair-pdf-0.8.0.tar.bz2</tt> for the PDF documentation. @@ -187,7 +187,7 @@ - <a href="https://sourceforge.net/apps/trac/sourceforge/wiki/Shell%20service#Accessingyourfileswithothertools">synchronise them with rsync and SSH</a>: \verbatim cd ~/dev -cd stdairsvn/branches/stdair/0.2.0/main +cd stdairsvn/branches/stdair/0.8.0/main rsync -aiv doc/html/ joe,st...@we...:htdocs/ \endverbatim where \c -aiv options mean: Modified: trunk/stdair/doc/local/index.doc =================================================================== --- trunk/stdair/doc/local/index.doc 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/local/index.doc 2010-11-07 13:29:26 UTC (rev 364) @@ -16,7 +16,7 @@ - \ref installation - \ref linking - \ref users_guide -- \ref tutorial +- \ref tutorials - \ref verification - \ref copyright - \ref help_wanted Copied: trunk/stdair/doc/tutorial/01_rootobject.doc (from rev 359, trunk/stdair/doc/tutorial/rootobject.doc) =================================================================== --- trunk/stdair/doc/tutorial/01_rootobject.doc (rev 0) +++ trunk/stdair/doc/tutorial/01_rootobject.doc 2010-11-07 13:29:26 UTC (rev 364) @@ -0,0 +1,13 @@ +/*! +\page tutorial01_rootobject Creating a BOM root object + +In this example we are constructing a BOM root object (i.e., a root for +all the classes in the project): + +\include rootobject.cpp + +When you run this program, the output will look: + +\include rootobject.ref + +*/ Copied: trunk/stdair/doc/tutorial/02_invobject.doc (from rev 359, trunk/stdair/doc/tutorial/invobject.doc) =================================================================== --- trunk/stdair/doc/tutorial/02_invobject.doc (rev 0) +++ trunk/stdair/doc/tutorial/02_invobject.doc 2010-11-07 13:29:26 UTC (rev 364) @@ -0,0 +1,12 @@ +/*! +\page tutorial02_invobject Creating an Inventory object + +In this example we are constructing an airline inventory whose code is "BA": + +\include invobject.cpp + +When you run this program, the output will look: + +\include invobject.ref + +*/ Copied: trunk/stdair/doc/tutorial/03_rootinvobject.doc (from rev 359, trunk/stdair/doc/tutorial/rootinvobject.doc) =================================================================== --- trunk/stdair/doc/tutorial/03_rootinvobject.doc (rev 0) +++ trunk/stdair/doc/tutorial/03_rootinvobject.doc 2010-11-07 13:29:26 UTC (rev 364) @@ -0,0 +1,13 @@ +/*! +\page tutorial03_rootinvobject Linking an inventory object with the BOM root object + +In this example we are linking an airline inventory whose code is "BA" +with the BOM root object. + +\include rootinvobject.cpp + +When you run this program, the output will look: + +\include rootinvobject.ref + +*/ Copied: trunk/stdair/doc/tutorial/04_completeex.doc (from rev 359, trunk/stdair/doc/tutorial/completeex.doc) =================================================================== --- trunk/stdair/doc/tutorial/04_completeex.doc (rev 0) +++ trunk/stdair/doc/tutorial/04_completeex.doc 2010-11-07 13:29:26 UTC (rev 364) @@ -0,0 +1,12 @@ +/*! +\page tutorial04_completeex Constructing a complete BOM tree + +In this example we are constructing a complete BOM tree: + +\include completeex.cpp + +When you run this program, the output will look: + +\include completeex.ref + +*/ Deleted: trunk/stdair/doc/tutorial/completeex.doc =================================================================== --- trunk/stdair/doc/tutorial/completeex.doc 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/tutorial/completeex.doc 2010-11-07 13:29:26 UTC (rev 364) @@ -1,12 +0,0 @@ -/*! -\page completeex Constructing a complete Bom tree - -In this example we are constructing a complete Bom tree: - -\include completeex.cpp - -When you run this program, the output will look: - -\include completeex.ref - -*/ Deleted: trunk/stdair/doc/tutorial/invobject.doc =================================================================== --- trunk/stdair/doc/tutorial/invobject.doc 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/tutorial/invobject.doc 2010-11-07 13:29:26 UTC (rev 364) @@ -1,12 +0,0 @@ -/*! -\page invobject Creating an Inventory object - -In this example we are constructing an airline inventory whose code is "BA": - -\include invobject.cpp - -When you run this program, the output will look: - -\include invobject.ref - -*/ Deleted: trunk/stdair/doc/tutorial/rootinvobject.doc =================================================================== --- trunk/stdair/doc/tutorial/rootinvobject.doc 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/tutorial/rootinvobject.doc 2010-11-07 13:29:26 UTC (rev 364) @@ -1,12 +0,0 @@ -/*! -\page rootinvobject Linking an inventory object with the Bom root object - -In this example we are linking an airline inventory whose code is "BA" with the Bom root object. - -\include rootinvobject.cpp - -When you run this program, the output will look: - -\include rootinvobject.ref - -*/ Deleted: trunk/stdair/doc/tutorial/rootobject.doc =================================================================== --- trunk/stdair/doc/tutorial/rootobject.doc 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/tutorial/rootobject.doc 2010-11-07 13:29:26 UTC (rev 364) @@ -1,12 +0,0 @@ -/*! -\page rootobject Creating a Bom root object - -In this example we are constructing a Bom root object (i,e a root for all classes in the project): - -\include rootobject.cpp - -When you run this program, the output will look: - -\include rootobject.ref - -*/ Modified: trunk/stdair/doc/tutorial/sources.mk =================================================================== --- trunk/stdair/doc/tutorial/sources.mk 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/tutorial/sources.mk 2010-11-07 13:29:26 UTC (rev 364) @@ -1,5 +1,6 @@ doc_tutorial_sources = \ - $(top_srcdir)/doc/tutorial/invobject.doc \ - $(top_srcdir)/doc/tutorial/rootobject.doc \ - $(top_srcdir)/doc/tutorial/rootinvobject.doc \ - $(top_srcdir)/doc/tutorial/completeex.doc + $(top_srcdir)/doc/tutorial/tutorial.doc \ + $(top_srcdir)/doc/tutorial/01_rootobject.doc \ + $(top_srcdir)/doc/tutorial/02_invobject.doc \ + $(top_srcdir)/doc/tutorial/03_rootinvobject.doc \ + $(top_srcdir)/doc/tutorial/04_completeex.doc Property changes on: trunk/stdair/doc/tutorial/src ___________________________________________________________________ Modified: svn:ignore - Makefile Makefile.in + Makefile Makefile.in rootobject invobject rootinvobject completeex Property changes on: trunk/stdair/doc/tutorial/src/.deps ___________________________________________________________________ Added: svn:ignore + *.Po Modified: trunk/stdair/doc/tutorial/src/completeex.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/completeex.cpp 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/tutorial/src/completeex.cpp 2010-11-07 13:29:26 UTC (rev 364) @@ -1,5 +1,6 @@ +// STL +#include <cassert> // StdAir -#include <stdair/bom/BomManager.hpp> #include <stdair/bom/BomRoot.hpp> #include <stdair/bom/Inventory.hpp> #include <stdair/bom/InventoryTypes.hpp> @@ -17,14 +18,12 @@ #include <stdair/bom/FareFamilyTypes.hpp> #include <stdair/bom/BookingClass.hpp> #include <stdair/bom/BookingClassTypes.hpp> +#include <stdair/bom/BomManager.hpp> // Utility class to display BOM objects #include <stdair/factory/FacBomManager.hpp> -//These lines are needed for use of cout and endl -using std::cout; -using std::endl; +// /////////////////////// M A I N /////////////////////////// +int main() { -int main() -{ // ///////////// Step 0.0: Initialisation //////////// // Create the root of the Bom tree (i.e., a BomRoot object) stdair::BomRoot& lBomRoot = @@ -63,7 +62,7 @@ stdair::SegmentDate& lLHRSYDSegment = stdair::FacBom<stdair::SegmentDate>::instance().create (lSegmentDateKey); stdair::FacBomManager::instance().addToList (lBA15_20100610_FD, - lLHRSYDSegment); + lLHRSYDSegment); // Create a second SegmentDate (LHR-BKK) for BA's Inventory const stdair::AirportCode_T lBKK ("BKK"); @@ -72,7 +71,7 @@ stdair::SegmentDate& lLHRBKKSegment = stdair::FacBom<stdair::SegmentDate>::instance().create (lSegmentDateKey); stdair::FacBomManager::instance().addToList (lBA15_20100610_FD, - lLHRBKKSegment); + lLHRBKKSegment); // Create a third SegmentDate (BKK-SYD) for BA's Inventory lSegmentDateKey = stdair::SegmentDateKey (lBKK, lSYD); @@ -80,7 +79,7 @@ stdair::SegmentDate& lBKKSYDSegment = stdair::FacBom<stdair::SegmentDate>::instance().create (lSegmentDateKey); stdair::FacBomManager::instance().addToList (lBA15_20100610_FD, - lBKKSYDSegment); + lBKKSYDSegment); // Step 0.4: Leg-date level // Create a first LegDate (LHR) for BA's Inventory @@ -105,19 +104,19 @@ stdair::SegmentCabin& lLHRBKKSegmentYCabin = stdair::FacBom<stdair::SegmentCabin>::instance().create(lYSegmentCabinKey); stdair::FacBomManager::instance().addToList (lLHRBKKSegment, - lLHRBKKSegmentYCabin); + lLHRBKKSegmentYCabin); // Create a SegmentCabin (Y) of the Segment BKK-SYD; stdair::SegmentCabin& lBKKSYDSegmentYCabin = stdair::FacBom<stdair::SegmentCabin>::instance().create(lYSegmentCabinKey); stdair::FacBomManager::instance().addToList (lBKKSYDSegment, - lBKKSYDSegmentYCabin); + lBKKSYDSegmentYCabin); // Create a SegmentCabin (Y) of the Segment LHR-SYD; stdair::SegmentCabin& lLHRSYDSegmentYCabin = stdair::FacBom<stdair::SegmentCabin>::instance().create(lYSegmentCabinKey); stdair::FacBomManager::instance().addToList (lLHRSYDSegment, - lLHRSYDSegmentYCabin); + lLHRSYDSegmentYCabin); // Step 0.6: leg-cabin level // Create a LegCabin (Y) for the Leg LHR-BKK on BA's Inventory @@ -140,41 +139,44 @@ stdair::FareFamily& lLHRBKKSegmentYCabin1Family = stdair::FacBom<stdair::FareFamily>::instance().create(l1FareFamilyKey); stdair::FacBomManager::instance().addToList (lLHRBKKSegmentYCabin, - lLHRBKKSegmentYCabin1Family); + lLHRBKKSegmentYCabin1Family); // Create a FareFamily (1) for the Segment BKK-SYD, cabin Y on BA's Inv stdair::FareFamily& lBKKSYDSegmentYCabin1Family = stdair::FacBom<stdair::FareFamily>::instance().create(l1FareFamilyKey); stdair::FacBomManager::instance().addToList (lBKKSYDSegmentYCabin, - lBKKSYDSegmentYCabin1Family); + lBKKSYDSegmentYCabin1Family); // Create a FareFamily (1) for the Segment LHR-SYD, cabin Y on BA's Inv stdair::FareFamily& lLHRSYDSegmentYCabin1Family = stdair::FacBom<stdair::FareFamily>::instance().create(l1FareFamilyKey); stdair::FacBomManager::instance().addToList (lLHRSYDSegmentYCabin, - lLHRSYDSegmentYCabin1Family); + lLHRSYDSegmentYCabin1Family); // Step 0.8: booking class level - // Create a BookingClass (Q) for the Segment LHR-BKK, cabin Y, fare family 1 on BA's Inv + // Create a BookingClass (Q) for the Segment LHR-BKK, cabin Y, fare + // family 1 on BA's Inv const stdair::ClassCode_T lQ ("Q"); stdair::BookingClassKey lQBookingClassKey (lQ); stdair::BookingClass& lLHRBKKSegmentYCabin1FamilyQClass = stdair::FacBom<stdair::BookingClass>::instance().create(lQBookingClassKey); stdair::FacBomManager::instance().addToList (lLHRBKKSegmentYCabin1Family, - lLHRBKKSegmentYCabin1FamilyQClass); + lLHRBKKSegmentYCabin1FamilyQClass); - // Create a BookingClass (Q) for the Segment BKK-SYD, cabin Y, fare family 1 on BA's Inv + // Create a BookingClass (Q) for the Segment BKK-SYD, cabin Y, fare + // family 1 on BA's Inv stdair::BookingClass& lBKKSYDSegmentYCabin1FamilyQClass = stdair::FacBom<stdair::BookingClass>::instance().create(lQBookingClassKey); stdair::FacBomManager::instance().addToList (lBKKSYDSegmentYCabin1Family, - lBKKSYDSegmentYCabin1FamilyQClass); + lBKKSYDSegmentYCabin1FamilyQClass); - // Create a BookingClass (Q) for the Segment LHR-SYD, cabin Y, fare family 1 on BA's Inv + // Create a BookingClass (Q) for the Segment LHR-SYD, cabin Y, fare + // family 1 on BA's Inv stdair::BookingClass& lLHRSYDSegmentYCabin1FamilyQClass = stdair::FacBom<stdair::BookingClass>::instance().create(lQBookingClassKey); stdair::FacBomManager::instance().addToList (lLHRSYDSegmentYCabin1Family, - lLHRSYDSegmentYCabin1FamilyQClass); + lLHRSYDSegmentYCabin1FamilyQClass); // ////// AF /////// // Step 0.2: Flight-date level @@ -196,7 +198,7 @@ stdair::SegmentDate& lCDGSFOSegment = stdair::FacBom<stdair::SegmentDate>::instance().create (lSegmentDateKey); stdair::FacBomManager::instance().addToList (lAF102_20100320_FD, - lCDGSFOSegment); + lCDGSFOSegment); // Step 0.4: Leg-date level // Create a LegDate (CDG) for AF's Inventory @@ -211,7 +213,7 @@ stdair::SegmentCabin& lCDGSFOSegmentYCabin = stdair::FacBom<stdair::SegmentCabin>::instance().create(lYSegmentCabinKey); stdair::FacBomManager::instance().addToList (lCDGSFOSegment, - lCDGSFOSegmentYCabin); + lCDGSFOSegmentYCabin); // Step 0.6: leg-cabin level // Create a LegCabin (Y) for the Leg CDG-SFO on AF's Inventory @@ -224,19 +226,20 @@ stdair::FareFamily& lCDGSFOSegmentYCabin1Family = stdair::FacBom<stdair::FareFamily>::instance().create(l1FareFamilyKey); stdair::FacBomManager::instance().addToList (lCDGSFOSegmentYCabin, - lCDGSFOSegmentYCabin1Family); + lCDGSFOSegmentYCabin1Family); // Step 0.8: booking class level - // Create a BookingClass (Q) for the Segment CDG-SFO, cabin Y, fare family 1 on AF's Inv + // Create a BookingClass (Q) for the Segment CDG-SFO, cabin Y, fare + // family 1 on AF's Inv stdair::BookingClass& lCDGSFOSegmentYCabin1FamilyQClass = stdair::FacBom<stdair::BookingClass>::instance().create(lQBookingClassKey); stdair::FacBomManager::instance().addToList (lCDGSFOSegmentYCabin1Family, - lCDGSFOSegmentYCabin1FamilyQClass); + lCDGSFOSegmentYCabin1FamilyQClass); // /////////// Step 1.0: Display the BOM tree ////////// // 1.0. Bom root level - cout << lBomRoot.describeKey() << endl; + std::cout << lBomRoot << std::endl; // 1.1. Inventory level const stdair::InventoryList_T& lInventoryList = @@ -244,8 +247,9 @@ for (stdair::InventoryList_T::const_iterator itInv = lInventoryList.begin(); itInv != lInventoryList.end(); ++itInv) { const stdair::Inventory* lInv_ptr = *itInv; + assert (lInv_ptr != NULL); - cout << " " <<lInv_ptr->describeKey() << endl; + std::cout << " " << *lInv_ptr << std::endl; // 1.2. FlightDate level const stdair::FlightDateList_T& lFlightDateList = @@ -253,8 +257,9 @@ for (stdair::FlightDateList_T::const_iterator itFD=lFlightDateList.begin(); itFD != lFlightDateList.end(); ++itFD) { const stdair::FlightDate* lFD_ptr = *itFD; + assert (lFD_ptr != NULL); - cout << " " << lFD_ptr->toString() << endl; + std::cout << " " << *lFD_ptr << std::endl; // 1.4. LegDate level const stdair::LegDateList_T& lLegDateList = @@ -263,18 +268,20 @@ lLegDateList.begin(); itLD != lLegDateList.end(); ++itLD) { const stdair::LegDate* lLD_ptr = *itLD; + assert (lLD_ptr != NULL); - cout << " " << lLD_ptr->toString() << endl; + std::cout << " " << *lLD_ptr << std::endl; // 1.6. LegCabin level const stdair::LegCabinList_T& lLegCabinList = - stdair::BomManager::getList<stdair::LegCabin> (*lLD_ptr); + stdair::BomManager::getList<stdair::LegCabin> (*lLD_ptr); for (stdair::LegCabinList_T::const_iterator itLC = lLegCabinList.begin(); itLC != lLegCabinList.end(); ++itLC) { const stdair::LegCabin* lLC_ptr = *itLC; - - cout << " " << lLC_ptr->toString() << endl; + assert (lLC_ptr != NULL); + + std::cout << " " << *lLC_ptr << std::endl; } } @@ -285,8 +292,9 @@ lSegmentDateList.begin(); itSD != lSegmentDateList.end(); ++itSD) { const stdair::SegmentDate* lSD_ptr = *itSD; + assert (lSD_ptr != NULL); - cout << " " << lSD_ptr->toString() << endl; + std::cout << " " << *lSD_ptr << std::endl; // 1.5. SegmentCabin level const stdair::SegmentCabinList_T& lSegmentCabinList = @@ -295,8 +303,9 @@ lSegmentCabinList.begin(); itSC != lSegmentCabinList.end(); ++itSC) { const stdair::SegmentCabin* lSC_ptr = *itSC; + assert (lSC_ptr != NULL); - cout << " " << lSC_ptr->toString() << endl; + std::cout << " " << *lSC_ptr << std::endl; // 1.7. FareFamily level const stdair::FareFamilyList_T& lFareFamilyList = @@ -305,8 +314,9 @@ lFareFamilyList.begin(); itFF != lFareFamilyList.end(); ++itFF) { const stdair::FareFamily* lFF_ptr = *itFF; + assert (lFF_ptr != NULL); - cout << " " << lFF_ptr->toString() << endl; + std::cout << " " << *lFF_ptr << std::endl; // 1.8. BookingClass level const stdair::BookingClassList_T& lBookingClassList = @@ -315,8 +325,9 @@ lBookingClassList.begin(); itBC != lBookingClassList.end(); ++itBC) { const stdair::BookingClass* lBC_ptr = *itBC; + assert (lBC_ptr != NULL); - cout << " " << lBC_ptr->toString() << endl; + std::cout << " " << *lBC_ptr << std::endl; } } } Modified: trunk/stdair/doc/tutorial/src/invobject.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/invobject.cpp 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/tutorial/src/invobject.cpp 2010-11-07 13:29:26 UTC (rev 364) @@ -1,24 +1,21 @@ // StdAir -#include <stdair/factory/FacBomManager.hpp> #include <stdair/bom/BomRoot.hpp> #include <stdair/bom/Inventory.hpp> +#include <stdair/factory/FacBomManager.hpp> -// These lines are needed for use of cout and endl -using std::cout; -using std::endl; +// /////////////////////// M A I N /////////////////////////// +int main() { -int main() -{ - // Create an inventory Key (i,e an airline code) + // Create an inventory key (i.e., an airline code) const stdair::InventoryKey lBAKey ("BA"); // Create an inventory object whose airline code is BA stdair::Inventory& lBAInv = stdair::FacBom<stdair::Inventory>::instance().create (lBAKey); - // Display the airline code - cout << " Inventory: " << lBAInv.describeKey() << endl; + // Display the inventory object (including its key, i.e., the airline code) + std::cout << " Inventory: " << lBAInv << std::endl; - // Exit program: + // Exit program return 0; } Added: trunk/stdair/doc/tutorial/src/makefile.tutorial =================================================================== --- trunk/stdair/doc/tutorial/src/makefile.tutorial (rev 0) +++ trunk/stdair/doc/tutorial/src/makefile.tutorial 2010-11-07 13:29:26 UTC (rev 364) @@ -0,0 +1,336 @@ +# Makefile inspired from the makefiles generated by the GNU Autotools (autoconf +# automake, configure, libtool) +LIBDIR=`test -d '/usr/lib64' && echo '/usr/lib64' || echo '/usr/lib'` +ARCHI=`test -d '/usr/lib64' && echo 'x86_64' || echo 'x86'` + +# +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +build_triplet = $(ARCHI)-unknown-linux-gnu +host_triplet = $(ARCHI)-unknown-linux-gnu +DIST_COMMON = $(srcdir)/makefile.tutorial +bin_PROGRAMS = rootobject$(EXEEXT) invobject$(EXEEXT) rootinvobject$(EXEEXT) completeex$(EXEEXT) +subdir = tutorial/src +PROGRAMS = $(bin_PROGRAMS) +am_rootobject_OBJECTS = rootobject-rootobject.$(OBJEXT) +rootobject_OBJECTS = $(am_rootobject_OBJECTS) +rootobject_DEPENDENCIES = +rootobject_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(rootobject_CXXFLAGS) $(CXXFLAGS) \ + $(rootobject_LDFLAGS) $(LDFLAGS) -o $@ +am_invobject_OBJECTS = invobject-invobject.$(OBJEXT) +invobject_OBJECTS = $(am_invobject_OBJECTS) +invobject_DEPENDENCIES = +invobject_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(invobject_CXXFLAGS) \ + $(CXXFLAGS) $(invobject_LDFLAGS) $(LDFLAGS) -o $@ +am_rootinvobject_OBJECTS = rootinvobject-rootinvobject.$(OBJEXT) +rootinvobject_OBJECTS = $(am_rootinvobject_OBJECTS) +rootinvobject_DEPENDENCIES = +rootinvobject_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(rootinvobject_CXXFLAGS) \ + $(CXXFLAGS) $(rootinvobject_LDFLAGS) $(LDFLAGS) -o $@ +am_completeex_OBJECTS = completeex-completeex.$(OBJEXT) +completeex_OBJECTS = $(am_completeex_OBJECTS) +completeex_DEPENDENCIES = +completeex_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(completeex_CXXFLAGS) $(CXXFLAGS) \ + $(completeex_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I. -I$(builddir)/src +depcomp = $(SHELL) $(top_builddir)/config/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(rootobject_SOURCES) $(invobject_SOURCES) $(rootinvobject_SOURCES) \ + $(completeex_SOURCES) +AWK = gawk +BOOST_ASIO_LIB = -lboost_system -lboost_thread-mt -lboost_date_time -lboost_regex -lboost_serialization +BOOST_CFLAGS = -pthread -I/usr/include +BOOST_DATE_TIME_LIB = -lboost_date_time +BOOST_FILESYSTEM_LIB = -lboost_filesystem +BOOST_IOSTREAMS_LIB = -lboost_iostreams +BOOST_LIBS = -L$(LIBDIR) +BOOST_MPI_LIB = -lboost_mpi -lboost_serialization $(BOOST_LIBS)/openmpi/lib -lmpi_cxx -lmpi +BOOST_MPI_PYTHON_LIB = -lboost_mpi_python -lboost_serialization -lboost_python $(BOOST_LIBS) -lpython2.6 -lpthread -ldl -lutil -lm -lboost_mpi -lboost_serialization $(BOOST_LIBS)/openmpi/lib -lmpi_cxx -lmpi $(BOOST_LIBS)/openmpi/lib -lmpi_cxx -lmpi +BOOST_PROGRAM_OPTIONS_LIB = -lboost_program_options +BOOST_PYTHON_LIB = -lboost_python $(BOOST_LIBS) -lpython2.6 -lpthread -ldl -lutil -lm +BOOST_REGEX_LIB = -lboost_regex +BOOST_SERIALIZATION_LIB = -lboost_serialization +BOOST_SIGNALS_LIB = -lboost_signals +BOOST_SYSTEM_LIB = -lboost_system +BOOST_THREAD_LIB = -lboost_thread-mt +BOOST_UNIT_TEST_FRAMEWORK_LIB = -lboost_unit_test_framework +BOOST_VERSION = 1_41 +BOOST_WSERIALIZATION_LIB = -lboost_wserialization +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CPPUNIT_CFLAGS = +CPPUNIT_CONFIG = /usr/bin/cppunit-config +CPPUNIT_LIBS = -lcppunit -ldl +CPPUNIT_VERSION = 1.12.1 +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=gcc3 +CXXFLAGS = -g -Wall +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EXEEXT = +EXTRACC_CFLAGS = -I/home/dan/dev/deliveries/extracc-0.5.0/include +EXTRACC_EXTRACPPUNIT_INCLUDE = include /home/dan/dev/deliveries/extracc-0.5.0/share/extracc/extracppunit/Makefile.common +EXTRACC_LIBS = -L/home/dan/dev/deliveries/extracc-0.5.0/lib -lextracppunit +EXTRACC_VERSION = 0.5.0 +FGREP = /bin/grep -F +GENERIC_LIBRARY_VERSION = 99:99:99 +GREP = /bin/grep +LD = /usr/bin/ld -m elf_$(ARCHI) +LDFLAGS = +LIBOBJS = +LIBS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/dan/dev/sim/airinvsvn/trunk/airinv/config/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OPENMPI_CFLAGS = -I/usr/include/openmpi-$(ARCHI) -I/usr/include/openmpi-$(ARCHI)/openmpi -I/usr/include/openmpi-$(ARCHI)/64 -m64 +OPENMPI_LIBS = -L$(LIBDIR)/openmpi/lib -lmpi_cxx -lmpi +OPENMPI_VERSION = 1.4.1 +OTOOL = +OTOOL64 = +PACKAGE = airinv +PACKAGE_BUGREPORT = den...@us... +PACKAGE_NAME = AIRINV +PACKAGE_STRING = AIRINV 99.99.99 +PACKAGE_TARNAME = airinv +PACKAGE_URL = +PACKAGE_VERSION = 99.99.99 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PYTHON = /usr/bin/python +PYTHON_ADD_LIBS = -lpthread -ldl -lutil -lm +PYTHON_CFLAGS = -I/usr/include/python2.6 +PYTHON_LIBS = -L$(LIBDIR) -lpython2.6 +PYTHON_VERSION = 2.6.4 +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/sh +STDAIR_CFLAGS = -pthread -I/usr/include -I../../.. +STDAIR_LIBS = -L$(LIBDIR) -lboost_date_time -L../../../stdair/.libs -lstdair +STDAIR_VERSION = 0.8.0 +STRIP = strip +VERSION = 99.99.99 +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = $(ARCHI)-unknown-linux-gnu +build_alias = +build_cpu = $(ARCHI) +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +exec_prefix = ${prefix} +gs_ok = yes +host = $(ARCHI)-unknown-linux-gnu +host_alias = +host_cpu = $(ARCHI) +host_os = linux-gnu +host_vendor = unknown +includedir = ${prefix}/include +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +lt_ECHO = echo +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../.. +top_builddir = ../../.. +top_srcdir = ../../.. +AM_CPPFLAGS = -I$(top_srcdir) + +# +rootobject_SOURCES = rootobject.cpp +rootobject_CXXFLAGS = $(BOOST_CFLAGS) $(STDAIR_CFLAGS) +rootobject_LDADD = +rootobject_LDFLAGS = $(BOOST_PROGRAM_OPTIONS_LIB) $(STDAIR_LIBS) + +invobject_SOURCES = invobject.cpp +invobject_CXXFLAGS = $(BOOST_CFLAGS) $(STDAIR_CFLAGS) +invobject_LDADD = +invobject_LDFLAGS = $(BOOST_PROGRAM_OPTIONS_LIB) $(STDAIR_LIBS) + +rootinvobject_SOURCES = rootinvobject.cpp +rootinvobject_CXXFLAGS = $(BOOST_CFLAGS) $(STDAIR_CFLAGS) +rootinvobject_LDADD = +rootinvobject_LDFLAGS = $(BOOST_PROGRAM_OPTIONS_LIB) $(STDAIR_LIBS) + +completeex_SOURCES = completeex.cpp +completeex_CXXFLAGS = $(BOOST_CFLAGS) $(STDAIR_CFLAGS) +completeex_LDADD = +completeex_LDFLAGS = $(BOOST_PROGRAM_OPTIONS_LIB) $(STDAIR_LIBS) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +rootobject$(EXEEXT): $(rootobject_OBJECTS) $(rootobject_DEPENDENCIES) + @rm -f rootobject$(EXEEXT) + $(rootobject_LINK) $(rootobject_OBJECTS) $(rootobject_LDADD) $(LIBS) +invobject$(EXEEXT): $(invobject_OBJECTS) $(invobject_DEPENDENCIES) + @rm -f invobject$(EXEEXT) + $(invobject_LINK) $(invobject_OBJECTS) $(invobject_LDADD) $(LIBS) +rootinvobject$(EXEEXT): $(rootinvobject_OBJECTS) $(rootinvobject_DEPENDENCIES) + @rm -f rootinvobject$(EXEEXT) + $(rootinvobject_LINK) $(rootinvobject_OBJECTS) $(rootinvobject_LDADD) $(LIBS) +completeex$(EXEEXT): $(completeex_OBJECTS) $(completeex_DEPENDENCIES) + @rm -f completeex$(EXEEXT) + $(completeex_LINK) $(completeex_OBJECTS) $(completeex_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +.cpp.o: + source='$<' object='$@' libtool=no \ + DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ + $(CXXCOMPILE) -c -o $@ $< +# $(CXXCOMPILE) -MT $@ -MD -MP -MF -c -o $@ $< + +.cpp.obj: + source='$<' object='$@' libtool=no \ + DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ + $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +# $(CXXCOMPILE) -MT $@ -MD -MP -MF -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: + source='$<' object='$@' libtool=yes \ + DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ + $(LTCXXCOMPILE) -c -o $@ $< +# $(LTCXXCOMPILE) -MT $@ -MD -MP -MF -c -o $@ $< + +rootobject-rootobject.o: rootobject.cpp + source='rootobject.cpp' object='rootobject-rootobject.o' libtool=no \ + DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rootobject_CXXFLAGS) $(CXXFLAGS) -c -o rootobject-rootobject.o `test -f 'rootobject.cpp' || echo '$(srcdir)/'`rootobject.cpp +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rootobject_CXXFLAGS) $(CXXFLAGS) -MT rootobject-rootobject.o -MD -MP -MF -c -o rootobject-rootobject.o `test -f 'rootobject.cpp' || echo '$(srcdir)/'`rootobject.cpp + +rootobject-rootobject.obj: rootobject.cpp + source='rootobject.cpp' object='rootobject-rootobject.obj' libtool=no \ + DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rootobject_CXXFLAGS) $(CXXFLAGS) -c -o rootobject-rootobject.obj `if test -f 'rootobject.cpp'; then $(CYGPATH_W) 'rootobject.cpp'; else $(CYGPATH_W) 'rootobject.cpp'; fi` +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rootobject_CXXFLAGS) $(CXXFLAGS) -MT rootobject-rootobject.obj -MD -MP -MF -c -o rootobject-rootobject.obj `if test -f 'rootobject.cpp'; then $(CYGPATH_W) 'rootobject.cpp'; else $(CYGPATH_W) 'rootobject.cpp'; fi` + +invobject-invobject.o: invobject.cpp + source='invobject.cpp' object='invobject-invobject.o' libtool=no \ + DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(invobject_CXXFLAGS) $(CXXFLAGS) -c -o invobject-invobject.o `test -f 'invobject.cpp' || echo '$(srcdir)/'`invobject.cpp +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(invobject_CXXFLAGS) $(CXXFLAGS) -MT invobject-invobject.o -MD -MP -MF -c -o invobject-invobject.o `test -f 'invobject.cpp' || echo '$(srcdir)/'`invobject.cpp + +invobject-invobject.obj: invobject.cpp + source='invobject.cpp' object='invobject-invobject.obj' libtool=no \ + DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(invobject_CXXFLAGS) $(CXXFLAGS) -c -o invobject-invobject.obj `if test -f 'invobject.cpp'; then $(CYGPATH_W) 'invobject.cpp'; else $(CYGPATH_W) '$(srcdir)/invobject.cpp'; fi` +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(invobject_CXXFLAGS) $(CXXFLAGS) -MT invobject-invobject.obj -MD -MP -MF -c -o invobject-invobject.obj `if test -f 'invobject.cpp'; then $(CYGPATH_W) 'invobject.cpp'; else $(CYGPATH_W) '$(srcdir)/invobject.cpp'; fi` + +rootinvobject-rootinvobject.o: rootinvobject.cpp + source='rootinvobject.cpp' object='rootinvobject-rootinvobject.o' libtool=no \ + DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rootinvobject_CXXFLAGS) $(CXXFLAGS) -c -o rootinvobject-rootinvobject.o `test -f 'rootinvobject.cpp' || echo '$(srcdir)/'`rootinvobject.cpp +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rootinvobject_CXXFLAGS) $(CXXFLAGS) -MT rootinvobject-rootinvobject.o -MD -MP -MF -c -o rootinvobject-rootinvobject.o `test -f 'rootinvobject.cpp' || echo '$(srcdir)/'`rootinvobject.cpp + +rootinvobject-rootinvobject.obj: rootinvobject.cpp + source='rootinvobject.cpp' object='rootinvobject-rootinvobject.obj' libtool=no \ + DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rootinvobject_CXXFLAGS) $(CXXFLAGS) -c -o rootinvobject-rootinvobject.obj `if test -f 'rootinvobject.cpp'; then $(CYGPATH_W) 'rootinvobject.cpp'; else $(CYGPATH_W) '$(srcdir)/rootinvobject.cpp'; fi` +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rootinvobject_CXXFLAGS) $(CXXFLAGS) -MT rootinvobject-rootinvobject.obj -MD -MP -MF -c -o rootinvobject-rootinvobject.obj `if test -f 'rootinvobject.cpp'; then $(CYGPATH_W) 'rootinvobject.cpp'; else $(CYGPATH_W) '$(srcdir)/rootinvobject.cpp'; fi` + +completeex-completeex.o: completeex.cpp + source='completeex.cpp' object='completeex-completeex.o' libtool=no \ + DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(completeex_CXXFLAGS) $(CXXFLAGS) -c -o completeex-completeex.o `test -f 'completeex.cpp' || echo '$(srcdir)/'`completeex.cpp +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(completeex_CXXFLAGS) $(CXXFLAGS) -MT completeex-completeex.o -MD -MP -MF -c -o completeex-completeex.o `test -f 'completeex.cpp' || echo '$(srcdir)/'`completeex.cpp + +completeex-completeex.obj: completeex.cpp + source='completeex.cpp' object='completeex-completeex.obj' libtool=no \ + DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(completeex_CXXFLAGS) $(CXXFLAGS) -c -o completeex-completeex.obj `if test -f 'completeex.cpp'; then $(CYGPATH_W) 'completeex.cpp'; else $(CYGPATH_W) 'completeex.cpp'; fi` +# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(completeex_CXXFLAGS) $(CXXFLAGS) -MT completeex-completeex.obj -MD -MP -MF -c -o completeex-completeex.obj `if test -f 'completeex.cpp'; then $(CYGPATH_W) 'completeex.cpp'; else $(CYGPATH_W) 'completeex.cpp'; fi` + +mostlyclean-deps: + -rm -f $(DEPDIR)/*.Po + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +all-am: Makefile $(PROGRAMS) + +mostlyclean-generic: + +clean-generic: + +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool mostlyclean-deps + +.MAKE: + +.PHONY: all all-am clean clean-binPROGRAMS \ + clean-generic clean-libtool mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: +# DO NOT DELETE Modified: trunk/stdair/doc/tutorial/src/rootinvobject.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/rootinvobject.cpp 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/tutorial/src/rootinvobject.cpp 2010-11-07 13:29:26 UTC (rev 364) @@ -1,13 +1,12 @@ +// STL +#include <cassert> // StdAir +#include <stdair/bom/BomRoot.hpp> +#include <stdair/bom/Inventory.hpp> #include <stdair/factory/FacBomManager.hpp> -#include <stdair/bom/BomRoot.hpp> -// These lines are needed for use of cout and endl -using std::cout; -using std::endl; - -int main() -{ +// /////////////////////// M A I N /////////////////////////// +int main() { // Create the root of the Bom tree (i.e., a BomRoot object) stdair::BomRoot& lBomRoot = stdair::FacBom<stdair::BomRoot>::instance().create(); @@ -20,20 +19,23 @@ // Link the inventory for the Airline BA with the root of the Bom tree stdair::FacBomManager::instance().addToList (lBomRoot, lBAInv); - // Display the Bomroot object code - cout << lBomRoot.describeKey() << endl; + // Display the Bomroot object + std::cout << lBomRoot << std::endl; // Store the list of airline inventory const stdair::InventoryList_T& lInventoryList = stdair::BomManager::getList<stdair::Inventory> (lBomRoot); - // Skim through the airline inventory list + + // Browse through the airline inventory list for (stdair::InventoryList_T::const_iterator itInv = lInventoryList.begin(); - itInv != lInventoryList.end(); ++itInv) { - const stdair::Inventory* lInv_ptr = *itInv; - // Display the airline code - cout << " Inventory: " << lInv_ptr->describeKey() << endl; + itInv != lInventoryList.end(); ++itInv) { + const stdair::Inventory* lInv_ptr = *itInv; + assert (lInv_ptr != NULL); + + // Display the airline code + std::cout << " Inventory: " << *lInv_ptr << std::endl; } - // Exit program: + // Exit program return 0; } Modified: trunk/stdair/doc/tutorial/src/rootobject.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/rootobject.cpp 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/tutorial/src/rootobject.cpp 2010-11-07 13:29:26 UTC (rev 364) @@ -1,19 +1,16 @@ // StdAir -#include <stdair/factory/FacBomManager.hpp> #include <stdair/bom/BomRoot.hpp> +#include <stdair/factory/FacBomManager.hpp> -// These lines are needed for use of cout and endl -using std::cout; -using std::endl; +// /////////////////////// M A I N /////////////////////////// +int main() { -int main() -{ - // Create the root of the Bom tree (i.e., a BomRoot object) + // Create the root of the BOM tree (i.e., a BomRoot object) stdair::BomRoot& lBomRoot = stdair::FacBom<stdair::BomRoot>::instance().create(); - // Display the Bomroot object code - cout << lBomRoot.describeKey() << endl; + // Display the Bomroot object + std::cout << lBomRoot << std::endl; // Exit program: return 0; Modified: trunk/stdair/doc/tutorial/tutorial.doc =================================================================== --- trunk/stdair/doc/tutorial/tutorial.doc 2010-11-06 12:49:07 UTC (rev 363) +++ trunk/stdair/doc/tutorial/tutorial.doc 2010-11-07 13:29:26 UTC (rev 364) @@ -1,18 +1,40 @@ /*! -\page tutorial Tutorials +\page tutorials Tutorials \addindex Tutorial This page contains some tutorial examples that will help you getting started using StdAir. Most examples show how to construct some simple -business managment objects. The source codes for these examples -can be found in doc/tutorial/src. +business objects, i.e., instances of the so-named Business Object +Model (BOM). +The source code for these examples can be found in the +<tt>doc/tutorial/src</tt> directory. In that directory, there is also +a Make-file, named <tt>makefile.tutorial</tt>, allowing compiling all +the examples. Hence (\ref N), just go to the tutorial source +directory, and issue the following command: + +\verbatim +make -f makefile.tutorial +\endverbatim + Examples of basic functionality: -- \ref rootobject -- \ref invobject -- \ref rootinvobject +- \ref tutorial01_rootobject +- \ref tutorial02_invobject +- \ref tutorial03_rootinvobject More complete examples: -- \ref completeex +- \ref tutorial04_completeex +\note +\anchor N + +(N) - The configuration script must have already been launched (at +least) once. To run the configuration script the first time, go to the +top directory (where the StdAir package has been un-packed), and issue +either of the following two commands, depending on whether the StdAir +project has been checked out from the Subversion repository or +downloaded as a tar-ball package from the Sourceforge Web site: + - <tt>./autogen.sh</tt> + - <tt>./configure</tt> + */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <den...@us...> - 2010-11-07 21:47:32
|
Revision: 365 http://stdair.svn.sourceforge.net/stdair/?rev=365&view=rev Author: denis_arnaud Date: 2010-11-07 21:47:26 +0000 (Sun, 07 Nov 2010) Log Message: ----------- [Doc] Improved the tutorial section layout. Modified Paths: -------------- trunk/stdair/doc/local/help_wanted.doc trunk/stdair/doc/local/sources.mk trunk/stdair/doc/local/users_guide.doc trunk/stdair/doc/tutorial/sources.mk trunk/stdair/doc/tutorial/src/completeex.cpp trunk/stdair/doc/tutorial/src/invobject.cpp trunk/stdair/doc/tutorial/src/rootinvobject.cpp trunk/stdair/doc/tutorial/src/rootobject.cpp trunk/stdair/doc/tutorial/tutorial.doc Removed Paths: ------------- trunk/stdair/doc/tutorial/01_rootobject.doc trunk/stdair/doc/tutorial/02_invobject.doc trunk/stdair/doc/tutorial/03_rootinvobject.doc trunk/stdair/doc/tutorial/04_completeex.doc Modified: trunk/stdair/doc/local/help_wanted.doc =================================================================== --- trunk/stdair/doc/local/help_wanted.doc 2010-11-07 13:29:26 UTC (rev 364) +++ trunk/stdair/doc/local/help_wanted.doc 2010-11-07 21:47:26 UTC (rev 365) @@ -3,27 +3,30 @@ <b>Do not ask what StdAir can do for you. Ask what you can do for StdAir.</b> -You can help us to develop the StdAir library. There are always a lot of things -you can do: +You can help us to develop the StdAir library. There are always a lot +of things you can do: - Start using StdAir - Tell your friends about StdAir and help them to get started using it -- If you find a bug, report it to us. Without your help we can never hope to -produce a bug free code. +- If you find a bug, report it to us (on the <a +href="https://sourceforge.net/apps/trac/stdair/newticket">dedicated +Sourceforge's Trac Web site</a>). Without your help we can never hope +to produce a bug free code. - Help us to improve the documentation by providing information about documentation bugs -- Answer support requests in the StdAir discussion forums on SourceForge. If -you know the answer to a question, help others to overcome their StdAir -problems. -- Help us to improve our algorithms. If you know of a better way (e.g. that -is faster or requires less memory) to implement some of our algorithms, then -let us know. -- Help us to port StdAir to new platforms. If you manage to compile StdAir on a -new platform, then tell us how you did it. -- Send us your code. If you have a good StdAir compatible code, which you can -release under the LGPL, and you think it should be included in StdAir, then -send it to us. -- Become an StdAir developer. Send us (see the \ref authors page) an e-mail and tell what you can do for -StdAir. +- Answer support requests in the StdAir <a +href="https://sourceforge.net/apps/phpbb/stdair/">discussion +forums</a> on SourceForge. If you know the answer to a question, help +others to overcome their StdAir problems. +- Help us to improve our algorithms. If you know of a better way +(e.g., that is faster or requires less memory) to implement some of our +algorithms, then let us know. +- Help to port StdAir to new platforms. If you manage to compile +StdAir on a new platform, then tell how you did it. +- Send your code. If you have a good StdAir compatible code, which +you can release under the LGPL, and you think it should be included in +StdAir, then send it to the communauty. +- Become an StdAir developer. Send us (see the \ref authors page) an +e-mail and tell what you can do for StdAir. */ Modified: trunk/stdair/doc/local/sources.mk =================================================================== --- trunk/stdair/doc/local/sources.mk 2010-11-07 13:29:26 UTC (rev 364) +++ trunk/stdair/doc/local/sources.mk 2010-11-07 21:47:26 UTC (rev 365) @@ -9,9 +9,9 @@ $(top_srcdir)/doc/local/howto_release.doc \ $(top_srcdir)/doc/local/installation.doc \ $(top_srcdir)/doc/local/linking.doc \ + $(top_srcdir)/doc/local/verification.doc \ $(top_srcdir)/doc/local/test.doc \ - $(top_srcdir)/doc/local/users_guide.doc \ - $(top_srcdir)/doc/local/verification.doc + $(top_srcdir)/doc/local/users_guide.doc html_local_sources = \ $(top_srcdir)/doc/local/stdair_footer.html \ Modified: trunk/stdair/doc/local/users_guide.doc =================================================================== --- trunk/stdair/doc/local/users_guide.doc 2010-11-07 13:29:26 UTC (rev 364) +++ trunk/stdair/doc/local/users_guide.doc 2010-11-07 21:47:26 UTC (rev 365) @@ -1,8 +1,8 @@ /*! \page users_guide Users Guide -\section toc Table of Contents -- \ref introduction +\section ug_toc Table of Contents +- \ref ug_introduction - \ref predefined_types - \ref scalar_types - \ref vector_types @@ -25,7 +25,7 @@ - \ref itfile_class -\section introduction Introduction +\section ug_introduction Introduction The \c StdAir library contains classes for airline business management. This document does not cover all the aspects of the \c StdAir library. It Deleted: trunk/stdair/doc/tutorial/01_rootobject.doc =================================================================== --- trunk/stdair/doc/tutorial/01_rootobject.doc 2010-11-07 13:29:26 UTC (rev 364) +++ trunk/stdair/doc/tutorial/01_rootobject.doc 2010-11-07 21:47:26 UTC (rev 365) @@ -1,13 +0,0 @@ -/*! -\page tutorial01_rootobject Creating a BOM root object - -In this example we are constructing a BOM root object (i.e., a root for -all the classes in the project): - -\include rootobject.cpp - -When you run this program, the output will look: - -\include rootobject.ref - -*/ Deleted: trunk/stdair/doc/tutorial/02_invobject.doc =================================================================== --- trunk/stdair/doc/tutorial/02_invobject.doc 2010-11-07 13:29:26 UTC (rev 364) +++ trunk/stdair/doc/tutorial/02_invobject.doc 2010-11-07 21:47:26 UTC (rev 365) @@ -1,12 +0,0 @@ -/*! -\page tutorial02_invobject Creating an Inventory object - -In this example we are constructing an airline inventory whose code is "BA": - -\include invobject.cpp - -When you run this program, the output will look: - -\include invobject.ref - -*/ Deleted: trunk/stdair/doc/tutorial/03_rootinvobject.doc =================================================================== --- trunk/stdair/doc/tutorial/03_rootinvobject.doc 2010-11-07 13:29:26 UTC (rev 364) +++ trunk/stdair/doc/tutorial/03_rootinvobject.doc 2010-11-07 21:47:26 UTC (rev 365) @@ -1,13 +0,0 @@ -/*! -\page tutorial03_rootinvobject Linking an inventory object with the BOM root object - -In this example we are linking an airline inventory whose code is "BA" -with the BOM root object. - -\include rootinvobject.cpp - -When you run this program, the output will look: - -\include rootinvobject.ref - -*/ Deleted: trunk/stdair/doc/tutorial/04_completeex.doc =================================================================== --- trunk/stdair/doc/tutorial/04_completeex.doc 2010-11-07 13:29:26 UTC (rev 364) +++ trunk/stdair/doc/tutorial/04_completeex.doc 2010-11-07 21:47:26 UTC (rev 365) @@ -1,12 +0,0 @@ -/*! -\page tutorial04_completeex Constructing a complete BOM tree - -In this example we are constructing a complete BOM tree: - -\include completeex.cpp - -When you run this program, the output will look: - -\include completeex.ref - -*/ Modified: trunk/stdair/doc/tutorial/sources.mk =================================================================== --- trunk/stdair/doc/tutorial/sources.mk 2010-11-07 13:29:26 UTC (rev 364) +++ trunk/stdair/doc/tutorial/sources.mk 2010-11-07 21:47:26 UTC (rev 365) @@ -1,6 +1,2 @@ doc_tutorial_sources = \ - $(top_srcdir)/doc/tutorial/tutorial.doc \ - $(top_srcdir)/doc/tutorial/01_rootobject.doc \ - $(top_srcdir)/doc/tutorial/02_invobject.doc \ - $(top_srcdir)/doc/tutorial/03_rootinvobject.doc \ - $(top_srcdir)/doc/tutorial/04_completeex.doc + $(top_srcdir)/doc/tutorial/tutorial.doc Modified: trunk/stdair/doc/tutorial/src/completeex.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/completeex.cpp 2010-11-07 13:29:26 UTC (rev 364) +++ trunk/stdair/doc/tutorial/src/completeex.cpp 2010-11-07 21:47:26 UTC (rev 365) @@ -1,3 +1,7 @@ +/*! + * \page tut_completeex_cpp Tutorial Full Basic Example + * \code + */ // STL #include <cassert> // StdAir @@ -337,3 +341,7 @@ // Exit program: return 0; } + +/*! + * \endcode + */ Modified: trunk/stdair/doc/tutorial/src/invobject.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/invobject.cpp 2010-11-07 13:29:26 UTC (rev 364) +++ trunk/stdair/doc/tutorial/src/invobject.cpp 2010-11-07 21:47:26 UTC (rev 365) @@ -1,3 +1,7 @@ +/*! + * \page tut_invobject_cpp Tutorial for the BOM Inventory Object Creation + * \code + */ // StdAir #include <stdair/bom/BomRoot.hpp> #include <stdair/bom/Inventory.hpp> @@ -19,3 +23,7 @@ // Exit program return 0; } + +/*! + * \endcode + */ Modified: trunk/stdair/doc/tutorial/src/rootinvobject.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/rootinvobject.cpp 2010-11-07 13:29:26 UTC (rev 364) +++ trunk/stdair/doc/tutorial/src/rootinvobject.cpp 2010-11-07 21:47:26 UTC (rev 365) @@ -1,3 +1,7 @@ +/*! + * \page tut_rootinvobject_cpp Tutorial for the BOM Root and Inventory Objects Creation + * \code + */ // STL #include <cassert> // StdAir @@ -7,6 +11,7 @@ // /////////////////////// M A I N /////////////////////////// int main() { + // Create the root of the Bom tree (i.e., a BomRoot object) stdair::BomRoot& lBomRoot = stdair::FacBom<stdair::BomRoot>::instance().create(); @@ -39,3 +44,7 @@ // Exit program return 0; } + +/*! + * \endcode + */ Modified: trunk/stdair/doc/tutorial/src/rootobject.cpp =================================================================== --- trunk/stdair/doc/tutorial/src/rootobject.cpp 2010-11-07 13:29:26 UTC (rev 364) +++ trunk/stdair/doc/tutorial/src/rootobject.cpp 2010-11-07 21:47:26 UTC (rev 365) @@ -1,3 +1,7 @@ +/*! + * \page tut_rootobject_cpp Tutorial for the BOM Root Object Creation + * \code + */ // StdAir #include <stdair/bom/BomRoot.hpp> #include <stdair/factory/FacBomManager.hpp> @@ -15,3 +19,7 @@ // Exit program: return 0; } + +/*! + * \endcode + */ Modified: trunk/stdair/doc/tutorial/tutorial.doc =================================================================== --- trunk/stdair/doc/tutorial/tutorial.doc 2010-11-07 13:29:26 UTC (rev 364) +++ trunk/stdair/doc/tutorial/tutorial.doc 2010-11-07 21:47:26 UTC (rev 365) @@ -1,40 +1,137 @@ /*! \page tutorials Tutorials -\addindex Tutorial +\section tut_toc Table of Contents +- \ref tut_introduction + - \ref tut_intro_configuration + - \ref tut_intro_building +- \ref tut_short_examples + - \ref tut01_rootobject + - \ref tut02_invobject + - \ref tut03_rootinvobject +- \ref tut_full_examples + - \ref tut04_completeex + +\section tut_introduction Introduction This page contains some tutorial examples that will help you getting started using StdAir. Most examples show how to construct some simple business objects, i.e., instances of the so-named Business Object Model (BOM). +\subsection tut_intro_configuration Preparing the StdAir Project for Development + +The configuration script must have already been launched (at +least) once. To run the configuration script the first time, go to the +top directory (where the StdAir package has been un-packed), and issue +either of the following two commands, depending on whether the StdAir +project has been checked out from the Subversion repository or +downloaded as a tar-ball package from the Sourceforge Web site: + - <tt>./autogen.sh</tt> + - <tt>./configure</tt> + +\subsection tut_intro_building Building the Tutorials + The source code for these examples can be found in the <tt>doc/tutorial/src</tt> directory. In that directory, there is also a Make-file, named <tt>makefile.tutorial</tt>, allowing compiling all -the examples. Hence (\ref N), just go to the tutorial source +the examples. Hence, just go to the tutorial source directory, and issue the following command: \verbatim make -f makefile.tutorial \endverbatim +\section tut_short_examples Short Examples Examples of basic functionality: -- \ref tutorial01_rootobject -- \ref tutorial02_invobject -- \ref tutorial03_rootinvobject +- \ref tut01_rootobject +- \ref tut02_invobject +- \ref tut03_rootinvobject +\subsection tut01_rootobject Creating a BOM root object + +In this example we are constructing a BOM root object (i.e., a root for +all the classes in the project). + +\dontinclude rootobject.cpp +First, we create an object \c lBomRoot of the class <tt>stdair::BomRoot</tt>. +\skipline lBomRoot +\line FacBom +Then, the content of that object is displayed on the standard output +(<tt>std::cout</tt>). +\skipline cout + +When this program is run, the output should look like: + +\include rootobject.ref + +See the corresponding full program (\ref tut_rootobject_cpp) for more details. + +\subsection tut02_invobject Creating an Inventory object + +In this example we are constructing an airline inventory object whose +code is "BA": + +\dontinclude invobject.cpp +First, we create an object \c lBAKey of the class <tt>stdair::InventoryKey</tt>. +\skipline lBAKey +Thanks to that key, an object \c lBAInv of the class +<tt>stdair::InventoryKey</tt> can be created. +\skipline lBAInv +\line FacBom +Then, the content of that object is displayed on the standard output +(<tt>std::cout</tt>). +\skipline cout + +When this program is run, the output should look like: + +\include invobject.ref + +See the corresponding full program (\ref tut_invobject_cpp) for more details. + +\subsection tut03_rootinvobject Linking an inventory object with the BOM root object + +In this example we are linking an airline inventory object with the +root of the BOM tree. + +\dontinclude rootinvobject.cpp + +Now that we are able to build both a stdair::BomRoot and +stdair::Inventory objects, we shall see how to link them. +That operation is as simple as using the +<tt>stdair::FacBomManager::addToList()</tt> method: +\skipline addToList + +From the BomRoot object instance, the list of inventories can then be +retrieved... +\skipline lInventoryList +\line getList + +... and browsed: +\skipline const_iterator +\until } + +When this program is run, the output should look like: + +\include rootinvobject.ref + +See the corresponding full program (\ref tut_rootinvobject_cpp) for more +details. + +\section tut_full_examples Full Examples + More complete examples: -- \ref tutorial04_completeex +- \ref tut04_completeex -\note -\anchor N +\subsection tut04_completeex Constructing a complete BOM tree -(N) - The configuration script must have already been launched (at -least) once. To run the configuration script the first time, go to the -top directory (where the StdAir package has been un-packed), and issue -either of the following two commands, depending on whether the StdAir -project has been checked out from the Subversion repository or -downloaded as a tar-ball package from the Sourceforge Web site: - - <tt>./autogen.sh</tt> - - <tt>./configure</tt> +In this example we are constructing a complete BOM tree. +\dontinclude completeex.cpp + +When this program is run, the output should look like: + +\include completeex.ref + +See the corresponding full program (\ref tut_completeex_cpp) for more details. + */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |