more - a C++ library Code
Brought to you by:
petter_urkedal
XXX old abstract:
libmore is a collection of C++ classes and algorithms designed to work
well with the the standard C++ library. It mainly reflects my own
needs -- in particular you will find types and functions related to
mathematics, quantum mechanics and nuclear physics. There are also
some extensions to the STL library, a class to parse the command line
options, various IO functions (including a system independent binary
format), and an ENSDF (Evaluated Nuclear Data File) fetcher and
parser.
Requirements
============
gc (recommended)
Parts of libmore depends on the Boehm-Demers-Weiser
conservative garbage collector, which is available at
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
When installing, make sure also the headers are accessible in
a standard location, though an -I flag in CPPFLAGS. Else give
the option '--with-bdwgc=TOP_BUILDDIR' to configure.
libffi (optional)
The more::lang module uses libffi (Foreign Function
Interface) if present. libffi is available from
http://sources.redhat.com/libffi/
or in the GCC tree, if you have the habbit of brewing your own
gcc binaries.
curl (optional)
The phys::ens module depends on curl for fetching data. In
case it is missing on your system, see
http://curl.haxx.se/
How to build
============
If you have just checked out the source from the Git repository, run
./autogen.sh first. If you are using a tarball this is not needed, and it
will not work unless you have sufficiently recent Autotools on your system.
In most cases, start with one of these
./configure # to install in /usr/local
./configure --prefix=$HOME/local # to install in $HOME/local
For more options, see
./configure --help
Also, you may first create and cd to a separate build directory and invoke
path/to/configure from there. Check that the grabage collector was detected
if needed. Then type
make
make install
make doc
How to use
==========
An API reference is created by Doxygen from the sources. Type
make doc
which will (after some time) result in the documentation accessible from
$builddir/doc/html/index.html
$builddir/doc/man/man3/*
If $MANPATH is set up, "man more_lang" should display the API
reference of the "more::lang" module, etc. The documentation is not
installed at the moment and will not be cleand by "make clean".
Using libmore with autoconf
---------------------------
Autoconf macro is installed in
$prefix/share/aclocal/more.m4
Put this in your configure.in:
AM_LIB_MORE(0.7)
CPPFLAGS="$MORE_CPPFLAGS $CPPFLAGS"
LIBS="$MORE_LIBS $LIBS"
or, better, drop the last line and put $(MORE_LIBS) in the appropriate
*_LDADD and *_LIBADD variables in Makefile.am.
Using libmore without autoconf
------------------------------
A config script is installed as
$prefix/bin/more-config
invoke it with the --help option for usage. Otherwise, the library is
installed in standard locations:
Headers in
$prefix/include/more/$pkg -- Headers for the NS "more::$pkg"
$prefix/include/more/bits -- Internal use only
$prefix/include/more/backward -- Obsolete headers
Libraries in
$prefix/lib/libmore.la -- The main library
$prefix/lib/libmorethread.la -- Parts depending on POSIX threads
$prefix/lib/libmorebackward.la -- Obsolete headers
Documentation would have been installed in
$prefix/share/doc/more/en/html -- Not used yet
$prefix/share/man/man3 -- Not used yet
Parts of the library uses UTF-8
-------------------------------
Both the some of the source code and output is UTF-8 encoded when needed.
In particular, the ENSDF module. Hints:
xterm: Something like (replacing the font as proper):
LANG=en_US.utf8 \
xterm -u8 -fn -misc-fixed-medium-r-normal-*-15-*-*-*-c-*-iso10646-1
konsole (KDE):
LANG=en_US.utf8 konsole
emacs: Get 21.x (beta) or the emacs-oc-unicode package.
vim: UTF-8 is supported by versions from 6.0