Solid Fluid System Solutions  
Home Software About Hardware Firmware
Folder Icon VCore
Library capabilities designed to assist the development of all applications.
Folder Icon VConsole
Library capabilities designed to assist the development of GUI and console based applications.

Library Root Page

The Solid~Fluid libraries are an integrated set of dynamic link libraries developed primarily in C++. All classes are derived from a single base class (VObject), and use polymorphism to achieve a scalable dynamic capability. Multiple inheritance is avoided for the sake of sanity, simplicity and readability.

As the author of this code I would suggest that my "comfort zone" is somewhere between C and C++. This is mainly because it makes code easy to read and understand, but also that it makes object serialisation and run-time type checking far more straightforward. Some of the more esoteric capabilities of the C++ language are clearly useful, but it has always seemed to me that the actual benefit can only be manifest in relatively limited circumstances. The additional complexity that these esoteric mechanisms impose on everything else then makes reliability and maintainability a much larger issue. In general it has always been my philosophy to keep it simple and build complex capabilities from many small, consistent and simple objects. This is opposed to the idea, of attempting to use complex techniques within small objects to make them more powerful and with the aim of writing less code. Notwithstanding, redundancy is avoided at all costs.

In some cases, maintaining such simplistic constraints, actually leads to an undesirable overhead in terms of physical code entry. In these cases the approach is maintained, but instead of abstraction at run-time, abstraction is made at compile time. It is not unlikely that I would create a tool capable of generating code, to solve a specific coding task, which would otherwise have an unacceptable code entry overhead. I hope to make some of these tools available to others in time.

The libraries themselves currently split into three main groups;

  • Core
  • Console
  • Gui
If you inspect our applications, as they are manifest on disk, you will see that they are composed of DLL's that reflect this structure. Currently this arrangement has been devised to minimise the difficulties associated with dependencies, and to allow a reduced code set to be distributed in the case of console applications. The general content of these libraries, is as their names would sugest.

Our applications also ship with two additional DLL's. Image and Cipher are as their names suggest. Both modules are essentially C modules, hence the separation from the main C++ modules descried previously. In most cases exported functions from these modules are encapsulated in C++ wrappers in the Console module.

Image is composed entirely of open source code, some of which we have obtained from third parties, and some of which we have written but have made available to the open source community. More details of the our open source dependencies can be found here.

Cipher provides a CRC32 algorithm, an MD5 hash, RSA and AES encryption. We are clear here that we did not originate any of these functional modules, but that as obtained none required explicit reference or credit to it's author. Nevertheless we thank those people. In practice some degree of modification was required in each case to make the capability match our requirement of it. For obvious reasons we do not elaborate any greater detail of this module. We understand that obfuscation is no kind of security, and that transparency can lead to better security. Given our size and business model, we feel that obfuscation leads to better "security outcomes" than transparency. As and when our business grows we expect to revise this policy. This module is not pretty good privacy in the sense of the software by that name, but we feel it has (at least, most of) that capability.

Copyright © Solid Fluid 2007-2015
Last modified: SolFlu  Fri, 05 Jun 2009 22:31:57 GMT