/*!\page ppl7_usage PPL7 verwenden

\section ppl7_usage_code Programmcode
Innerhalb des Programmcodes ist darauf zu achten, dass die notwendigen Header-Dateien
eingebunden werden. Die Basisfunktionalität ist in der Datei "ppl7.h" zu finden. Diese
sollte daher immer eingebunden werden:
\code
#include <ppl7.h>
\endcode

Wird von weiteren Features gebrauch gemacht, können folgende weitere Include-Dateien
benötigt werden:

\code
#include <ppl7-grafix.h>
#include <ppl7-sound.h>
#include <ppl7-tk.h>
\endcode

Damit die Include-Dateien gefunden werden, sollte der Compiler mit der Ausgabe
von "ppl7-config --cflags" gestartet werden, und der Linker mit "ppl7-config --libs".


Da alle Funktionen der Library im Namespace "ppl7" zu finden sind, muss dies bei
der Verwendung berücksichtigt werden. Dazu gibt es zwei Möglichkeiten:

\li 1. Globale Verwendung der Funktionen\n
   Dazu fügt man am Anfang des Programmcodes folgenden Code ein:
   \code
   using namespace ppl7;
   \endcode
   Danach sind alle Funktionen sofort mit ihrem Namen aufrufbar.
   
\li 2. Gezielte Verwendung der Funktionen\n
   Dazu wird bei Aufruf einer Funktion aus der Library jeweils der Namespace
   "ppl7::" vorangestellt. Beispiel:
   \code
   	ppl7::SendMail Mail;
	ppl7::String d;
	ppl7::MkISO8601Date(&d);			// Datum im String speichern
	
	Mail.setHeader("To","patrick@pfp.de");
	Mail.setHeader("From","patrick@pfp.de");
	Mail.setHeader("Subject","Testmail %s",(char*)d);
	Mail.message.set("Dies ist eine Testmail");
	Mail.setServer("mail.pfp.de:smtp");
	if (!Mail.send()) {
		ppl6::PrintError();
		return 0;
	}
	printf ("ok\n");
    \endcode


\section ppl7_usage_makefile Makefile
Das folgende Beispiel soll als Template für ein Makefile dienen. Wichtig sind die
beiden Zeilen "CFLAGS" und "LIB", in denen das Tool "ppl6-config" aufgerufen wird.
Das Keywort "debug" sagt dem Programm, dass die Debug-Version der Library
verwendet werden soll. Für eine Release-Version sollte aus Performancegründen
das Keywort "release" verwendet werden oder ganz weggelassen werden. Außerdem
empfiehlt es sich die Kompiler Optimierungen zu aktivieren, indem man bei den
CFLAGS "-O2" oder "-O3" hinzufügt. 

\code
CC		= gcc
EXTRA_CFLAGS =
INCLUDE	= -I. -I../include
CFLAGS	= -ggdb -Wall $(INCLUDE) $(EXTRA_CFLAGS) `ppl7-config --cflags debug`
LIB = `ppl7-config --libs debug` -lstdc++
PROGRAM	= ppltestprog

OBJECTS=compile/main.o

$(PROGRAM): compile Makefile $(OBJECTS)
	$(CC) $(CFLAGS) -o $(PROGRAM) $(OBJECTS)  $(LIB)
	-chmod 755 $(PROGRAM)

all: $(PROGRAM)

clean:
	-rm -f compile $(PROGRAM) *.log debug.txt *.core
	
install: $(PROGRAM)
	cp $(PROGRAM) /usr/local/bin
	
compile:
	-mkdir compile

compile/main.o: main.cpp testprog.h Makefile
	$(CC) $(CFLAGS) -o compile/main.o -c main.cpp
\endcode

\section ppl7_usage_autoconf Verwendung von "autoconf"
Soll \b autoconf zur Erkennung der PPL-Library verwendet werden, kann folgendes m4-Makro
verwendet werden:

<b>ppl7.m4</b>
\include ppl7.m4

Das Makro kann beispielsweise so im Configure-Script verwendet werden:
\code
sinclude(autoconf/ppl7.m4)

report_have_ppl7="no"
AX_PATH_LIB_PPL7([7.0.0],
            AC_DEFINE(HAVE_LIBPPL7, 1, [ Define if you have ppl7. ])
            report_have_ppl7="yes"
			AC_SUBST(LIBPPL7_CFLAGS)
			AC_SUBST(LIBPPL7)
			AC_SUBST(LIBPPL7_DEBUG)
			AC_SUBST(LIBPPL7_DEBUG_LIBS)
			AC_SUBST(LIBPPL7_RELEASE_LIBS)
            ,
            AC_MSG_ERROR(no suitable ppl7 available)
            )
\endcode

Es gibt noch ein weiteres Macro, um das vorhandensein eines bestimmten Features
abzufragen. Dieses würde im configure nach dem obrigen Aufruf so eingebunden:
\code
AX_PPL7_FEATURE([zlib],ppl_has_zlib="yes",ppl_has_zlib="no")
AX_PPL7_FEATURE([bzip2],ppl_has_bzip2="yes",ppl_has_bzip2="no")
...
\endcode
Denkbar wäre auch:
\code
AX_PPL7_FEATURE([zlib],,AC_MSG_ERROR(a required feature is missing))
\endcode


Das Makefile aus dem Beispiel oben würde dann so aussehen:
\code
CC		= gcc
EXTRA_CFLAGS =
INCLUDE	= -I. -I../include
CFLAGS	= -ggdb -Wall $(INCLUDE) $(EXTRA_CFLAGS) @LIBPPL7_CFLAGS@
LIB = @LIBPPL7_RELEASE_LIBS@ -lstdc++
PROGRAM	= ppltestprog

OBJECTS=compile/main.o

$(PROGRAM): compile Makefile $(OBJECTS)
	$(CC) $(CFLAGS) -o $(PROGRAM) $(OBJECTS)  $(LIB)
	-chmod 755 $(PROGRAM)

all: $(PROGRAM)

clean:
	-rm -f compile $(PROGRAM) *.log debug.txt *.core
	
install: $(PROGRAM)
	cp $(PROGRAM) /usr/local/bin
	
compile:
	-mkdir compile

compile/main.o: main.cpp testprog.h Makefile
	$(CC) $(CFLAGS) -o compile/main.o -c main.cpp
\endcode

*/
