From: Mats Weber <Mats.Weber@nowhere.com>
Subject: Mats Weber's Ada components
Date: 1999/01/29
Date: 1999-01-29T00:00:00+00:00 [thread overview]
Message-ID: <36B1B121.E1F08815@nowhere.com> (raw)
I am (at last) releasing my Ada software components. The end of
this message contains a short description of them. You can find
the full description with copyright and download info at the
following URL:
http://lglwww.epfl.ch/Team/MW/mw_components.html
or by following the link from my home page:
http://members.tripod.com/matsw/
The components are released under the same conditions as the GNAT
runtime library (modified version of the GPL).
I am not posting this from a valid e-mail address as I will be
travelling for a year or so and my mailbox won't have room for
spam. If you want to contact me by e-mail, use the address on my
home page.
I'd be glad to hear from anyone who finds these useful, or
unusable, or any other comment.
Introduction
------------
The components in this library fall into these main categories:
- Data Structures (Bags, Tables, Queues, Stacks, Lists, etc.)
- Math (ZpZ_Field, Polynomials, Permutations, Linear_Programming, etc.)
- Ada Programming Tools (Makeup_Ada_File, Ada_Lexical_Analyzer, etc.)
- OS Interface (CPU, VMS_File_Names, etc.)
The most useful to you will probably be the data structures because I
wrote them to be as versatile as possible.
These components are for Ada 95 and generally will not compile with
Ada 83, but if you need to use them in an Ada 83 environment, almost
all you will have to do is remove the (<>) in generic formal types
where appropriate.
I have deliberately chosen not to systematically use Ada 95's
finalization stuff because doing so forces the generic packages to be
instantiated at library level, something I do not want to require (I
have many places in code that uses the components where this would be
unacceptable). Moreover, finalization can be easily added where
needed. What should be done is two variants of each data structure
component, one without finalization and one with finalization, but I
have no time to do that now, maybe in a later version.
The file naming convention used is the same as GNAT's, with very few
exceptions: some very long names have been shortened and some
OS-specific variants end in --<OS_name>.adb.
Component Descriptions
----------------------
The rest of this document contains all the components in alphabetical
order with a short description of what they do. This documentation is
short (laziness) but the components themselves are fairly well
documented with comments.
ada_lexical_analyzer-ada_keywords.adb
ada_lexical_analyzer-analyzer.adb
ada_lexical_analyzer.adb
ada_lexical_analyzer.ads
A lexical analyzer for the Ada 95 language. Not very efficient,
but it works.
bags-access_by_item.adb
bags-access_by_item.ads
bags-bounded_operations.adb
bags-bounded_operations.ads
bags-implementation.adb
bags-set_operations.adb
bags-set_operations.ads
bags.adb
bags.ads
This is probably the most useful set of packages in this
library. It implements associative tables using AVL trees. Its
specification and implementation are split into several generic
subpackages so that the whole thing does not get instantiated each
time.
bch_code.adb
bch_code.ads
bch_code_exceptions.ads
Implements operations on BCH codes. I wrote this for my degree in
math, so if you don't know what a BCH code is, these are probably
not worth looking at.
binary_search.adb
binary_search.ads
Implements binary searching in a sorted array.
blurred_logic.adb
blurred_logic.ads
Implements a boolean type with three values (False, True and Maybe)
and operations on that type.
bounded_bags.adb
bounded_bags.ads
Same as bags above but does not use the heap (stores in an array
instead). Searching is O(Log N) but insertion is not.
buffers.adb
buffers.ads
Implements a simple buffer, bounded or unbounded.
canonical_bch_codes.adb
canonical_bch_codes.ads
More operations on BCH codes (see above).
case_conversions.adb
case_conversions.ads
Upper/Lower case conversions. Probably not very useful anymore
since Ada 95, but left there because some components use it.
character_handler.adb
character_handler.ads
Basic operations on Characters. Probably not very useful anymore
since Ada 95, but left there because some components use it.
check_bch_bound.adb
check_bch_bound_common.adb
check_bch_bound_common.ads
check_bch_bound_random.adb
More operations on BCH codes (see above).
check_file_for_tabs.adb
Checks if a text file contains tabs.
cpu-system_interface--unix.adb
cpu-system_interface--vms.adb
cpu.adb
cpu.ads
Package for CPU time measurements. There is a body for UNIX and VMS,
just use the appropriate file for your system.
directed_graph_operations.adb
directed_graph_operations.ads
Operations on directed graphs (uses Graph_Handler).
discrete_sets.adb
discrete_sets.ads
Discrete sets and their operations.
distributor-link_controller.adb
distributor-network_handler.adb
distributor-read_nodes_file.adb
distributor.adb
distributor.ads
Package for distributing the execution of programs on several nodes
of a network. Currently only implemented for VMS. This is probably
totally obsolete since the distributed systems annex.
dynamic_arrays.adb
dynamic_arrays.ads
Dynamic arrays (very similar to Tables).
exchange.adb
exchange.ads
Generic procedure to swap two items of any nonlimited type.
exponentiation_functions.adb
exponentiation_functions.ads
Generic exponentiation functions.
extended_calendar.adb
extended_calendar.ads
Calendar with support for very large values of Duration.
fast_galois_field-initialize_tables.adb
fast_galois_field.adb
fast_galois_field.ads
fast_gf_base_type.ads
Fast implementation of the Galois_Field package (part of my work on
BCH codes).
file_name_enumeration--unix.adb
file_name_enumeration--vms.adb
file_name_enumeration.ads
Enumerate files matching a certain regexp. Probably much too simple
to be really reusable.
find_shortest_product.adb
find_shortest_product.ads
Finds the shortest product yielding a given result by exhaustive
enumeration.
float_comparison.adb
float_comparison.ads
Comparison of floating point types. Use with caution.
galois_field.adb
galois_field.ads
Implementation of operations in Finite fields (part of my work on
BCH codes).
general_sets.adb
general_sets.ads
Sets of any type implemented as AVL trees (based on Bags).
generic_varying_text.adb
generic_varying_text.ads
Generic package for varying strings. Largely obsolete since Ada 95.
gf_base_type.ads
More on Galois fields (see above).
grammars-convert_to_greibach_nf.adb
grammars.adb
grammars.ads
Operations on grammars.
graph_handler.adb
graph_handler.ads
graph_operations.adb
graph_operations.ads
Representation of a graph and operations on it.
hamiltonian_circuits_on_hypercube.adb
hypercube.adb
hypercube.ads
Calculations on the hypercubes of any dimension.
integer_primes.ads
integer_primes_parameters.adb
integer_primes_parameters.ads
Instance of Prime_Numbers for Standard.Integer.
keys.adb
keys.ads
Package for unique identification keys.
large_integer_handler.ads
large_integer_handler_types.ads
large_integers-fixed_length_operations.adb
large_integers-image.adb
large_integers-variable_length_ops-val.adb
large_integers-variable_length_ops.adb
large_integers.adb
large_integers.ads
Extended precision integers. A better implementation using
finalization would be possible.
largest_numeric_types.ads
Package to get the most largest numeric types available in an
implementation.
lexicographic_order.adb
lexicographic_order.ads
Implementation of lexicographic order on arrays of any ordered
type.
linear_programming-add_constraint.adb
linear_programming-change_bounds.adb
linear_programming-change_objective.adb
linear_programming-create_program.adb
linear_programming-solve-compress.adb
linear_programming-solve-dual_phase.adb
linear_programming-solve-primal_phase_1.adb
linear_programming-solve-primal_phase_2.adb
linear_programming-solve.adb
linear_programming.adb
linear_programming.ads
Linear programming (simplex method). Not the most efficient you
will find, but it works.
list_canonical_bch_codes.adb
More BCH code stuff.
lists.adb
lists.ads
Doubly linked lists. Singly linked lists are available in Queues
and Stacks, depending on what you need to do with them.
makeup_ada_file.adb
Program to change the case of Ada keywords and identifiers in Ada
source. Supports an exceptions file to correctly write identifiers
such as Text_IO, etc.
mandelbrot_set.adb
mandelbrot_set.ads
Operations on the Mandelbrot set.
matrices.adb
matrices.ads
Generic package for handling matrices.
measure.adb
Program that measures Ada source code (lines, non-empty non-comment
lines, semicolons).
measure_distributor_transmition_time.adb
Program to measure how fast Distributor transmits messages.
min_max_functions.adb
min_max_functions.ads
Generic Min and Max functions on pairs and arrays of any ordered
type.
multiple_key_bags.adb
multiple_key_bags.ads
Bags with multiple keys. Inefficient implementation uses tasks
because Ada 83 has no subprogram types.
nondirected_graph_operations.adb
nondirected_graph_operations.ads
Operations on nondirected graphs. Uses Graph_Handler.
number_images.adb
number_images.ads
Image/Value functions for numeric types. Essentially written to get
rid of the nasty extra space in Ada's Type'Image attribute.
permutations.adb
permutations.ads
Package implementing operations on permutations of finite sets.
polynomials.adb
polynomials.ads
Generic polynomials package.
postscript_mandelbrot.adb
Program to generate a black and white postscript image of the
Mandelbrot Set.
prime_numbers.adb
prime_numbers.ads
Generic package for operations on prime numbers.
print_ada_file.adb
Program to generated escape sequences to print Ada source with bold
keywords and italic comments.
print_gf_addition_table.adb
More Galois field stuff (see above).
protected_bags-access_by_item.adb
protected_bags-access_by_item.ads
protected_bags-bounded_operations.adb
protected_bags-bounded_operations.ads
protected_bags-implementation.adb
protected_bags-set_operations.adb
protected_bags-set_operations.ads
protected_bags.adb
protected_bags.ads
protected_keys.adb
protected_keys.ads
protected_tables.adb
protected_tables.ads
Same as Bags, but protected by a semaphore for access by multiple
tasks.
queues.adb
queues.ads
Generic queues package.
quick_sort.adb
quick_sort.ads
Generic quick sort procedure.
quick_sort_function.adb
quick_sort_function.ads
Generic quick sort function.
random.ads
random_generator.adb
random_generator.ads
random_generator_period.adb
random_generator_period.ads
random_numbers.adb
random_numbers.ads
random_numeric_types.ads
Random generation packages. Probably made obsolete by Ada 95, but I
include them because some of my programs are still using it.
read_write_semaphore.adb
read_write_semaphore.ads
Read/write semaphore.
rtf_ada_file.adb
Program to transform Ada source code into RTF format with bold
keywords for use in a text processing program.
show_tabs.adb
Program to check if text file have tabs.
simple_semaphore.adb
simple_semaphore.ads
Simple semaphore (no distinction between read and modify
operations).
solve_matching_problem.adb
Program to solve a matching problem with linear programming
(experimental).
square_root_functions.adb
square_root_functions.ads
Generic functions to extract the square root of integer and fixed
point numbers without using floats.
stacks.adb
stacks.ads
Generic stacks package.
standard_random.ads
Instance of the random generator with Standard.Integer and
Standard.Float.
state.adb
Program to show processes in a VMS system with more information
than "show system" gives.
storage_units.ads
Definition of storage units (used in VMS stuff).
string_case_conversions.ads
Case conversion functions for Standard.String (obsolete since Ada
95).
string_handler.ads
string_operations.adb
string_operations.ads
String manipulation functions.
string_text_io.ads
Additional Text_IO functions for strings.
tables.adb
tables.ads
Generic associative tables, based on Bags.
test_ada_lexical_analyzer.adb
test_bags.adb
test_bags_with_zero_keys.adb
test_bch_code.adb
test_bch_code_fast.adb
test_character_handler.adb
test_complex.adb
test_cpu.adb
test_discrete_sets.adb
test_distributor.adb
test_extended_calendar.adb
test_fast_galois_field.adb
test_fifo_channel.adb
test_galois_field.adb
test_general_sets.adb
test_grammars-get.adb
test_grammars-put.adb
test_grammars.adb
test_graph_handler.adb
test_large_integer_handler.adb
test_large_integers.adb
test_large_prime_numbers.adb
test_linear_programming.adb
test_lists.adb
test_matchings.adb
test_math_pack.adb
test_matrices.adb
test_multiple_key_bags.adb
test_permutations.adb
test_polynomials.adb
test_prime_numbers.adb
test_protected_bags.adb
test_protected_tables.adb
test_queues.adb
test_quick_sort.adb
test_random.adb
test_random_generator_period.adb
test_read_write_semaphore.adb
test_string_handler.adb
test_tables.adb
test_user_interface.adb
test_vms_file_names.adb
Test programs. Generally not very clean.
text_io_streams.adb
text_io_streams.ads
text_stream_definitions.ads
Definition of Text_IO as a stream of characters for use by
Ada_Lexical_Analyzer.
the_random_generator.ads
Instance of the random generator.
truncation_functions.adb
truncation_functions.ads
Generic truncation functions (float, fixed) -> integer.
two_key_bags.adb
two_key_bags.ads
Simplifed version of Bags with two keys instead of one.
unbounded_string_text_io.adb
unbounded_string_text_io.ads
Text_IO add-ons for unbounded strings.
user_interface.adb
user_interface.ads
Very simple user interface for getting numbers and strings with
prompts, through Text_IO.
varying_text.ads
varying_text_io.ads
Instance of Generic_Varying_Text for Standard.String.
vertex_arc.adb
vertex_arc.ads
Definition of types Vertex and Arc for Graph_Handler.
vms_file_names.adb
vms_file_names.ads
vms_logical_names.adb
vms_logical_names.ads
vms_system.adb
vms_system.ads
VMS stuff.
zap_tabs.adb
Program untabify text files.
zpz_base_type.ads
zpz_field-check_instantiation.adb
zpz_field.adb
zpz_field.ads
zpz_field_exceptions.ads
Packages defining operations in the Z/pZ field, used for
Galois_Fields and BCH codes.
next reply other threads:[~1999-01-29 0:00 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-01-29 0:00 Mats Weber [this message]
1999-02-02 0:00 ` Mats Weber's Ada components Nick Roberts
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox