CIDCorp Home Page
Welcome to the CIDCorp Home Page. This page describes the CIDLib Class
Libraries for Windows NT and Visual C++, current versions, upcoming versions,
and how to download them.
The CIDLib Class Library System is a freeware C++ class framework for Windows
NT 4.x and the Visual C++ development system. CIDLib provides a fully object
oriented, very typesafe, and vastly simplified way to program to the Win32 API
set. You may download CIDLib and use it in any non-commercial application without
charge. The source code is available as is the whole build environment so you
can modify the system for your own needs, or use it to experiment and learn
about C++ frameworks development.
CIDLib provides the following broad categories of functionality:
- Abstraction Kernel. CIDLib implements its own 'micro kernel' layer
which abstracts its from the host platform and greatly enhances portability.
- Advanced RTTI. Polymorphic streaming, dynamic object creation, fully
integrated runtime type information, type repository, meta class support.
- Collections. Bags, sorted bags, deques, queues, stacks, doubly linked
lists, singly linked lists, hash maps, hash sets, object arrays, and fundamental
type arrays.
- Core data types. Strings, memory buffers, areas, points, sizes, colors,
ranges, time stamp support, etc...
- Encryption CIDLib has an encryption framework that you can extend to
implement any encryption algorithms you require. It comes with some algorithms
that are not encumbered by licensing issues.
- Exceptions, Logging support. Extensive support for error and message
logging and exception management. Fully C++ enabled, multiple language message file
support with custom message compiler which generates namespace based const message
ids instead of #define'd values.
- File System Support. Directory iteration, general file system
maintenance, find buffers, path strings, binary files, text files, etc...
- Fractals. An object oriented, extensible fractal generation engine, with
full multiprocessor support. Pluggable fractal framework allows you to easily
create your own fractal types and have them rendered.
- Internationalization Support. CIDLib supports a very C++ oriented
message compiler that is fully UNICode oriented and allows you to load all text
from external (and therefore translatable) data, in an easy and convenient way.
- Locale Support. Locale support allows you to localize your applications
and CIDLib itself uses this support to format numeric values, monetary values,
and times.
- Mathematical. 4x4 homogenous matrices, 2D and 3D vectors, value maps,
ranges. Basic mathmematical library interfaces. Formatting support for numerical
values, both locale specific and locale independent.
- Process Control. Threads, priority janitors, mutexes, semaphores,
events, critical sections, safe counters, process registry, extensible metrics
system, runtime and exception stack trace dumps. Lock janitors for mutexes,
semaphores, and critical sections.
- Ray Tracing. An object oriented, extensible ray tracer with scene
description language, and full multiprocessor support. Framework based architecture
allows you to create your own object and texture types and fully integrate them
into the ray tracer.
- Standard Controls. Custom written, object oriented controls designed
specifically for the CIDLib system. (Only basic support is in this point
release, with more extensive support planned for the next major release. It is
not documented at this time.)
- Streams.Text and binary streams, stream parser, etc... Streams are
abstracted from the actual data source via implementation objects, so they can
be extended to use many different data source. CIDLib comes with file, string,
and memory buffer based implementations. Stream format janitors support safe
scope based format changes.
- Windowing and Graphics. Support for windows and core graphics output,
attribute bundles, event dispatching. (Only basic support is in this point
release, with more extensive support planned for the next major release. It is
not documented at this time.)
Check here for a list of beta issues and new stuff
for this version.
Downloading
To download via anonymous FTP, you need to connect to ng.netgate.net.
Log on as anonymous and give your internet address as the password. You will
be in the main FTP directory. Underneath this directory is the 'u' subdirectory,
which is Netgate's root directory for the individual FTP directories. Change
to the u/droddey/CIDLib subdirectory, i.e. type cd u/droddey/CIDLib.
Then type dir to see the available files. Unix is case specific so type
it exactly as written!
* Make sure to download Zip files in binary mode and text files in ascii
mode or the results won't be pretty sometimes!
The currently available files are:
The CIDLib Class Libraries |
This is the full CIDLib Class Libraries beta distribution file. It contains all
the source code, header files, build environment, and offline documentation, i.e.
all of the stuff you need to build and use the CIDLib programming environment.
The file for the current version is:
CIDLib_0_510.Zip
|
The CIDLib Offline Documentation |
This is the tutorial reference material for the CIDLib Class Libraries. The
class and method reference material is in Html, but this information is is written
in Microsoft Word 6.0 form. So it can, at minimum, be viewed and printed via the
Write Pad utility that comes with NT 4.0. Of course if you have Word 6.0, then you
can use it to read or print the material.
This documentation covers the large scale issues of C++ class framework
development and the big issues behind the development of CIDLib. This is its second,
still quite rough, draft so its not all there and not nearly as nice as it will be.
But it contains very important information, so definitely don't ignore it.
If you download the full distribution file, it will contains this stuff also!
The file for the current version is:
CIDLib_0_510_Docs.Zip
|
Quick Start Information
Here is the quick and dirty "how to get going" documentation, if you just want to
download and play before you commit to any serious reading of documentation.
Quick Start
Class and Member Documentation
This is a link to the class and member documentation for the CIDLib system. You
can browse here to find out the details of the functionality provided by CIDLib.
Class and Member Docs
Articles By The Author
Here are links to some online articles of mine that you might want to read:
EDM/2 OS/2 Development
FAQ.Unfortunately this one has not been updated yet to HTML format and
the whole issue is just in text format.
EDM/2 Article on C++
enumerations.
Here are some hard copy articles of mine that you might also want to read if you
are into OS/2 and/or C++.
OS/2 Developer July/August 1994, "An Example OS/2 C++ Class Library System"
OS/2 Developer Nov/Dec 1994, "A Peek At Taligent: The Graphics SubSystem"
OS/2 Developer March/April 1995, "Talking The Plunge: Converting an OS/2
Application To 32 Bits"
OS/2 Developer May/June 1995, "Writing Exceptionally Robust Software"
Acknowledgements
First of all I'd like to thank our killer crop of new rock artists. Many an
hour I've spent pounding the keys furiously with Tori Amos, The Smashing
Pumpkins, Green Day, Joan Osborne, U2, Stone Temple Pilots, Blues Traveler,
Pearl Jam, No Doubt, Fiona Apple, Nirvana, Jewel, etc... blasting on the stereo.
That's when I'm happiest. Don't get me wrong, I like the classics too, but its
nice to be close to 35 and still loving what's coming out of the radio. Out here
in Mountain View, CA almost every day is glorious, so I just love to open the
windows in the morning and sit down to my machine with a steaming cup and epic
music and just code like a maniac. As close to comfortably numb as I get (or
that I'm willing to discuss here anyway.)
And, although this is discussed elsewhere, I'd like to acknowledge the
inspiration I got from the FractInt and DKB/POV shareware programs. These
were very influential in developing my interests in fractals and ray tracing,
respectively. You will see some passing resemblences in my fractal and ray
tracing engines, in spite of the massive implementation differences between
their procedural systems and my full bore object oriented architecture.