Simple Application Framework is a library aiming at providing a rich set of generic classes and functions enabling rapid development of robust and safe applications. The library is written in C++ and places emphasis on clean and extensible object-oriented design and efficient algorithms. It is intended as a replacement and extension of the Standard Template Library (STL) that would be closer to modern trends in IT represented by the Base Class Library in .NET or the Java Class Library.
What are the main design goals?
- Generic programming
- Clean, efficient, easily understandable, reusable and portable code
- Transparent code organization (nested namespaces)
- Support for modern and the most common compilers and platforms
In particular, we would like to:
- Don't make things unnecesarilly complex
- Avoid obscure template patterns and jungle of macros that are hard to understand, configure and debug
- Avoid compiler or platform specific hacks as much as possible
- Avoid ugly low-level or ad-hoc optimizations in places where the compiler can do it itself (and often better)
- Avoid code bloat by prefering the main design goals to backwards compatibility and archaic compiler support
- Use C++ and its advanced features wisely, the language can be a beast
What is it going to contain?
- Fundamental computer science algorithms and data structures useful in everyday work
- Unicode strings and characters, type-safe and easy-to-use string formatting interface
- Date and time handling
- Filesystem access routines
- Basic networking support
- Random number generators
- Regular expressions
- Thread support and synchronization mechanisms
- Extendable logging system
- Simple math classes and functions (powers, commond divisors and multiples, vectors, matrices, etc.)
- A lot more...
What is it not going to contain?
- GUI handling
- Advanced, complex or specialized stuff that is rarely needed
Warning, the library is currently work in progress (pre-alpha stage). It may (and will!) undergo drastic changes of class, function
and namespace names and behaviour and overall structure. It is not recommended to use the library now. Nevertheless, the classes in Saf::Collection
and Saf::Algo namespaces are generally usable for basic tasks.
At the moment, the library is being developed and tested on the following platforms:
- Visual Studio 2010 on Microsoft Windows (both x86 and x86-64)
- GCC 4.6 on Linux (both x86 and x86-64)