1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
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
|