Cgipp is a small class library which eases the creation of
applications for the World Wide Web, and gives you an easy but
powerful interface to the CGI interface which will increase your
productivity when writing CGI-applications. The Cgipp also provides a
class to ease your creation of HTML-pages which can be used as any
ostream.
The Cgipp Library has five classes (detailed in the documentation):
Cgipp(PS) - The main-class which has all the data
CgiEnv(PS) - Keeps track of the CGI-Environment
DebugTool - ofstream meant for debugging (see test.cpp and
cgi/Debug.H for details)
htmlTool(PS) - Extends ostream with HTML methods
Toolbox(PS) - Very useful tools for CGI-Programming
Advantages when using Cgipp is among other things:
Parses GET and POST transparently and your application will work
equally well whatever method is used.
Gives you a multitude of flexible methods to get the form input
in the class CgiData.
Very good HTML support in the class htmlTool which lets you do
things easily:
htmlTool doc;
doc.printHeader(); // The proper HTTP header needed
doc.title("Small Example");
doc.h1("My large header");
doc << "Some text in your document ended by a linebreak" << br;
doc << li << "list item one" << endl;
doc << li << "list item two" << endl;
doc << "And now a ruler:" << hr;
Fully compatible with both LEDA and STL
It is a very portable library which can be used on a variety of
platforms (several unix flavours and even pcs) with a large number of
servers where it works flawlessly. This also means that your
application may be used on all of these platforms, which most
certainly is of commercial interest (write once, use many).
Why use C++ in CGI applications?
|
It is generally fast, efficient and one of the most powerful
languages around. Some use C++ as an extended and/or easier C with
better typechecking and ADT's. Others use C++ in an object-oriented
fashion with all the advantages OO gives you at almost the same speed
as a C program. Using C++ also gives you access to a wealth of good class
libraries, and good class libraries are something which is alpha-omega
in larger systems. Many cgi-programs are also just interfaces to
already existing C++ systems, and having a C++ and OO CGI-interface
also eases the communication with your other objects.
Cgipp provides an easy-to-use interface to the Common Gateway
Interface, and has small classes which may be used easily in any C++
application. It currently is only tested with g++ and Borland C++ 4.5 ,
but it should be
possible to use it on virtually any C++ compiler with iostreams. This
class library does not require exception handling, template
support, nor RTTI, which all in all makes it much more portable. When
developing software for the Web, you'll often need the same program
working on a multitude of platforms and web servers and Cgipp has been
tested on several unix flavours and on Win95/MS-DOS (16-bit and
32-bit). I have yet to test it on NT but I presume it will work
equally well.
What do I need to use Cgipp?
|
Cgipp has been tested with gcc 2.7.x and libg++ 2.7.x and
should work on all platforms with this compiler. It has also been
tested with Borland C++ 4.5 (both 16 bit and 32 bit). It has also been
heavily tested with SGI C++ for IRIX 6.3. We all know that
there are subtle differences between the different unix flavours so it
MAY not work straight away on your machine even if you have
gcc/libg++ but the use of autoconf reduces the probability of anything
mysterious happening. The same applies to PCs with different compilers (I do not
have access to other compilers on PCs so I have no way to further test
PC compability). If you experience problems, let me know right away so
we might fix it and include that compiler/platform in the upcoming
releases. I (and my happy betatesters) have succesfully tested and
used the Cgipp library on the following platforms/OSs:
IRIX 5.3 (gcc/g++ (yuck!))
IRIX 6.3 (SGI C++)
SunOS 4.1.x (gcc/g++)
Solaris 2.x (gcc/g++ and CC)
DEC OSF/1 and Digital Unix (gcc/g++)
Linux 1.2.13 (Slackware 3.0) (gcc/g++)
MS-DOS 16-bit (bcc)
MS-DOS 32-bit (bcc32)
The Cgipp library has communicated with no apparent problems with
the following servers:
Apache (your best bet)
CERN
NCSA
Netscape (sucks shite!)
Netscape Fasttrack (sucks shite!)
Website (cgi-dos and cgi-shl under Win95)
Cgipp does unlike Cgicc not require exception-handling. To have a
portable library where your programs have a chance of getting
somewhere is just not possible with exception-handling in gcc so
far. The macro-errorhandling system I use gives you more
information than the exceptions did, and does IMVHO a better job.
Where has Cgipp been tested?
|
The library has been tested on the platforms, servers and
compilers mentioned above. It has also been tested and used in many
applications on many sites, among them:
The Legendary Dragonlands - [also uses an extra toolbox] most if
not all of the site is run by approx. 20-30
programs and provides one of the most impressive sights on
Web. (Version 0.1, not upgraded)
Nordlandsposten, a norwegian paper's interactive pages and news
on web. (Version 0.1, not upgraded)
DALI/AHAD, Digital Art Learning Interface/A Hack of an Art Databse.
(several large applications) This system is used for exhibitions, both
on Web and in museums. This is a system praised by Silicon Graphics,
several national newspapers in Norway and practically all of the
cultural elite of Norway. It's breakthrough is the exhibition at the
Kunstindustrimuseum in Oslo this fall, and is an exhibition which
should be visited. (Version 0.2, will not be upgraded)
SDS, Software Development System, a 'pretty large' (8k++ LOC)
system developed as a programming project which used Cgipp for it's
Web-GUI until it's creator grew tired of GUIs.. (Version 0.1)