This directory AMMUNITION contains reusable packages on C/C++: `allocate', `vlobject', `objstack', `hashtab', `commline', `ticker', `position', `errors', `bits', `arithm', `IEEE': o allocate Allocating and freeing memory with automatic fixing some allocation errors. o vlobject Work with variable length objects (VLO). Any number of bytes may be added to and removed from the end of VLO. If it is needed the memory allocated for storing variable length object may be expanded possibly with changing the object place. But between any additions of the bytes (or tailoring) the object place is not changed. To decrease number of changes of the object place the memory being allocated for the object is longer than the current object length. o objstack Work with stacks of objects (OS). Work with the object on the stack top is analogous to one with a variable length object. One motivation for the package is the problem of growing char strings in symbol tables. Memory for OS is allocated by segments. A segment may contain more one objects. The most recently allocated segment contains object on the top of OS. If there is not sufficient free memory for the top object than new segment is created and the top object is transferred into the new segment, i.e. there is not any memory reallocation. Therefore the top object may change its address. But other objects never change address. o hashtab Work with hash tables. The package permits to work simultaneously with several expandable hash tables. Besides insertion and search of elements the elements from the hash tables can be also removed. The table element can be only a pointer. The size of hash tables is not fixed. The hash table will be automatically expanded when its occupancy will became big. o position Work with source code positions. The package serves to support information about source positions of compiled files taking all included files into account. o errors Output of compiler messages. The package serves output one-pass or multi-pass compiler messages of various modes (errors, warnings, fatal, system errors and appended messages) in Unix style or for traditional listing. The package also permits adequate error reporting for included files. o commline Work with command line. The package implements features analogous to ones of public domain function `getopt'. The goal of the package creation is to use more readable language of command line description and to use command line description as help output of program. o ticker Simultaneous work with several tickers (timers). o bits Work with bit strings (copying, moving, setting, testing, comparison). o arithm Implementing host machine-independently arbitrary precision integer numbers arithmetic. The implementation of the package functions are not sufficiently efficient in order to use for run-time. The package functions are oriented to implement constant-folding in compilers, cross-compilers. o IEEE Implementing host machine-independently IEEE floating point arithmetic. The implementation of the package functions are not sufficiently efficient in order to use for run-time. The package functions are oriented to implement constant-folding in compilers, cross-compilers. There are files with corresponding names and extensions `.h' (interface file for C/C++), `.c' (implementation file on C), and `.cpp' (implementation file on C++). To install AMMUNITION see file INSTALL in the current directory. There are also shell scripts for testing the package with corresponding names and extension `.tst'. Documentation of the reusable packages is in files `ammunition.txt', `ammunition.dvi', `ammunition.ps', `ammunition.info*', `ammunition*.html', `ammunition*.rtf' for C and `ammunition++.txt', `ammunition++.dvi', `ammunition++.ps', `ammunition++.info*', `ammunition++*.html', `ammunition++*.rtf'. Please send bug reports and comments to vmakarov@fnmail.com Vladimir Makarov