QtSqlView is a simple and easy to use SQL database browser using Qt's QtSql components. QtSql drivers can natively connect to MySQL, PostgreSQL, and SQLite databases. Other database systems may be accessed using their ODBC drivers. The database browser contains a data table listing, a schema display, and a custom query editor with syntax highlighting. It does not aim to be a generic SQL database tool including table schema editor and dialog-based data entry. It aims to be a plain and simple hassle-free SQL table editor for inexperienced users.
The STX B+ Tree package is a set of C++ template classes implementing a B+ tree key/data container in main memory. The classes are designed as drop-in replacements of the STL containers set, map, multiset, and multimap, and follow their interfaces very closely. By packing multiple value pairs into each node of the tree, the B+ tree reduces heap fragmentation and utilizes cache-line effects better than the standard red-black binary tree. The tree algorithms are based on the implementation in Cormen, Leiserson, and Rivest's Introduction into Algorithms, Jan Jannink's paper, and other algorithm resources. The classes contain extensive assertion and verification mechanisms to ensure the implementation's correctness by testing the tree invariants.
The STX Expression Parser provides a C++ framework that can process user-specified expression strings containing program-specific variables. It can be integrated into applications to allow user-customized data selection and filtering. The expression strings are intuitive SQL-like WHERE clauses, and can contain arbitrarily complex arithmetic. At the same time, the parse tree evaluation speed is guaranteed to be fast enough to safely iterate over larger data sets. The framework uses the Boost.Spirit parser library combined with a versatile custom scalar value class.
Flex Bison C++ Template is a code template that can be used to integrate a Flex scanner and Bison parser pair into a modern C++ program. These two universal tools are very difficult to incorporate into a good C++ design. The template utilizes both Flex and Bison in C++ mode and their output are encapsulated into classes. Thus the lexer and parser become fully reentrant, and multiple distinct lexer-parser pairs can easily be linked into one binary. The code implements a simple infix-notation calculator as an example, which can be used as a starting-point for you to insert your grammar.
CryptoTE is a text editor with integrated strong cryptography. It is based on the popular Scintilla widget and automatically stores text data in secure encrypted container files. Compared to other "password keeper" programs, CryptoTE does not force any structure upon your data: it works with plain ASCII text and does not require you to fill in grids, key-value attributes, or descriptions. Encryption is transparently performed using the highly-secure Serpent cipher. The editing interface is thoroughly optimized for speed and ease of use. Multiple subfiles, Quick-Find, and a two-click random password generator make daily use very convenient.
digup is a console tool to update md5sum or shasum digest files. It will read existing digest files, check the current directory for new, updated, modified, renamed, or deleted files, and query the user with a summary of changes. After reviewing the updates, they can be written back to the digest file. This makes digup very useful to update and verify incremental archives like chronological data storages, which are commonly stored and backed up on hard disks. Using a full file digest scan, even slowly creeping bad blocks on old hard disks can be detected. By using a crontab entry, this check can be performed unattended and routinely.
The stx::CBTreeDB is a collection of C++ classes with which read-only key-value database files can be created and read. A database efficiently maps a large number of integral fixed-length keys to opaque binary value blobs. Variable-length or duplicate keys are currently not supported. Keys are organized into a highly compact index structure, which is very similar to a B-tree and allows very fast key lookups. Both keys and values are stored in order and thus queries in a local proximity can benefit from caching effects. All applications mapping a large number of constant, integral keys to string or data blobs can benefit from this library.
The STX ExecPipe library provides a convenient C++ interface to execute child programs connected via pipes. It is a front-end to the system calls fork(), pipe(), select(), and execv() and hides all the complexity of these low-level functions. It allows a program to build a sequence of connected children programs with the input and output of the pipe sequence redirected to a file, string, or file descriptor. The library also allows custom asynchronous data processing classes to be inserted into the pipe or placed at the source or sink of the sequence.
malloc_count provides a set of source code tools that measure the amount of memory allocated to a program at run-time. The code library provides facilities to measure the current and peak heap memory allocation, and write a memory profile for plotting. Furthermore, separate stack_count functions can measure stack usage. The code tool works by intercepting the standard malloc(), free(), etc. functions. Thus no changes are necessary to the inspected source code.
The "Sound of Sorting" is a demo program containing many integer sorting algorithms. The algorithms are visualized in real time and augmented with sound effects, which are based on the values being compared. Animation speed and sound sustain can be customized while the algorithm is running. The visualization also highlights the algorithm's internal workings, which makes the demo program very useful for teaching sorting algorithms in an undergraduate computer science course. The program also counts the number of comparisons done by an algorithm, which can then be compared to the analytically derived value. The demo is implemented using the cross-platform toolkits wxWidgets and SDL, and can be executed on Windows, Linux, and Mac.
pmbw is a set of assembler routines to measure the parallel memory (cache and RAM) bandwidth of modern multi-core machines. Memory bandwidth is one of the key performance factors of any computer system. Today, measuring the memory performance often gives a more realistic view of the overall speed of a machine than pure arithmetic or floating-point benchmarks. pmbw contains a set of very basic functions which are all hand-coded in assembler to avoid any compiler optimizations. These basic functions are modeled after the basic inner loops found in any data processing, sequential scanning and pure random access. Any application will have a memory access pattern which is somewhere between these two extremes. The current version of pmbw supports benchmarking 16-, 32-, 64-, 128-, or 256-bit memory transfers on x86_32-bit, x86_64-bit, and ARMv6 systems.