/** @mainpage
The official homepage is on :
- http : //marc.waeckerlin.org/@PACKAGENAME@/index.html
All features are listed on the < a
href = " modules.html " > " Modules " < / a > page .
@ section intro Introduction
Featureful C + + Library containing a lot of needful
things . Everything , I often need , but it ' s missing in C + + standard
libraries and other common 3 rd party libraries , such as < a
href = " " > log4cxx < / a > , cppunit and boost .
I have paid attention to define simple and a nice to use
interfaces . The library makes use of object orientation , operator
overload and templates , where it makes sense . The library passes
several module tests before each delivery . It is therefore stable
and tested .
@ section support Supported Platforms
The library is generic UNIX , but should also work on Windows . It
is sporadically tested on Windows in Cygwin . Stack trace works on
Linux only , it could theoretically work on Sun Solaris too , but
this is untested . Stack trace without symbol resolution , just
getting the raw addresses , only depends on GNU gcc and should work
on all platforms . Feedback is welcome !
@ section features Missing a Feature , Found a Bug ?
You are missing a feature , or an implementation is too incomplete
for the purpose you need it ? Or you even found a bug ? Just ask me
and I ' ll try to help you ! My email address is in the file AUTHORS
and on my website : http : //marc.waeckerlin.org
@ section moreinfo Additional Information
See the < a href = " pages.html " > " Related Pages " < / a > .
- @ ref readme
- @ ref download
- @ ref usage
- @ ref threads
- @ ref libversion
- @ ref license
- @ ref install
- @ ref news
- @ ref changes
*/
/** @page download Download and Installation
Download this version from here :
- Requirements :
- Boost thread library for multi threading :
http : //boost.org
- log4cxx for automated tracing and function traces :
- http : //logging.apache.org/log4cxx
- RPM : http : //marc.waeckerlin.org/mrw-c++/log4cxx-0.9.7-1.i386.rpm
- @ ref mrw : : StackTrace requires :
- the GNU Binutils
- either GNU Compiler gcc or GNU C library glibc
- runs better on : either Linux or Solaris
- Binary
- Binary RPM Packages ( built on i586 / SuSE ) :
- http : //marc.waeckerlin.org/@PACKAGENAME@/@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm
- Installation : < br >
< code > rpm - Uvh @ PACKAGENAME @ - @ MAJOR @ . @ MINOR @ . @ LEAST @ - 1. i586 . rpm < / code >
- http : //marc.waeckerlin.org/@PACKAGENAME@/@PACKAGENAME@-mt-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm
- Installation : < br >
< code > rpm - Uvh @ PACKAGENAME @ - mt - @ MAJOR @ . @ MINOR @ . @ LEAST @ - 1. i586 . rpm < / code >
- http : //marc.waeckerlin.org/@PACKAGENAME@/@PACKAGENAME@-devel-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm
- Installation : < br >
< code > rpm - Uvh @ PACKAGENAME @ - devel - @ MAJOR @ . @ MINOR @ . @ LEAST @ - 1. i586 . rpm < / code >
- Source
- Requirements to build from source :
- boost : http : //boost.org
- cppunit : http : //cppunit.sf.net
- log4cxx : http : //logging.apache.org/log4cxx
- doxygen : http : //doxygen.org
- graphviz : http : //www.research.att.com/sw/tools/graphviz
- GNU binutils ( you also need the development package , if it is
separete ( e . g . in Debian ) )
- GNU g + + , GNU make , GNU autotools : http : //gnu.org
- Source TAR - Ball :
- http : //marc.waeckerlin.org/@PACKAGENAME@/@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.tar.gz
- Installation :
- # < code > tar xzf @ PACKAGENAME @ - @ MAJOR @ . @ MINOR @ . @ LEAST @ . tar . gz < / code >
- # < code > cd @ PACKAGENAME @ - @ MAJOR @ . @ MINOR @ . @ LEAST @ < / code >
- # < code > . / configure & & make all install < / code >
- Source RPM Packages :
- http : //marc.waeckerlin.org/@PACKAGENAME@/@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@-1.src.rpm
- Installation : < br >
< code > sudo rpmbuild - - rebuild @ PACKAGENAME @ - @ MAJOR @ . @ MINOR @ . @ LEAST @ - 1. src . rpm < / code >
Download this documentation in PDF :
- http : //marc.waeckerlin.org/@PACKAGENAME@/@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.pdf
*/
/** @page usage Usage of the Library: Include and Link
Include the headers you need with prefix @ c mrw , e . g . :
@ verbatim
# include <mrw/stacktrace.hpp>
@ endverbatim
All classes are in the @ c mrw namespace .
if you want the mrw : : StackTrace to evaluate file and line numbers ,
then you need to compile with debug information enabled , thats
option @ c - g .
Link to the library with option @ c - lmrw ( or @ c - lmrw - mt if your
program is multi threaded ) , e . g . :
@ verbatim
g + + - g - o myprogram myprogram . cpp - lmrw
@ endverbatim
For the @ ref AutoTools " unexpected handler " you need to link to
@ c - lmrwexcstderr or @ c - lmrwexclog4cxx ( or @ c - lmrwexcstderr - mt
or @ c - lmrwexclog4cxx - mt if your program is multi threaded ) .
For the @ ref AutoFunctionTrace " automated function trace " you need
to link to @ c - lmrwautofunctiontracelog4cxx ( or @ c
- lmrwautofunctiontracelog4cxx - mt if your program is multi
threaded ) . In addition , you must compile and link your program
with the GNU compiler specific option @ c - finstrument - functions */
/** @page threads Thread Safety
To enable thread safety , you must link to @ c libmrw - mt instead of
@ c libmrw . That means , your link option is : @ c - lmrw - mt
Different instances of classes can run in different threads , but
instances of classes can not be shared between different threads .
All classes are not thread safe , that means they should either
always be accessed from the same thread , or you are responsible
for locking .
All methods are threads safe , that means , they can be called at
the same time from different threads . But not on the same object .
This means : One instance should only be used within one single
thread . Different instances of the same class can be accessed
simultaneousely in different threads .
If you need more thread safety as a feature , please send
me an email and ask me for it ( you find the address in the package
or on my personal homepage : http : //marc.waeckerlin.org).
*/
/** @page libversion Library Versioning
The library and the package have the same version number . This
means , if you for example install the package versioned
mrw - c + + - 2.6 .4 . tar . gz , then it builds a shared library of the same
version , named libmrw . so .2 .6 .4 . The naming is
version = MAJOR . MINOR . LEAST . What do the numbers mean :
< dl >
< dt > MAJOR < / dt >
< dd > If the major number is increased , then the backwards
compatibility was broken . Either there was an incompatible
change in the implementation , or in the interface , e . g . a change
in method parameters , or even parts of the library have been
removed . < / dd >
< dt > MINOR < / dt >
< dd > If the minor number changes , then it remains backward
compatible . Either there was a minor change in the
implementation or behavior of some features , a bigger bugfix , or
new feature were added . A program linked to a previous library
with smaller minor number still works , but a program linked to
newer library with a higher minor number may not work with a
library that has a lower minor number . This is a one way ,
backwards only compatibility . < / dd >
< dt > LEAST < / dt >
< dd > The least number is increased for small changes , bugfixes ,
changes in the documentation and so on . Except the bugs , changes
in the least number are fully forward and backward
compatible . < / dd >
< / dl >
This means , programs linked to mrw - c + + version 2.6 .4 will work
with library version 2.6 .3 , also with version 2.6 .5 , or with
version 2.7 .1 , but it won ' t work with version 2.5 .4 nor with 1.1 .3
nor with 3.1 .4 .
You can see the version of the library by issuing the command @ c what .
*/
/** @page license License
@ verbinclude COPYING */
/** @page readme Readme
@ verbinclude README */
/** @page install Installation
@ verbinclude INSTALL */
/** @page news News
@ verbinclude NEWS */
/** @page changes Change Log
@ verbinclude ChangeLog */
/** @brief the namespace for this library
All classes and all functions ( except global operators ) are placed
in this namespace .
For an overview , better see the < a
href = " modules.html " > " Modules " < / a > page .
*/
namespace mrw {
}