comp.lang.ada
 help / color / mirror / Atom feed
* Mats Weber's Ada components
@ 1999-01-29  0:00 Mats Weber
  1999-02-02  0:00 ` Nick Roberts
  0 siblings, 1 reply; 2+ messages in thread
From: Mats Weber @ 1999-01-29  0:00 UTC (permalink / 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.




^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Mats Weber's Ada components
  1999-01-29  0:00 Mats Weber's Ada components Mats Weber
@ 1999-02-02  0:00 ` Nick Roberts
  0 siblings, 0 replies; 2+ messages in thread
From: Nick Roberts @ 1999-02-02  0:00 UTC (permalink / raw)


A fantastic collection, Mats. Great!

Would it be within the bounds of practicability for you to make everything a
child of the (empty) package "Weber" (which would be Pure, of course ;-)?
Maybe the VMS stuff could go under one called "VMS" (which would not be Pure
:-)?

-------------------------------------------
Nick Roberts
-------------------------------------------







^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~1999-02-02  0:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-01-29  0:00 Mats Weber's Ada components Mats Weber
1999-02-02  0:00 ` Nick Roberts

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox