C++ Library containing a lot of needful things: Stack Trace, Command Line Parser, Resource Handling, Configuration Files, Unix Command Execution, Directories, Regular Expressions, Tokenizer, Function Trace, Standard Extensions.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
244 lines
10 KiB
244 lines
10 KiB
22 years ago
|
/** @mainpage
|
||
|
|
||
21 years ago
|
The official homepage is on:
|
||
18 years ago
|
- http://marc.waeckerlin.org/computer/c_/mrw-c_/index
|
||
|
|
||
|
The minimal runtime package (for use with VideoreKorder):
|
||
|
|
||
|
Minimalpaket (für den VideoreKorder):
|
||
|
|
||
|
- <a href="/downloads/@PACKAGENAME@-minimal-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm">@PACKAGENAME@-minimal-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm</a>
|
||
|
|
||
|
More downloads see @ref downloads.
|
||
21 years ago
|
|
||
|
All features are listed on the <a
|
||
|
href="modules.html">"Modules"</a> page.
|
||
22 years ago
|
|
||
21 years ago
|
@section intro Introduction
|
||
22 years ago
|
|
||
21 years ago
|
Featureful C++ Library containing a lot of needful
|
||
|
things. Everything, I often need, but it's missing in C++ standard
|
||
21 years ago
|
libraries and other common 3rd party libraries, such as <a
|
||
|
href="">log4cxx</a>, cppunit and boost.
|
||
21 years ago
|
|
||
|
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
|
||
22 years ago
|
|
||
21 years ago
|
See the <a href="pages.html">"Related Pages"</a>.
|
||
21 years ago
|
|
||
18 years ago
|
- @ref downloads
|
||
21 years ago
|
- @ref readme
|
||
|
- @ref usage
|
||
|
- @ref threads
|
||
|
- @ref libversion
|
||
|
- @ref license
|
||
|
- @ref install
|
||
|
- @ref news
|
||
|
- @ref changes
|
||
21 years ago
|
*/
|
||
|
|
||
18 years ago
|
/** @page downloads Download and Installation of the MRW-C++ Library
|
||
|
|
||
|
Download this documentation in PDF:
|
||
|
- <a href="/downloads/@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.pdf">@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.pdf</a>
|
||
22 years ago
|
|
||
22 years ago
|
Download this version from here:
|
||
21 years ago
|
- Source
|
||
18 years ago
|
- Source TAR-Ball:
|
||
|
- <a href="/downloads/@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.tar.gz">@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.tar.gz</a>
|
||
|
- 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:
|
||
|
- <a href="/downloads/@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@-1.src.rpm">@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@-1.src.rpm</a>
|
||
18 years ago
|
- Installation:@n <code>sudo rpmbuild --rebuild @PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@-1.src.rpm</code>
|
||
21 years ago
|
- Requirements to build from source:
|
||
21 years ago
|
- boost: http://boost.org
|
||
21 years ago
|
- cppunit: http://cppunit.sf.net
|
||
|
- log4cxx: http://logging.apache.org/log4cxx
|
||
|
- doxygen: http://doxygen.org
|
||
|
- graphviz: http://www.research.att.com/sw/tools/graphviz
|
||
18 years ago
|
- GNU binutils (you also need the development package, if it is separete (e.g. in Debian))
|
||
21 years ago
|
- GNU g++, GNU make, GNU autotools: http://gnu.org
|
||
18 years ago
|
- Binary
|
||
|
- Binary RPM Packages (built on i586/SuSE):
|
||
|
- <a href="/downloads/@PACKAGENAME@-minimal-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm">@PACKAGENAME@-minimal-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm</a>
|
||
18 years ago
|
- Minimal runtime package without debugging support.@n Does not depend on boost and log4cxx and ltdl.@n To be used e.g. with [[:Computer:Linux:Programme:Videorekorder]]
|
||
|
- Installation:@n <code>rpm -Uvh @PACKAGENAME@-minimal-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm</code>
|
||
18 years ago
|
- <a href="/downloads/@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm">@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm</a>
|
||
|
- Full runtime library, no multithreading.
|
||
18 years ago
|
- Installation:@n <code>rpm -Uvh @PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm</code>
|
||
18 years ago
|
- <a href="/downloads/@PACKAGENAME@-mt-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm">@PACKAGENAME@-mt-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm</a>
|
||
|
- Full runtime library, with multithreading support.
|
||
18 years ago
|
- Installation:@n <code>rpm -Uvh @PACKAGENAME@-mt-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm</code>
|
||
18 years ago
|
- <a href="/downloads/@PACKAGENAME@-devel-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm">@PACKAGENAME@-devel-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm</a>
|
||
|
- The package for developers.
|
||
18 years ago
|
- Installation:@n <code>rpm -Uvh @PACKAGENAME@-devel-@MAJOR@.@MINOR@.@LEAST@-1.i586.rpm</code>
|
||
18 years ago
|
- Requirements:
|
||
18 years ago
|
- Boost thread library for multi threading:@n http://boost.org
|
||
18 years ago
|
- log4cxx for automated tracing and function traces:
|
||
|
- http://logging.apache.org/log4cxx
|
||
|
- RPM: <a href="/downloads/log4cxx-0.9.7-3.i386.rpm">log4cxx-0.9.7-3.i386.rpm</a>
|
||
|
- mrw::StackTrace requires:
|
||
|
- the GNU Binutils
|
||
|
- either GNU Compiler gcc or GNU C library glibc
|
||
|
- runs better on: either Linux or Solaris
|
||
21 years ago
|
*/
|
||
22 years ago
|
|
||
21 years ago
|
/** @page usage Usage of the Library: Include and Link
|
||
22 years ago
|
|
||
|
Include the headers you need with prefix @c mrw, e.g.:
|
||
|
|
||
|
@verbatim
|
||
14 years ago
|
\#include <mrw/stacktrace.hxx>
|
||
22 years ago
|
@endverbatim
|
||
|
|
||
21 years ago
|
All classes are in the @c mrw namespace.
|
||
21 years ago
|
|
||
|
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.
|
||
|
|
||
21 years ago
|
Link to the library with option @c -lmrw (or @c -lmrw-mt if your
|
||
|
program is multi threaded), e.g.:
|
||
22 years ago
|
|
||
22 years ago
|
@verbatim
|
||
14 years ago
|
g++ -g -o myprogram myprogram.cxx -lmrw
|
||
22 years ago
|
@endverbatim
|
||
22 years ago
|
|
||
21 years ago
|
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 */
|
||
22 years ago
|
|
||
21 years ago
|
/** @page threads Thread Safety
|
||
21 years ago
|
|
||
20 years ago
|
There is a severe bug in the g++ compiler with version
|
||
|
>= 3.4: The macro @c _REENTRANT is always set and cannot be
|
||
|
used to check whether we are in a multithreaded compilation or
|
||
|
not! See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11953 for
|
||
|
more details. Workaround: To enable multithreading, you must pass
|
||
|
the @c -D_MT compiler flag for the GNU gcc verions 3.4 and above!
|
||
|
|
||
21 years ago
|
To enable thread safety, you must link to @c libmrw-mt instead of
|
||
|
@c libmrw. That means, your link option is: @c -lmrw-mt
|
||
|
|
||
20 years ago
|
For GNU gcc verions 3.4 and above, you must use the compile option
|
||
|
@c -D_MT in addition, because of a severe bug in the compiler.
|
||
|
|
||
21 years ago
|
Different instances of classes can run in different threads, but
|
||
|
instances of classes can not be shared between different threads.
|
||
|
|
||
21 years ago
|
All classes are not thread safe, that means they should either
|
||
|
always be accessed from the same thread, or you are responsible
|
||
21 years ago
|
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
|
||
21 years ago
|
me an email and ask me for it (you find the address in the package
|
||
21 years ago
|
or on my personal homepage: http://marc.waeckerlin.org).
|
||
21 years ago
|
*/
|
||
21 years ago
|
|
||
21 years ago
|
/** @page libversion Library Versioning
|
||
21 years ago
|
|
||
|
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.
|
||
22 years ago
|
*/
|
||
22 years ago
|
|
||
|
/** @page license License
|
||
|
@verbinclude COPYING */
|
||
|
|
||
|
/** @page readme Readme
|
||
|
@verbinclude README */
|
||
|
|
||
22 years ago
|
/** @page install Installation
|
||
|
@verbinclude INSTALL */
|
||
|
|
||
22 years ago
|
/** @page news News
|
||
|
@verbinclude NEWS */
|
||
|
|
||
|
/** @page changes Change Log
|
||
|
@verbinclude ChangeLog */
|
||
21 years ago
|
|
||
|
/** @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 {
|
||
|
}
|