New directory tree, with preprocessor/ inside interpretor/.
[Faustine.git] / interpretor / preprocessor / faust-0.9.47mr3 / compiler / signals / sigtyperules.hh
1 /************************************************************************
2 ************************************************************************
3 FAUST compiler
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.
10
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.
15
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 ************************************************************************/
21
22
23
24 #ifndef _SIGTYPERULES_
25 #define _SIGTYPERULES_
26
27 #include "signals.hh"
28 #include "sigtype.hh"
29 #include "sigraterules.hh"
30
31
32 extern bool gVectorSwitch;
33
34
35 /** \file sigtyperules.hh
36 * API to the typing system of signals
37 *
38 * Two functions are provided :
39 *
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
42 *
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.
46 *
47 **/
48
49
50
51
52 /**
53 * Annotates a signal term and its subterms with type information
54 */
55 void typeAnnotation(Tree term);
56
57
58
59 /**
60 * Return the type of a previously annotated signal term
61 */
62 Type getCertifiedSigType(Tree term);
63
64
65 /**
66 * print annotation statistics
67 */
68 void annotationStatistics();
69
70 #endif
71