Last chance to catch some really neat URLs in CUJ, as Victor moves his software bird dog service to our website.
This final installment represents the bottom of the mailbag. I've enjoyed interacting with CUJ readers about where to find the best C/C++ freeware and shareware sources. However, providing great links to software in a paper-based publication is difficult to do. Typing in lots of URLs is a less than enjoyable way to read a magazine. Also, the swift change of software revisions and websites makes it hard to guarantee that you'll be able to find the link by the time it makes its way to you in print. That's why you'll find C/C++ Sources has moved to the CUJ website as CUJ Favorite Links (http://www.cuj.com) in order to bring you better, faster, and more reliable information. From now on, you'll see only twice-yearly updates designed to "remind" you of what you might be missing.
Scott McKellar <mck9@swbell.net> writes:
In your July 1997 column in CUJ, you mentioned two packages for finite state machines: FIRE Lite and Grail. From your description, both packages are apparently oriented toward parsing text, such as regular expressions.
Your readers may also be interested in Libero, a code generator from iMatix, especially if they need a finite state machine for purposes other than parsing.
Libero reads a text file specifying the states, events, and actions. Then it generates source code in any of (at last count) fourteen different languages, including C, C++, and Cobol. Libero is written in C, and runs under Unix, MS-DOS, Windows NT, OS/2, and VMS.
You can freely download Libero (and several other packages) from:
http://www.imatix.comwhich also provides some fairly entertaining, if somewhat eccentric, documentation.
Victor writes:
Thanks, Scott, I'm always interested in sharing great links with readers!
baparicio@usa.net writes:
A portable SQL DBMS would be great!
Victor writes:
The Beagle Freeware Database home page, maintained by software author Robert Klein <robk@pulse-sys.com> organizes source code, documentation, and support for this new relational DBMS. Beagle's features are accessible primarily through its C-callable API. Currently, Beagle supports a wide variety of Unix platforms including: Linux 1.2.13, SCO Openserver, FreeBSD 2.1R, SGI IRIX v5.3, Solaris v2.x, and HP/UX. Porting projects are underway for Windows 95, NT, and other platforms. A support mailing list is available too. For code and docs, see:
http://tiny.iapnet.com/rob/beagle.html
mask@sanet.com.br writes:
Please send me frequenty asked questions of the C/C++ questions. I like very much of this Home.
Victor writes:
There are plain-text and HTML versions available. First the HTML version
http://www.faqs.org/faqs/by-newsgroup/comp/comp.lang.c++.htmlAnd now the plain text version where it must be downloaded in seven parts:
ftp://rtfm.mit.edu/pub/usenet/comp.lang.c++/There is also a book which contains the FAQ plus "about 500% more stuff" called C++ Faqs : Frequently Asked Questions, by Marshall P. Cline, Greg A. Lomow. 224 pages, Addison-Wesley, September 1994. ISBN: 0201589583.
bfairl@iol.ie writes:
Hi C/C++ Answer Man,
I am trying to implement a set of class libraries that insulate the user from changes such as the addition or reordering of virtual functions or the addition of data members in a Visual C++ 4.2/5.0 environment. I want to allow all of the following cases :
MyClass not derived from anything
MyClass derived from an MFC class
MyClass derived from MyClass1 in same library
MyClass derived from MyClass2 across libraries and all combinations of theseI was wondering whether you have any suggestions as to the approach to take. I have looked at the suggestion by Bjarne Stroustrup in The Design and Evolution of C++, which involves using namespaces.
Victor writes:
I've had excellent success using the OLE Control model (also known as OCX or ActiveX). You get all the benefits of easy encapsulation, plus transparent versioning of interfaces which allows you to add or subtract functions and data members at any time. For a light-weight version, you can use the ActiveX Template Library, which combines an STL-like system with the power of inheritance to produce powerful yet small objects. ATL produces COM objects, which are a subset of the overall OLE Control model.
I hope this is of sufficient use; if needed, I can give pointers to articles on specific articles about this topics. Most of them would be through http://www.microsoft.com/msdn. See also Adam Denning's book ActiveX Controls Inside Out, 2nd Ed.
dhg@goodco.com writes:
Anybody know where the object-oriented bison parser (binson++ ?) distribution is on the net?
Victor writes:
Once again, for those who may have missed it:
BISON ftp://prep.ai.mit.edu/pub/gnu/bison-1.25.tar.gz BISON++ ftp://ftp.th-darmstadt.de/pub/programming/languages/C++/tools/flex++bison++/
Stephane Chevrier <chevrier@esker.fr> writes:I'm desperately looking for the source code (in C/C++) of a driver that would generate the FAX G3 format.
Victor writes:
In saying that you need "G3," keep in mind that this is supported by TIFF file formats. Here's a pointer to the "Unofficial Tiff Page"
http://home.earthlink.net/~ritter/tiff/Section 18 of the comp.compression FAQ appears below:
Subject: [18] I need specs and source for TIFF and CCITT group 4 FaxSpecs for Group 3 and 4 image coding (group 3 is very similar to group 4). The specs are in CCITT (1988) volume VII fascicle VII.3. They are recommendations T.4 and T.6 respectively. There is also an updated spec contained in 1992 recommendations T.1 to T.6.
CCITT (now ITU-T) specs are available by anonymous ftp ... The T.4 and T.6 specs are on ftp://src.doc.ic.ac.uk in directory /computing/ccitt/ccitt-standards/ccitt/1988/ascii, files 7_3_01.txt.Z and 7_3_02.txt.Z respectively.
Source code can be obtained as part of a TIFF toolkit TIFF image compression techniques for binary images include CCITT T.4 and T.6:
ftp://ftp.sgi.com/graphics/tiff/tiff-v3.4beta035-tar.gz
Contact: sam@engr.sgi.com
There is also a companion compressed tar file (v3.0pics.tar.Z) that has sample TIFF image files. A draft of TIFF 6.0 is in TIFF6.ps.Z. Concerning JPEG compression in TIFF 6.0, Tom Lane <tgl@sss.pgh.pa.us> adds:
TIFF 6.0's scheme for incorporating JPEG compression (spec section 22) has a bunch of serious deficiencies. Don't use it. A revised design is given by TIFF Technical Note #2,
ftp://ftp.sgi.com/graphics/tiff/TTN2.draft.txt
The revised design will replace section 22 in TIFF 7.0, and is implemented in Sam Leffler's libtiff. See also item 75 of this FAQ for more JPEG info.
Software for reading and writing CCITT Group 3 and 4 images is also available in directory
ftp://merry.cs.monash.edu.au/pub/alanf/TIFF_FAX
Contact: Alan Finlay <alanf@bruce.cs.monash.edu.au>.
Read the rest of the comp.compression FAQ at
ftp://ftp.faqs.org/faqs/compression-faq/part1
sasakit@yamato.ibm.co.jp writes:
[I would like to see] multi-platform class libraries.
Victor writes:
The R2M Software company maintains the "Cross-Platform Development Internet Resources" pointers page, which is a small subset of their mammoth "Internet Resources for Windows Developers Index." The cross-platform page bridges both freeware and commercial libraries, including several that have been mentioned previously in this magazine: wxWindows, V, WINE, YACL, and more:
http://www.r2m.com/windev/cross-platform.html
<josevela@jet.es> Jose Vela writes:
I'm writing a ray tracing program in C and I'm looking for a freeware or very cheap library I'm a student that allows me to put pixels in up to 16.7 millions of colors and to save images in TGA, BMP, or something like that. I know MGL but it is too much expensive for me. Any suggestion? Thanks.
Victor writes:
Ray tracing is the most visually exciting and computationally expensive method of photorealistic rendering.
Since you are a student, your instructor can apply for a free license for MIT ERL's powerful "Raytrace 2.0" library.
http://www-erl.mit.edu/matarese/raytrace/raytrace.htmlThe oldest and most established of freeware ray tracers is the "Persistence of Vision" tool. You can even buy a CD-ROM containing images and raw scene files. Executable versions are available for MS-DOS, Win32, Windows 3.1, Linux, SunOS, Macintosh, and other platforms. Source code to build POVRAY is only available for some of the platforms.
ftp://wcarchive.cdrom.com/pub/povray/official-3.0/Also, check out the Raytrace News:
http://www.povray.orgIan Grimstead's "mother of all ray tracing pages" has links to all the major freeware packages, including a half dozen which I haven't even mentioned.
http://www.cm.cf.ac.uk/Ray.Tracing/The C++ source code for HELIOS, which uses radiosity rather than ray tracing for photorealistic rendering can be downloaded from
http://www.ledalite.com/software/software.htm
dpp@cray.com writes:
I'd like to see game development information, preferably on the Win95 platform.
kathy.john.collyer@mcione.com writes:
[I would like to see] video games using DirectX.
You can't do better than Microsoft's own site for information about the eccentricities of game development for Windows 95. You'll also find a case study of porting a game from MS-DOS to Windows 95.
http://www.microsoft.com/mediadev/icont.htmSee also the code from "Implementing Games for Windows Using the WinG API and the WaveMix DLL" (Microsoft Systems Journal, January 1995) and "Get World-Class Noise and Total Joy from Your Games with DirectSound and DirectInput." (MSJ, February 1996).
ftp://ftp.microsoft.com/softlib/mslfiles/games.exeand
ftp://ftp.microsoft.com/softlib/mslfiles/gamespt2.exerespectively.
david@uslab.se writes:
[I would like to see] Windows NT device driver samples and info.
Stef Chevrier<chevrier@esker.fr> writes:
Hi, I'm currently trying to make a "printer" driver for Windows NT that would only generate DIB files of the document (one DIB for each page) without printing it. Microsoft sells a DDK with this example (called bitmap/cbitmap) for Windows 3.1 but not for Windows NT. (Printer drivers under NT are working on a totally different principle.) I'm desperately looking for examples of "full" (not mini) printer drivers for Windows NT (in C), and especially one that would generate the DIB images of the printed page. Any kind (public or commercial) would be greatly appreciated.
Victor writes:
You are correct in that the Windows DDK was sold only for Win 3.0 and 3.1. However, the Windows NT DDKs are included free of charge with the Microsoft Developer's Network CD-ROM subscription. Check http://www.microsoft.com/msdn for details. Other than that, I would recommend The Windows NT Device Driver Book: A Guide for Programmers, by Art Baker. Prentice Hall, 1997. ISBN: 0131844741.
Available from http://www.amazon.com.
corbinbs@wofford.edu writes:
Great Site! Keep up the good work! (I'm also in search of C sources for VAX/VMS. Have any good places to look?)
Victor writes:
Try the DECUS "Languages and Tools SIG"
http://WWW.Decus.Org:80/decus/sigs/
bbogard@ibm.net writes:
[I would like information on] network communication using C/C++.
csj@kew.dk writes:
[I would like to see] TCP/IP programming lib's for C++.
For Unix, I would recommend Socket++ by Gnanasekaran Swaminathan, an iostream-like class for Unix and inet sockets, pipes, and socketpairs. Socket++ classes can be used more effectively than directly calling the underlying low-level system functions. Since Socket++ has the same interface as the LibG++ iostream (i.e. like cout and cin), it automatically performs type-safe input and output. Even though Socket++ is very easy to use, it still supports a full complement of socket options including: error reporting, debug mode, keepalives, routing, broadcast datagrams, out-of-band data, and buffer resizing. Socket++ includes a mechanism for handling timeouts gracefully as well. Socket++ runs on many Unix platforms, including Sun Sparc, IBM RS/6000, DECstation, and SGI Indigo boxes.
ftp://ftp.virginia.edu/pub/socket++-1.11.tar.gz
<juanqui@bo.net> Juan Carlos Claros writes:
I'm in the university and I need a "class Matrix." I have searched on the net, but not found anything. You could indicate me please where I could find (on the net) or buy a source code in reasonable price.
Victor writes:
There are a few really good matrix class libraries out there. I recommend trying MatClass and Newmat.
MatClass, by Chris Birchenhall, is a C++ library for numerical computation with a general-purpose dense, real-matrix class. MatClass has a family of decomposition classes based on LU, Cholesky, Householder QR, and SVD. Additionally, it has a family of OLS regression classes based on above decompositions and a random number class.
ftp://ftp.mcc.ac.uk/pub/matclass/pc/OR
ftp://ftp.mcc.ac.uk/pub/matclass/unix/Newmat, by Robert Davies, is a very thorough matrix class that supports classes Matrix, UpperTriangularMatrix, LowerTriangularMatrix, DiagonalMatrix, SymmetricMatrix, BandMatrix, UpperBandMatrix, LowerBandMatrix, SymmetricBandMatrix, RowVector, and ColumnVector. Only one element type is supported. It includes the operations *, +, -, concatenation, element-wise product, inverse, transpose, conversion between types, submatrix, determinant, Cholesky decomposition, QR triangularization, singular value decomposition, symmetric eigenvalue analysis, fast Fourier transform, sort, print, an interface to "Numerical Recipes in C" programs, and an emulation of exceptions. It works with Borland, Watcom, Microsoft and Gnu C++ compilers.
ftp://ftp.agt.net/pub/coast/msdos/cpluspls/newmat08.zipo
Victor R. Volkman received a BS in Computer Science from Michigan Tech University. He has been a frequent contributor to the C/C++ Users Journal since 1987. His most recent book is entitled Windows Programming with Shareware Tools. He can be reached on the web at http://www.HAL9K.com, or email to sysop@HAL9K.com.