1 /************************************************************************
2 ************************************************************************
4 Copyright (C) 2003-2004 GRAME, Centre National de Creation Musicale
5 ---------------------------------------------------------------------
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 ************************************************************************
20 ************************************************************************/
24 #ifndef _SIGTYPERULES_
25 #define _SIGTYPERULES_
29 #include "sigraterules.hh"
32 extern bool gVectorSwitch;
35 /** \file sigtyperules.hh
36 * API to the typing system of signals
38 * Two functions are provided :
40 * \li void typeAnnotation(Tree term) : annotates a signal term and its subterms with type information
41 * \li Type getCertifiedSigType(Tree term) : return the type of a previously annotated signal term
43 * TypeAnnotation must be called first to annotate a signal or a list of signals, before being able to
44 * call getCertifiedType on any subterms. GetCertifiedType will produce an error if a term was not
45 * previously annotated.
53 * Annotates a signal term and its subterms with type information
55 void typeAnnotation(Tree term);
60 * Return the type of a previously annotated signal term
62 Type getCertifiedSigType(Tree term);
66 * print annotation statistics
68 void annotationStatistics();