                
InformationBase programming concept libraries like networking, file systems, linked lists, dynamic arrays, strings, etc. Developed for cross-OS compatibility and non-reliance on standard librariesContentI recently (relatively, as far as programming time goes) started developing a set of personal libraries that I will be integrating into many of my old projects as DLLs, depending on how much they increase the ease of use or code. This will also help making application upgrades easier if any of these libraries change.
However, unfortunately, I consider these libraries the only part of my programs that I do not want to be used in other projects freely. They are meant for my applications alone, as they are highly customized, and I know exactly how they work at the very bottom level. I use these to help alleviate the need for standard libraries that come with compilers (ESPECIALLY FROM MSVC) as they add a LOT of unneeded bloating.
All libraries, like all my other projects, are 100% coded from scratch in the specified languages without reusing code from elsewhere.
Sorted by importance:
Utils: Base programming utilities
- String: A powerful, highly optimized, and robust string class which contains Unicode support and matching function names for many languages (PHP, JavaScript, VB, etc). Most, if not all, of the other libraries that use the Utils library use this section. The floating point to string conversions were especially fun to program ^_^, I’ll have a post up on that sometime.
This is what started me out on the Personal Libraries. It initially only took me a couple of days to write, starting in early February of 2006, but I continued optimizing and expanding upon it long after that, like most of these classes.
- Array: A fully templated and inlined dynamic array class. The Arrays only ever have as much memory allocated as is required. Since the entire library is force inlined, no speed is lost on function calls, and code bloat is not a problem as function data is usually about the size that the function call and cleanup would be (if the compiler properly optimizes).
- LinkedList: A dynamic linked list data class with minimal overhead and templating options. Data in each linked list node can be either a pointer to the data, or the data itself.
MemoryManager: Memory manager required by all libraries
This does all memory allocation for the libraries, and usually application, through base operating system functions. This allows the libraries and the application to share memory seamlessly.
The main purpose of this library is for its debugging functions, which report all memory leaks on program exit, and allows for breakpoints on memory (de)allocation. Reallocation of memory blocks is supported.
QuickInline: Inlined functions used in almost every library
Mostly assembly functions for bit/byte manipulations (like copying), and floating point speed tricks and operations. This is used in every library but ExternalConsole, MemoryManager and Menu, and if changed would require recompiles of the libraries because it is only a header file with inlined functions. Also includes fully inlined smart pointer and enum classes.
Requirements: x86 operating system and processor
BigNum: Almost-infinite precision positive integer math library
I’ve used this mostly for cryptography. Works with numbers from 0 to ~10^1292913987 [2^(2^32)-1]. I have 2 sets of the library coded in: C++ for experimentation and proof of concept, and Assembly for speed. I will be coding an MMX/SSE version of the library at some point too.
Requirements: (Depending on version) x86 and/or MMX/SSE operating system and processor
BigFloat: An extension of the BigNum library, allows floating point numbers of the same number of digits as BigNum
IEEE floating point numbers have always been notorious for data precision loss (due to the fact that floating point bits are stored in fractions of (1/2)^x) so this alleviates that problem. Precision is always kept unless the exponents of your numbers differ greater than the limit of ~4.13E10 (base 10).
Requirements: BigNum Library
ExternalConsole: A quick way to add console windows to Windows applications
- Can add multiple console windows
- Can redirect cout to receive its output
- Accepts both input and output
- Normal console output redirection of all base data types through “<<” operator
- Contains an extra function to output strings of data in hex
Requirements: Windows
RegExp: Regular expression library
I needed a more robust regular expression engine for certain projects, so I wrote my own... I'd like to think it's more optimized/faster than others, but have not ever run tests.
Requirements: Utils Library
Network: A simple networking library
Requirements: Utils Library
Turing: Any math related operations
Currently includes functions for hashing (MD5 and SHA1) and prime numbers.
Requirements: BigNum Library, Utils Library
Database: Database client libraries
Currently only supports MySQL
Requirements: Network Library, Utils Library, Turing Library
Protocols: Will have operations for multiple protocols
Currently only includes HTTP functions
Requirements: Network Library, Utils Library
Graphics: A 2D graphics library
Currently there are 2 versions based upon Windows’ GDI and GDI+
Requirements: (Currently) Windows, GDI or GDI+, Utils Library
Window: A cross-operating system window creation and manipulation library
Requirements: Utils Library
Menu: An extension of the Windows menu system
Easy menu creation with the added ability to display right aligned shortcuts with an alternate background, more pictures with the text, and a few other options.
Requirements: Windows, Utils Library, Window Library
VariableList: Runtime variable management
A structure to hold runtime variables with quick lookups of their data by name “ABCDEFGHIJKLMNOPQRSTUVWXYZ_-123” currently allowed.
DLL Structure: ALL libraries incorporate a header that removes normal DLL bloat, minimizing library size and load time.ConceptsToo many to listNotesThere are some programming concepts many people take for granted.Updates2 Project Pages Completed, 1 Project Uploaded @ 2008-05-22 03:22:34 Completed project pages for 2 projects (Personal Libraries, HalfKey)
Added screenshots for 1 more projects (HalfKey)
Got up downloads for 1 project (HalfKey) |