package Symbol_Table is
-- DESCRIPTION :
-- This package provides management of a table of symbols, useful
-- in the input/output of polynomials in several variables.
-- AUXILIARY DATA STRUCTURES :
subtype Symbol is string(1..5);
-- EXCEPTIONS :
OVERFLOW_IN_THE_SYMBOL_TABLE : exception;
-- occurs when a new symbol is added to a full symbol table
INDEX_OUT_OF_RANGE : exception;
-- occurs when a symbol is asked that is not in the range of the table
-- CREATORS :
procedure Init ( max : in natural );
-- DESCRIPTION :
-- A new symbol table is created with place for max symbols.
procedure Enlarge ( max : in natural );
-- DESCRIPTION :
-- Enlarges the symbol table so that it can contain as many symbols
-- as the previous maximum plus the new max.
procedure Replace ( i : in natural; sb : in Symbol );
-- DESCRIPTION :
-- Replaces the ith symbol by the given sb.
-- CONSTRUCTORS :
procedure Add ( sb : in Symbol );
procedure Add ( sb : in Symbol; pos : out natural );
-- DESCRIPTION :
-- A new symbol is added to the symbol table;
-- pos is the entry of the added symbol in the table.
procedure Remove ( sb : in Symbol );
procedure Remove ( i : in natural );
-- DESCRIPTION :
-- Removes the ith symbol sb from the symbol table.
-- SELECTORS :
function "<" ( s1,s2 : Symbol ) return boolean;
function ">" ( s1,s2 : Symbol ) return boolean;
-- DESCRIPTION :
-- Defines an order relation on the symbols.
function Maximal_Size return natural;
-- DESCRIPTION :
-- Returns the maximal number of symbols the table can contain.
function Number return natural;
-- DESCRIPTION :
-- Returns the number of current symbols in the table.
function Empty return boolean;
-- DESCRIPTION :
-- Returns true if the symbol table has not been initialized yet,
-- or if a Clear has been done.
function Get ( sb : Symbol ) return natural;
-- DESCRIPTION :
-- The entry of the symbol in the table is returned.
-- If the symbol does not occur in the table, then 0 is returned.
function Get ( i : natural ) return Symbol;
-- DESCRIPTION :
-- The symbol corresponding with the ith unknown is returned.
-- DESTRUCTOR :
procedure Clear;
-- DESCRIPTION :
-- The allocated memory space is freed.
end Symbol_Table;