package PragmARC The root package of the components. Declares some common exceptions package PragmARC.Ansi_Tty_Control Control strings for ANSI-standard terminals These strings when sent to an ANSI-standard terminal, have the stated effect package PragmARC.Assertion_Handler Provides run-time checking of assertions for program correctness Test program: assertst.adb procedure PragmARC.Assignment Easy creation of procedure Assign for instantiating structures with non-limited elements An instantiation of this procedure simply performs To := From; package PragmARC.Bag_Unbounded Generic unbounded-bag ADT for general use Test program: bag_test.adb; uses bag_test_help.ad? package PragmARC.Bag_Unbounded_Unprotected Generic unbounded-bag ADT for sequential use only. package PragmARC.Binary_Searcher Binary search of an ordered list Test program: bs_test.adb package PragmARC.Binary_Semaphore_Handler Binary semaphore for controlling concurrent access not suitable for a concurrent form or a monitor package PragmARC.Character_Regular_Expression_Matcher Instantiation of PragmARC.Regular_Expression_Matcher for strings Test program: mt.adb, strm_sub.adb package PragmARC.Complex Provides complex numbers and operations Ada.Numerics.Generic_Complex_Types provides all the functionality of this package It is provided should your compiler not implement Annex G Test program: cmplxtst.adb package PragmARC.Date_Handler Provides day of the week functions; leap-year functions; days-in-month functions; functions to split Seconds to Hours, Minutes, and Seconds; and various Image functions for Year, Month, Day, Hour, Minutes, and Seconds, including an Image function for type Ada.Calendar.Time Test program: datetest.adb, df_test.adb package PragmARC.Deck_Handler A simplified cross between a list and a queue to be used as a deck of cards in card games Test program: devil.adb, devil2.adb package PragmARC.Forwarder Concurrent forwarder for task decoupling procedure PragmARC.Genetic_Algorithm A generic framework for genetic programming. Test program: evolve_pi.adb function PragmARC.Get_Line A function to obtain an entire line of text from an input file, & skip the line terminator Modified from the algorithm in the article "Variable-Length String Input in Ada" by J. Carter in ADA LETTERS, 1989 May/Jun package PragmARC.Hash_Fast_Variable_Length Fast "hashing function specifically tailored to variable-length text strings." "Similar strings are not likely to collide." From P. K. Pearson, "Fast Hashing of Variable-Length Text Strings," Comm. ACM, 1990 Jun Test program: hashtest.adb package PragmARC.Images Extended image functions for integer, modular, and floating-point types Test program: test_images.adb function PragmARC.Images.Image Instantion of PragmARC.Images.Signed_Image for type Integer package PragmARC.Least_Squares_Fitting Least-squares line fitting to a set of data Test programs: line_fit_test.adb, line_fit_test_win_io.adb (line_fit_test_win_io.adb uses Win_IO packages to plot data and fit line) package PragmARC.Linear_Equation_Solver Solves linear equations of the form A * X = B for X, where A is a matrix and X and B are vectors Works for indeterminate linear equations Uses QR factorization Test program: lin_test.adb package PragmARC.List_Bounded General purpose list for general use A list has elements in sequence; each element has a position in that sequence Positions are used to manipulate a list Each list has a maximum length package PragmARC.List_Bounded_Unprotected General purpose list for sequential use only A list has elements in sequence; each element has a position in that sequence Positions are used to manipulate a list Each list has a maximum length Test program: lb_test.adb; uses lb_test_help.ad? package PragmARC.List_Unbounded General purpose list for general use A list has elements in sequence; each element has a position in that sequence Positions are used to manipulate a list Test program: lsort.adb; uses lsorthlp.ad? package PragmARC.List_Unbounded_Unprotected General purpose list for sequential use A list has elements in sequence; each element has a position in that sequence Positions are used to manipulate a list package PragmARC.Math Provides useful constants not defined by Ada.Numerics package PragmARC.Math.Integer_Functions Provides GCD and LCM functions Test program: gcd_test.adb package PragmARC.Math.Functions This package is implemented in terms of Ada.Numerics.Generic_Elementary_Functions. It provides argument checking via subtypes rather than using Argument_Error. Test program: mathtest.adb package PragmARC.Matrix_Math Matrix manipulation routines User supplies Element (number) type of matrices and constants and operations for the type Must be able to supply negative one (-1) and zero (0) constants The generic parameters are designed to make instantiation easy for a floating-point element: use Ada.Numerics.Elementary_Functions; -- For Sqrt package PragmARC.Real_Matrix is new Matrix_Math (Element => Float, Neg_One_Element => -1.0, Zero_Element => 0.0); Type Element is private to allow more abstract types (complex numbers, for example) Test program: mat_test.adb package PragmARC.Menu_Handler Straightforward text menus for ANSI-standard terminals package PragmARC.Min_Max Minimum and maximum functions for non-scalar values for which "<" is meaningful function PragmARC.Mixed_Case Convert a string to mixed case Test program: reflect_test.adb package PragmARC.Monitor_Handler Monitor for concurrent use package PragmARC.Postfix_Calculator Provides a postfix (reverse Polish notation) calculator with many features Test program: calc.adb package PragmARC.Protected_Option Provides a Boolean Enabled/Disabled option selection suitable for concurrent use package PragmARC.Queue_Bounded Bounded queue ADT for general use Each queue has a preset maximum size Test program: qb_test.adb; uses qb_test_hlp.ads package PragmARC.Queue_Bounded_Blocking Bounded queue ADT for concurrent use only Each queue has a preset maximum size A call to Put when the queue is full blocks the caller until another task calls Get A call to Get when the queue is empty blocks the caller until another task calls Put package PragmARC.Queue_Bounded_Unprotected Bounded queue ADT for sequential use only Each queue has a preset maximum size package PragmARC.Queue_Unbounded General purpose queue for general use Test program: q_test.adb; uses q_test_hlp.ads package PragmARC.Queue_Unbounded_Blocking Blocking queue for concurrent use Attempts to Get from an empty queue block until another task adds an Element to the queue package PragmARC.Queue_Unbounded_Unprotected General purpose queue for sequential use package PragmARC.Quick_Searcher Fast string search routine; faster than Boyer-Moore for most reasonable search patterns From COMMUNICATIONS OF THE ACM, 1990 Aug Test program: qs_test.adb package PragmARC.Reflection Determine a unit's full name Test program: reflect_test.adb package PragmARC.Regular_Expression_Matcher Generic regular expression pattern matching A pattern consists of elements Elements can be A literal The wild item An escaped item A negated element A class A closure Test program: mt.adb, strm_sub.adb package PragmARC.REM_NN_Wrapper A Recursive Error Minimization (REM) neural network Easy to use, fast, & robust Need only specify Num_Input_Nodes, Num_Hidden_Nodes, Num_Output_Nodes, & Num_Patterns If Num_Patterns is not easily determined, set it & R to 1 Set New_Random_Weights to False & Num_Patterns to 1 to use a previously-trained network Set Weight_File_Name as desired Default values for all other parameters should be satisfactory Test program: xor_problem.adb package PragmARC.Safe_Pointers Reference-counted pointers that are automatically deallocated when the count becomes zero Test program: sp_test.adb; uses sp_test_help.ads package PragmARC.Safe_Suspension_Objects Invokes a suspension object "safely" using the features of controlled types package PragmARC.Safe_Semaphore_Handler Invokes a binary semaphore "safely" using the features of controlled types package PragmARC.Set_Discrete Pascal-like set type and operations Test program: set_test.adb package PragmARC.Skip_List_Unbounded Implements a skip list, a probabilistically-balanced structure similar to a balanced tree in use and in search time Described by W. Pugh in "Skip Lists: A Probabilistic Alternative to Balanced Trees," CACM 1990 Jun Can also be used as a priority queue Test program: skiptest.adb; uses skip_help.ad? procedure PragmARC.Skip_List_Unbounded.Put Output procedure for skip lists, for debugging and visualization procedure PragmARC.Sort_Heap Generic heap sort Test program: heap_test.adb procedure PragmARC.Sort_Insertion Generic insertion sort package PragmARC.Sort_Quick_In_Place Generic quick sort Uses median-of-3 pivot selection Uses PragmARC.Sort_Insertion on short arrays Two sort procedures are provided, Sort_Sequential and Sort_Parallel Sort_Parallel will use additional tasks, giving faster sorting on large sets procedure PragmARC.Sort_Radix Generic radix sort for arrays of modular types Test program: radix_test.adb package PragmARC.Stack_Unbounded General purpose stack for general use package PragmARC.Stack_Unbounded_Unprotected General purpose stack for sequential use package PragmARC.Three_Way Three way comparison operation package PragmARC.Transporter_Handler Transporter task for task decoupling package PragmARC.Universal_Random Universal random number generator Passes "stringent" tests for randomness and independence Modified by J. Carter from version given in Ada Letters 1988 Sep/Oct Ada 95 defines 2 standard random-number packages, Ada.Numerics.Float_Random & Ada.Numerics.Discrete_Random. However, the random-number algorithm used by these packages is implementation defined. This package provides a portable generator of known, good quality, should portability of the algorithm be a concern. Test program: randtest.adb package PragmARC.Us_Card Definition of standard cards used in USA package PragmARC.Us_Deck An instantiation of PragmARC.Deck_Handler for the cards defined in PragmARC.Us_Card package PragmARC.Word_Input Provides the capability to get a word from a text file A word is a sequence of non-whitespace characters separated by whitespace Whitespace is one or more spaces, horizontal tabs, or line terminators package PragmARC.Wrapping Provides equivalents to the 'Pred and 'Succ functions that wrap around from 'First to 'Last and from 'Last to 'First Test program: wrapping_test.adb