next up previous
Next: Notations Up: Generic programming on automata Previous: Generic programming on automata

Introduction

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 up previous
Next: Notations Up: Generic programming on automata Previous: Generic programming on automata
Vincent Lemaout
12/9/1997