InformationBase programming concept libraries like networking, file systems, linked lists, dynamic arrays, strings, etc. Developed for cross-OS compatibility and non-reliance on standard librariesContent I 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.UpdatesContact page and removed projects @ 2015-11-20 21:33:18
- Email contact has been removed from the Contact page, in lieu of using the forum. Explanation is on the contact page.
- I have removed all the projects from my projects page and site map that I will never finish and aren’t far enough along to be of any use to anyone. Most of these were written before I was 13 (in 1997). I had originally intended this site to be a collection of everything I have ever started and done, but I now see a lot of this as useless fluff. Projects removed are:
- Personal Libraries: Old C++ libraries that are very outdated
- Picture Encrypt: This was just an image steganography encrypter using the picture as a one time pad. I made this as a kid before I knew image steganography and one-time-pads were things that were already known.
- WebRoute: This was a Windows file system driver that allowed grabbing files from different directories in tiers. Its functionality is easily matched with symbolic links and apache redirects.
- FileSync: A visually interactive rsync type program. Rsync is a better solution anyways, and I’m sure frontends for it are out there.
- File Functions: Old C++ CLI libraries that are very outdated and all have better alternatives out there
- Web Rich Text Editor: While I was way ahead of the curve on making this, I never polished and released it. There are so many out there nowadays anyways...
- Midi: This was the very first “large” project I built as a kid (Probably ~11). Essentially, I wanted to create a competitor to what was then the only solution (I think) for creating midis/sheet-music, Cakewalk Studio.
- Web List Creator: Old and outdated JS library
- eBay Content Creation: An old project I never finished, which was used to quickly create eBay pages with widgets and precompiled graphical designs.
- RubixSolver: A program I never even really started to implement due to technological constraints of the time.
- Icon Run: A novel gimmick from when I was very young that I never got working very well
- MP3 Tagger: Pretty useless old program that uses a file format trick I should not have utilized in the first place
- Logic Puzzles: Silly knock-offs of puzzles from the game Journeyman 2 (you have to be pretty old to remember these)
- File Sender, QuickChat, Collage Maker: Outdated with much better solutions out there
- College Crap, QBasic Crap, Highschool C++ Class: Like they say, old useless crap
- Process Saver, All-In-One Networking Kit: Programs I never even got started
- I added MySQL replication ring status reporting script to the Other Web Scripts page
2 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)To add comments, please go to the forum page for this project (guest comments are allowed for the Projects, Posts, and Updates Forums). Comments are owned by the user who posted them. We accept no responsibility for the contents of these comments.
|