Next: Notations
Up: Generic programming on automata
Previous: Generic programming on automata
ASTL is a set of C++ STL-like software
Components to manipulate automata. It is
based on generic programming techniques
introduced by A. Stepanov, M. Lee and
D. Musser known as the Standard Template Library and part of the draft Standard
C++. Accordingly, ASTL provides two main components: automaton container
classes and generic algorithms which make use of two others components, the
iterators and the function objectsfunction
object.
Notion of programming with STL is a
prerequisite to fully understand this library.
If you
have no idea of what STL and generic programming are you shoud read [W96]
(tutorial on STL), [SL95] (STL documentation) and [MS89] (an article
about generic programming). We stress the fact that generic
programming in C++ as defined by A. Stepanov is not object oriented
programming. Of course it makes use of objects but inheritance (among other
things) is rarely used and it
rather centers around templates manipulation for efficiency purposes.
ASTL aims at providing generic algorithms on
automata written once and for all.
We designed the code with efficiency and flexibility in mind. With this
library, we are able to write adaptive code (which is a synonym for
reusability) letting some doors opened for future needs. We achieve
flexibility at the lower level, that is, the containers implementation : to
meet a user's need on memory space restriction or on willingly fast part of the
code, we supply a variety of automaton containers, each one of these presenting
advantages and drawbacks, so that the programmer
an pick his choice among them accordingly to his objectives.
This library has been designed to be
algorithm-oriented and efforts have been
made on analysis and conception of the code to fit in the STL philosophy of
programming : we want the algorithms to impose constraints on the containers
interface (including its iterators interface) but not the way round. Eventually, we
ended up with a combination of classe templates constituting the common public
interface of all of our automaton classes.
Next: Notations
Up: Generic programming on automata
Previous: Generic programming on automata
Vincent Lemaout
12/9/1997