Merge branch 'master' of https://scm.cri.ensmp.fr/git/Faustine
[Faustine.git] / interpretor / faust-0.9.47mr3 / compiler / utils / names.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 #ifndef __NAMES__
23 #define __NAMES__
24
25 #include "tlib.hh"
26 #include "propagate.hh"
27 #include <string>
28
29 using namespace std;
30
31
32 /**
33 * \file names.hh
34 *
35 * Interface for names management.
36 *
37 **/
38
39
40
41
42 /**
43 * Indicates the identifier (if any) the expression was a definition of.
44 * @param t the expression
45 * @param id reference to the identifier
46 * @return true if the expression t was a definition of id
47 **/
48
49 bool getDefNameProperty(Tree t, Tree& id);
50
51 void setDefNameProperty(Tree t, Tree id);
52 void setDefNameProperty(Tree t, const string& name);
53
54 //bool getSigListNickName (Tree t, Tree& id);
55 //void setSigListNickName (const siglist& lsig, const string& nickname);
56
57 void setSigListNickName (Tree lsig, const string& nickname);
58
59 void setSigNickname(Tree t, const string& id);
60 bool getSigNickname(Tree t, Tree& id);
61
62
63 /**
64 * Push a new layer and add a single definition.
65 * @param id the symbol id to be defined
66 * @param def the definition to be binded to the symbol id
67 * @param lenv the environment where to push the layer and add the definition
68 * @return the new environment
69 */
70 Tree pushValueDef(Tree id, Tree def, Tree lenv);
71
72 /* numeric simplification of pattern arguments */
73 Tree simplifyPattern (Tree pattern);
74
75 #endif