Bigger than ever, better than ever. The 1999 edition of the CUG code disk is now available.
About the C/C++ Users Group
Since 1981, the mission of the CUG (C/C++ Users Group) has been committed to low-cost distribution of shareware and freeware C/C++ source code. The CUG is an independent organization sponsored by C/C++ Users Journal. CUG remains impartial to compiler vendors or platforms. Currently, CUG focuses heavily on cross-platform compatability with Unix, MS Windows, and other platforms. You can visit the CUG on the web at http://www.HAL9K.com/cug.
The CUG CD-ROM is the primary vehicle by which the CUG organizes and redistributes tools and libraries. One CD-ROM includes 400 archives covering the gamut of subjects from assemblers to windowing systems. It also includes a complete copy of the website for offline viewing, an HTML viewer, Access 97 database indexes, and tech support information for each product (where available).
What's New On the 1999 CUG CD-ROM
The April 1999 edition represents the single biggest installment to the CUG Library in its 18-year history. This is the one and only release to be made available in 1999. You can order your updated copy of the CUG Library CD-ROM for $49.95 directly from Miller Freeman Inc. by calling 800.444.4881 or +1.785.841.1631 or via the WWW through one of the vendors listed on the CUG website (http://www.HAL9K.com/cug).
(CUG 483) C++ Chronograph Class
Greg Messer (Tampa, FL) submits his Chronograph class for timing applications. The Chronograph class is modeled after the operation of a stopwatch. It provides timing for laps (time since last lap) and splits (same as elapsed time). You can stop, restart, and set it to zero.
You can instantiate multiple Chronographs without slowing down the program being timed. This is because there is no interrupt handler running continuously. Instead, the Chronograph tracks the return value of the clock function. So the Chronograph uses computer cycles only when its member functions are called.
The Chronograph class supports Borland C++, Microsoft Visual C++, GNU C++, and IBM CSet++ for AIX. Its first public release was described in C/C++ Users Journal (September 1996). CUG 483 contains the version released on 24 September 1997.
(CUG 485) Standard Function Library: Highly Portable Code
Pieter Hintjens of Imatix (Antwerp, Belgium) contributes SFL, a Standard Function Library for portable C/C++ programs. The SFL is the result of many years development and has a license similar to the GNU Public License. The SFL is written in ANSI C and has been ported to MS-DOS, Windows, UNIX systems (Linux, IBM AIX, SunOS, HP/UX, Solaris, NetBSD, FreeBSD, SCO OpenServer, Digital UNIX) and Digital OpenVMS. It comes with complete sources and documentation in HTML. The SFL provides about 300 functions that cover these areas:
- compression, encryption, and encoding
- datatype conversion and formatting
- dates, times, and calendars
- directory and environment access
- user and process groups
- inverted bitmap indices
- symbol tables
- error message files
- configuration files
- string manipulation and searching
- file access
- internet socket access
- internet programming (MIME, CGI)
- server (batch) programming
- program tracing
CUG 485 contains SFT v2.0, released on 2 October 1998.
(CUG 486) WFC: Win32 Foundation Classes
Samuel R. Blackburn contributes his Win32 Foundation Classes (WFC). WFC is a class library which provides access to system functions that aren't supported by MFC. Blackburn began releasing all of this code to the public domain and updates it regularly. WFC encapsulates many aspects of system programming, including access control (ACE), bitmap files, cryptography, simple TCP/IP sockets, NT event log access, extensible markup language (XML), tape backup, sound mixing, modem, network, Remote Access Service (RAS), PCS phone and pager messaging, Registry, shared memory management, MIME encoding, file directories, LZW file I/O, and a whole lot more.
A complete list of WFC classes is too extensive to include here. Basically, if you're planning on using any Win32 APIs with C++, you should look at what WFC has implemented first. WFC is supported primarily for use with Microsoft Visual C++. CUG 486 contains WFC Release #38, released on 1 October 1998.
(CUG 487) Libero: State-Diagram-Based Programming
Pieter Hintjens of Imatix (Antwerp, Belgium) contributes Libero, a tool that can produce a source code framework for any language based on state-diagram inputs. Development using Libero follows a different paradigm than traditional source coding: you first design your program visually as a state diagram and then choose your target language (C, Java, C++, Perl, VB, etc.)
Libero runs on Windows, MS-DOS, VAX/VMS, and Unix. It is supplied with full portable ANSI C sources. Libero is licensed with the GNU Public License, but this does not affect applications written using the tool. The CUG distribution of Libero includes precompiled binaries for Win32, complete source code, documentation, and examples. CUG 487 contains Libero v2.31, released on 27 November 1998.
(CUG 492) CIDLib: C++ Application Framework for Windows
Dean Roddey of Charmed Quark Software (Mountain View, CA) contributes CIDLib, a shareware C++ class framework for MS Windows. CIDLib provides a fully object-oriented, very typesafe, and vastly simplified way to develop applications. CIDLib is free for personal use by individuals. It is available for in-house, commercial, or shareware products for a reasonable licensing fee. CIDLib is fully ANSI C++ exploitative, making full use of exceptions, Booleans, namespaces, templates, mutable members, and more. No compromises have been made to handle broken compilers. Makefiles are included for use with Visual C++.
CIDLib provides the following broad categories of functionality:
- abstraction kernel
- build utility
- advanced RTTI
- collections
- core data types
- encryption
- exceptions logging
- file system support
- streams
- internationalization support
- locale support
- mathematical
- process control
- TCP/IP
- fractals
- graphics file formats
- ray tracing
- regular expressions
- windowing and graphics
- standard controls
CUG 492 contains CIDLib v0.991, released on 18 November 1998.
(CUG 493) Conditional Batch Transfer Using FTP
Alessandro Vesely (Milano, Italy) contributes Ftpx, a handy command-line ftp client for Win32 systems. It is available as freeware for single individuals and small companies but requires licensing for use by larger organizations. It is different from the standard ftp utility in both features and syntax. The purpose of this utility is to ease ftp transfers from the command line, batch files, makefiles, and other command-line tools. Since Ftpx takes file date and time into consideration, it may be convenient whenever mput or mget may be difficult to use. FTPX could be used in this way to help "mirror" one ftp site into another location.
Local and remote directories are always parsed before copying files. All filename expansions occur before any file transfer, hence case conflicts can be detected before it's too late. CUG 493 contains Ftpx v.1.1, released on 5 October 1998.
(CUG 495)GOODS: Generic Object Oriented Database System
Konstantin Knizhnik of the DEC Moscow Software Center (Russia) provides GOODS, a Generic Object-Oriented Database System using an active client-language-independent model of server-client interaction. GOODS supports both C++ and Java bindings. All application logic is implemented and executed on the clients, while the server is responsible only for storing and retrieving objects, handling transactions, object locks, garbage collection, database backups, and recovery. A "metaobject" protocol implements the client application interface to the database to provide transparent and flexible interaction with the database. The "generic" in GOODS stands for the capability to extend the system to handle almost all possible object access and synchronization strategies. Using the "aspect oriented" approach makes it possible to change object access management policies without affecting application code.
GOODS is a fully distributed database. A database consists of a number of storage areas, each of which can be located at different nodes of a network. Storage is controlled by a storage server, which is responsible for handling database requests relevant to this storage as well as for interaction with other servers to perform database-wide operations.
GOODS is supported on Unix (Linux, DEC Alpha Unix, Solaris, AIX) and Windows NT 4.0/95. CUG 495 contains GOODS v1.13, released on 12 November 1998.
(CUG 498) Dialog Editor Controls Pack for Win32
Simon Whiteside of Lateral Arts (Wokingham, Berks., UK) releases Dialog Editor Controls Pack for Win32. The Dialog Editor Controls Pack provides a simple and powerful method of integrating dialog editing into your own product. Special purpose dialog box editors are now the preferred method of enabling user interaction from Windows macro languages. Even retail products, such as Microsoft Excel and Word, now include special-purpose dialog box editors. Whiteside's pack provides two windows controls to help you build dialog editors for your tools: a Dialog Editor Control and a Palette Control.
The CUG distribution of Dialog Editor Controls Pack for Win32 includes DLLs and documentation. If required, source code is available by special agreement from the author. CUG 498 contains v2.10, released on 28 December 1997.
(CUG 499) MGL: Multiplatform OpenGL Graphics Library
Kendall Bennett of SciTech Software (Chico, CA) submits MGL, a multiplatform, high-performance OpenGL compatible library. MGL supports the popular standard for 3D graphics rendering on platforms where support is difficult to find (such as MS-DOS, OS/2, Linux, and QNX) and improves support over existing OpenGL implementations (Windows 95/NT) by using DirectX. MGL has been used in the development of many leading game titles like WinQuake, Hexen II, and many others.
SciTech MGL's full screen OpenGL API support provides programmers with a 3D API that can scale from software-only (using low-resolution graphics modes), all the way up to full 3D hardware geometry acceleration. SciTech MGL allows developers to create applications using the OpenGL API in either a window or full screen mode (rendering to VGA, VESA VBE, or DirectDraw surfaces) in the Windows or DOS environments. CUG 499 contains MGL v4.05, released on 10 January 1999.
(CUG 500) Xitami: Multiplatform Web Server httpd
Pieter Hintjens of Imatix (Antwerp, Belgium) contributes Xitami, a high-quality portable free web server. Xitami runs on all Unix platforms, OS/2, OpenVMS, and Windows 3.1, 95, and Windows NT (Intel and Alpha AXP). The software comes fully configured: in most cases you won't need to change a single option to get it up and running. Xitami is small, fast, and fully multithreaded. Unlike any other web server, Xitami was designed as a set of portable reusable components it's easy to extend and reincorporate.
The Xitami server supports HTTP/1.0, FTP, CGI/1.1, and SSI protocols, server-side image maps, user-defined MIME types, multiple document roots, persistent connections, on-the-fly server reconfiguration, customisable error messages, multilingual HTML documents and multilingual CGI scripts, and virtual hosts by IP address or host name.
Xitami is licensed in a way similar but not identical to the GNU Public License. The CUG distribution of Xitami includes a self-installing package for Windows 95/NT as well as a tar/gz file package for Unix systems. CUG 500 contains Xitami v2.4c1, released on 2 January 1999.
And Too Much More to Describe
See the CUG website (www.hal9k.com/cug) for a description of these volumes:
- CUG 480 Windows Standard Serial Comm Library
- CUG 481 APL Interpreter
- CUG 482 OSE: General-Purpose Class Library and Tools
- CUG 484 Multi-platform Text Browser
- CUG 488 FPlot: Plots ASCII Data in Postscript
- CUG 489 VBD: Variable Block Database
- CUG 490 gsar: General Search and Replace in Any File Type
- CUG 491 micro PLOX 6.1: Line Graphs for Printers/Monitors
- CUG 494 POST++: Persistent Object STorage Classes
- CUG 496 CWSDPMI: Freeware DPMI Extender for DJGPP
- CUG 497 LEAP: Freeware Multiplatform RDBMS
The CUG Needs You!
The deadline for submissions for the next edition of CUG Library CD-ROM is coming soon. If you have an innovative C or C++ application or library that you'd like to share with the world, please contact me by email <sysop@hal9k.com> or visit the CUG website (http://www.HAL9K.com/cug). As a small token of our appreciation, you will receive a complimentary copy of the CUG CD-ROM if your submission is accepted.
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.