Image source: https://www.pixabay.com/photos/binary-binary-system-people-2907220/

These are the C++ projects that I'm currently working on.  At this time, the documentation serves as an early preview of the projects I'm working on, which I eventually intend to post on GitHub or Codeberg as open source (once I've decided which repository and license to use, and I'm sufficiently satisfied with the basic overall production-readiness of my libraries).

rex

rex: Exceptions classes
Status: Fully functional for the needs of the rsocket and rthread classes, but more exceptions still need to be added to provide for a more complete range of error number coverage.

rhostname: Internet hostname class
Status: Fully functional, but some testing and programming is still needed to be complete

A specialized C++ class that stores an internet hostname with fully transparent and seamlessly-interchangeable support for UTF-8 and Punycode ("xn--" prefixed) hostnames that are internationalized internet domain names.  The rhostname class can also use and produce hostnames in DNS RR format, which is a binary packet-level format that's used by DNS resolvers, DNS daemons, and DNS packet analysis software.

rline: Text line
Status: Fully functional

This class stores an std::string object alongside a separated EoL sequence it was terminated by (and a an easy way to determine if there was no EoL sequence).  This is particularly useful for the edge case of reading an ASCII text file where the final line was not terminated by an EoL sequence, and it's important to know this (e.g., for ensuring checksum cross-reference accuracy, etc.).

rmailaddr: eMail address class
Status: Mostly functional

This project will provide a C++ class that stores an eMail address, but with a variety of helper methods that can be used to easily parse and validate an eMail address, some of which will be useful for mail servers, eMail client software, etc.

rring: Ring buffer
Status: Fully functional, with plans to add non-core functions to make this class more feature-rich

An incomplete ring buffer was originally implemented in the rsocket class to satsify a specialized need, but has moved into this separate class to prevent unnecessary coding complexity and to provide what are not included in the standard C++ classes.  (Other ring buffers were assessed, but didn't meed the specialized needs that this one provides, such as specialized add/remove methods that are programmed in an optimized fashion that doesn't side-step nor sacrifice thread safety.)

Although the rring class is optimailly specialized as a char buffer, it is designed with the expansion into other data types in mind, including int and long primitives, as well as structures and objects (by using templates), which will require separate classes that will be aptly named in an intuitive fashion that make for easy drop-in replacements since the API is intended and anticipated to be the same.

rscreen: Virtual text-mode screen GUI widget
Status: Planning stage

This is an ambitious project that will be an overhaul of the fx.textmode class (originally named JScreen) that I created in Java many years ago (the Java version was nearly complete, and was fully functional except for some transactional functionality I was working on, but then I had to abandon it because Oracle broke backward compatibility by introducing significant changes to the way Java is compiled that is not consistent with the write-once-run-anywhere mantra; this is one of the major reasons I moved over to C++).

rex

rsocket: Object-Oriented socket class
Status: Unencrypted and encrypted sockets are fully functional; testing and improving documentation

Including OpenSSL's TLS support for encrypted socket communication is essential for this class.  Without it, adding encryption will just take everything back to square one because OpenSSL is not a C++ Object-Oriented library; it's a C library (one of the goals of the rsocket class is to provide socket I/O in a complete Object-Oriented fashion).

rex

rthread: Object-Oriented thread class
Status: Fully functional, but in process of converting from returning error codes to throwing exceptions, and adding examples in the documentation

Some additional features, such as threadgroups and CPU affinity settings, are also planned

rtools: Miscellaneous static functions and utility classes
Status: Fully functional, but in process of adding examples in the documentation

A collection of static methods that facilitate a variety of general-purpose computer programming needs


Please do not rely on the above links to the documentation as these are in a state of flux with some significant structural changes planned.

Return to home page...