This library is our attempt to make the services provided by the operating system a little more convenient and a little more uniform. Support for managing files, filenames, logging, processes, and threads is provided. Note that the software is distributed under the GNU Public License. No warranty is made for it whatsoever. We have done our best to ensure that this software is high quality and error-free, but cannot guarantee anything real about it due to potential legal culpability. If you find bugs in this software or wish to contribute enhancements to it, please send them to the HOOPLE Administrator. |
application_base [h, cpp]A base class for applications. Different types of main programs can be created from this. application_shell [h, cpp]An object derived from application_base that provides some useful objects, such as a randomizer and diagnostic logging features. byte_filer [h, cpp]An object that performs file operations using the standard C library support. Makes reading and writing chunks of data to files a breeze; one no longer has to touch a file handle or remember to close it. command_line [h, cpp]This processes the command line passed to the program at startup time. Supports flags that are jammed together (as in 'rm -rf thisdir') or longer gnu flags (as in 'find --follow'). console_logger [h, cpp]A log_base object that sends the information to the console. This makes the most sense with a console mode program, but windowed applications can also log to the console. directory [h, cpp]Given a pathname of a directory in the file system, this will allow the contents of the path to be queried. dynamic_loader [h, cpp]A factory object that creates virtual library objects given a DLL name that supports this. The DLL must be based on the virtual_library class and it must use the macro for defining a virtual library (see virtual_library). This only works on Win32 so far. file_logger [ h, cpp ]Supports sending diagnostic or debugging output to a file. The log file is automatically truncated if the output exceeds a user-defined size. This is one example of an object derived from log_base, and this can be used anywhere a log_base is needed. filename [h, cpp]An abstraction for the operating system's file names that supports some helpful operations, such as retrieving the directory name or the base name of the file. files [h, cpp]A bizarre older attempt to wrap file I/O. Not as useful as the byte_filer. Possibly completely broken. On its way out. filetime [h, cpp]An abstraction for the time information attached to files in the operating system's file system. Some operating systems may provide more than one file time. ini_config [h, cpp]Reads and writes entries from initialization files in the well-known INI file format. Currently only works on Win32, but support is in the works for other operating systems. ini_parser [h, cpp]Given a string containing a set of configuration items in INI file format, this parses through and digests the string into a table_configurator (see Data Structures Library). locked_logger [h, cpp]This implements a swappable logger by deriving from the locked_object base class (see Basis Library). The locked_logger can be used by multiple threads (given that the log_base it holds is thread-safe) and, even while the threads are still hitting it to log things, the underlying logging object can be changed. The next thread to be allowed access will begin using the new object. This is highly useful for the program-wide logger support, since that object can be switched during different phases of run-time. locked_object class [h]Provides a thread-safe, swappable object. The templated object must itself be thread-safe. Given that, an instance of the object can be stored in the locked_object and used by multiple threads. Later on, that object can be swapped for a different one in a thread-safe manner. matrix template [h, cpp]A resizeable two-dimensional template for matrix based structures. Operations for storage, retrieval and resizing are provided. null_logger [h, cpp]A logger that can be used to toss out any diagnostic entries that are sent to it. This is the equivalent of /dev/null as far as log_base (see Basis Library) objects are concerned. occurrence class [h, cpp]Represents the occurrence of a particular outcome during program execution. It records the time of occurrence, the outcome number, the operation name, and other characteristics of the happening. path_configuration [h, cpp]Several functions that describe important directories to be used by an application. This provides a single starting point for programs to find their other configuration files and the proper directory for logging output. rendezvous class [h, cpp]Implements an inter-application mutual-exclusion primitive. Two or more applications can synchronize on the rendezvous object to ensure that only one of them is allowed to enter a critical section of code at a time. runtime_history class [h, cpp]A table of occurrences that show how a program or subsystem is succeeding at its tasks. Usually only outcomes that indicate failures of some sort will be stored here, which should allow a very accurate picture of what problems have been encountered. shared_memory [h, cpp]Implements a shared memory chunk that can be used by multiple different programs. In win32, different dynamic libraries in the same program can also share memory this way. This is not implemented for Linux yet (although the code seems simple--just need time to add it). startup_code group [h]Provides macros that help to define the boilerplate for a HOOPLE based application (or dynamic library). These establish the global objects, such as the program wide logger, that provide consistent support features to all applications that need them. virtual_library [h, cpp]A base class for libraries that can be dynamically loaded as plug-ins. The main requirement is that they use the DEFINE_VIRTUAL_LIBRARY macro within their code to add the proper machinery for being able to spawn a new object of the appropriate type. That object is then created as needed by the dynamic_loader and can be used to control the features provided by the plug-in library. Only works on Win32 currently. |