Vettrasoft (a small American-based computer software founded in 2000) is the creator of Z Directory: a powerful tool for programmers to engineer serious software programs.
This integrated system has a geo-topo dataset that includes data for real-world items such as countries, cities, airports, and languages. more

summer 2012: 'how-to-use' Z Directory tutorial videos on youtube:
[1] basic C++ programming
[2] basic encryption, ROT13
[3] advanced encryption - RSA
[4] client - server programming
[5] multi-threaded programming
[6] PHP:C++ bridge (example: printing payment overdue letter)
[7] mass-mail object

June 2012: Vettrasoft released the C++-to-PHP BRIDGE, allowing you to easily run PHP code from within a C++ application!
(see the PHP file object reference manual page for more info)

July 2012: Vettrasoft created a "mass mail object", allowing you to send form letters to multiple recipients.

last updated Feb 02, 2023

The Z Directory.

Vettrasoft geocalc - GIS geographic calculator, built with the Z Directory.

The Z Directory is a library - framework for C++ programmers. Originally it was created on unix environments, but currently it is available for Microsoft operating systems (Visual Studio IDE). It is a tool for building any type of program based in C++. It is not specific to a particular subject, but rather is a collection of components that do common software tasks that have been proven useful over a long period of time. A software developer can create powerful programs in C++, whether the application is MFC-based, uses a Qt GUI, is a console program, DLL-based, or uses other frameworks.

Why the Z Directory?

This question is a valid starting point for many who write code. As to the "why" of C++, suffice to say that C++ was (a) the serious, heavy-duty object-oriented language. It preceded C# and java, and most all other O-O languages. Most of them would not have come to be if not for C++, which is still the language of choice for many commercial systems. The next question is why have another general-purpose library. There is already MFC, STL and boost, XML, Xerces, cURL and POCO; in graphics there is Qt, X-windows, CImage, Image Magik, and wxWidgets. And all these in the C++ programming domain. But the Z Directory is different. It never does a "throw". Error handling is simple and standardized. The function names are very simple: typically, after creating an object, one does a config(); to execute the object's main task, one calls run(); data is managed with get() and put(). The simple nomenclature applies whether the object is a semaphore, a string, or an object that operates on a database table.

In addition to the typical objects provided by most any other library, there are unique and even unusual components that have proven very useful to programmers not found elsewhere. For example:

  • the unithread_o provides a simple system for using a single background thread;
  • the timespan_o class lets you add an interval of time ("14 weeks and 140 hours") to a time-date;
  • You can encrypt a string or a file with several different algorithms using the multicrypt_o class (eg blowfish, AES, DES, and RSA), each with their own password;
  • progconf_o is a powerful object that lets programs read configuration parameters from an INI file. Default values can be set; INI file parameter syntax and values can be checked; variable values can be fetched and set.
  • A large set of SQL-oriented components give you the power to create lasting objects. The orthodox_o class provides a framework like an O-O database, allowing you to store your class objects to a database, but operates on regular SQL tables. The dbbi_o class manipulates database tables; the dbtable_o class is oriented for "geographic" tables (provided with the Z Directory), such as airports, countries, and zip ("post") codes.

These are just a tiny sample of the many varied objects and subroutines you can find in the Z Directory.


Documentation and support is here in this web site. If you are completely new to the Z Directory, please start with the general info page or the FAQ page .

If you have downloaded the Z Directory, or want to know the basics of making software with the Z Directory library you may want to start with the user guide .

If you have installed the Z Directory and are looking for information on how to use its components, you probably want to look at the reference manual .

If you are new to the Z Directory, have made some programs it, and would like some larger examples to follow, take a look at the 5 examples page .


The Z Directory alleviates the burden of learning and maneuvering the delicate complexity of C++ by providing you objects with simple, intuitive interfaces. The library hides the intricacies of features such as operator downcasting, overloading, virtual or multiple inheritance, dynamic casts, const-correctness, Exemplars, smart pointers, etc.

Compared to other libraries, installation and configuration is a breeze. Unlike Qt's 1.7GB installer, the Vettrasoft Z Directory installer is 13 MB. If you have used WxWidgets, you may find the Z Directory unnervingly simple: no need to find a header file such as "setup0.h" to make things work; no elaborate, arcane instructions to configure Visual Studio; no missing libraries to hunt for. With the Z Directory, you have 1 (count 'em: "One") location where the header files are, and 1 (note) location where the libraries are.


only with the Z Directory can you build software using the industrial programming strength and efficiency of of C++ in less time or effort than via java, perl, PHP, visual basic, or any other computer language.. Strange and unusual objects (in the object-oriented sense) lie herein. Create a server program or a a mass mailer, in a few lines of code.


It is an all-encompassing, unified system covering a wide range of components (strings, text processing, semaphores, threads, encryption, time & date, containers, packet transport, an o-o database, 'data bags' - our "XML substitute"; containers, and more). All synchronized like a tightly wound watch.

The Z Directory ignores the lazy habits of other software that adopts an existing mechanism and simply makes its own wrappers around the mechanism, touting to be new and improved. For example, Qt and others have "FTP objects", where an existing mechanism (FTP in this case) is bound to an object, and functions are mindlessly added to mimic the existing functionality. Rogue Wave (and many others) mime sockets, providing object member functions that mimick the socket function API set. To Vettrasoft, this is trash code-monkey work. Vettrasoft defines FTP and sockets as components in the domain of message transport. Objects and functions are built to transport bytes - not mimic previous structures.


Protect your application from the idiosyncrasies and whims of the Operating System that you are using. Shield your program from the lack of standardization amongst database vendors.

The Z Directory started as a pure-unix system. After 2000, it became a primarily Microsoft-based system. Vettrasoft will soon release a Debian linux version, allowing the Z Directory to roam back on its original home turf.


The Z Directory builds upon itself over time. Progressively powerful objects are created. Witness the recent release of the C++ to PHP bridge and the mass mailer class objects. Vettrasoft serves the changing needs of the software community and the world at large, providing a system that is constantly evolving and improving.

The Z Directory is available here and now, at this web site. You can buy your own licenced instance of the Z Directory, or download a trial version. As of build 15 (Jul 2012), and for a limited time only, the Free Trial edition is good for 1 full year.

download the trial version here.  

Unconvinced? Please take a look here at 5 short, complete, working sample programs that use the Z Directory.