X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/1059e1cc0c2ecfa237406949aa26155b6a5b9154..66f23d4fabf89ad09adbd4dfc15ac6b5b2b7da83:/interpretor/preprocessor/faust-0.9.47mr3/compiler/generator/Text.cpp diff --git a/interpretor/preprocessor/faust-0.9.47mr3/compiler/generator/Text.cpp b/interpretor/preprocessor/faust-0.9.47mr3/compiler/generator/Text.cpp deleted file mode 100644 index c89c7f5..0000000 --- a/interpretor/preprocessor/faust-0.9.47mr3/compiler/generator/Text.cpp +++ /dev/null @@ -1,237 +0,0 @@ -/************************************************************************ - ************************************************************************ - FAUST compiler - Copyright (C) 2003-2004 GRAME, Centre National de Creation Musicale - --------------------------------------------------------------------- - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - ************************************************************************ - ************************************************************************/ - - - -#include -#include -#include -#include -#include "Text.hh" -#include "compatibility.hh" -#include -#include -#include -#include -#include - -#include "floats.hh" - -extern bool gInternDoubleSwitch; - -static string substitution (const string& model, const vector& args); - -/** - * Text substitution. Creates a string by replacing all the $n - * occurences in the model string, with the corresponding arguments. - * Example : - * subst("float $0 = $1;", "var", T(10.2)) - */ -string subst (const string& model, const vector& args) -{ - return substitution(model, args); -} - -string subst (const string& model, const string& a0) -{ - vector args(10); - args[0] = a0; - return substitution (model, args); -} - -string subst (const string& model, const string& a0, const string& a1) -{ - vector args(10); - args[0] = a0; - args[1] = a1; - - return substitution (model, args); -} - -string subst (const string& model, const string& a0, const string& a1, const string& a2) -{ - vector args(10); - - args[0] = a0; - args[1] = a1; - args[2] = a2; - - return substitution (model, args); -} - -string subst (const string& model, const string& a0, const string& a1, const string& a2, const string& a3) -{ - vector args(10); - - args[0] = a0; - args[1] = a1; - args[2] = a2; - args[3] = a3; - - return substitution (model, args); -} - -string subst (const string& model, const string& a0, const string& a1, const string& a2, const string& a3, const string& a4) -{ - vector args(10); - - args[0] = a0; - args[1] = a1; - args[2] = a2; - args[3] = a3; - args[4] = a4; - - return substitution (model, args); -} - -string subst (const string& model, const string& a0, const string& a1, const string& a2, const string& a3, const string& a4, const string& a5) -{ - vector args(10); - - args[0] = a0; - args[1] = a1; - args[2] = a2; - args[3] = a3; - args[4] = a4; - args[5] = a5; - - return substitution (model, args); -} - -string subst (const string& model, const string& a0, const string& a1, const string& a2, const string& a3, const string& a4, const string& a5, const string& a6) -{ - vector args(10); - - args[0] = a0; - args[1] = a1; - args[2] = a2; - args[3] = a3; - args[4] = a4; - args[5] = a5; - args[6] = a6; - - return substitution (model, args); -} - - -static string substitution (const string& model, const vector& args) -{ - char c; - int i=0, ilast = model.length()-1; - string result; - - while (i < ilast) { - c = model[i++]; - if (c != '$') { - result += c; - } else { - c = model[i++]; - if (c >= '0' && c <= '9') { - result += args[c - '0']; - } else { - result += c; - } - } - } - if (i == ilast) result += model[i]; - return result; -} - - -string T (char* c) { return string(c); } -string T (int n) { char c[64]; snprintf(c, 63, "%d",n); return string(c); } -string T (long n) { char c[64]; snprintf(c, 63, "%ld",n); return string(c); } - - -/** - * If needed add a trailing '.0' to the - * the textual representation of a floating point number - * to avoid confusions with an int. - */ -static void ensureFloat(char* c) -{ - bool isInt = true; - while (*c != 0) { - if ((*c == '.') | (*c == 'e')) isInt = false; - c++; - } - - if (isInt) { - *c++ = '.'; - *c++ = '0'; - *c = 0; - } -} - -/** - * Convert a double-precision float into a string. - * Adjusts the precision p to the needs. Add a trailing - * f if single-precision is required. - */ -string T(double n) -{ - char c[64]; - int p = 1; - if (isfinite(n)) { - do { snprintf(c, 32, "%.*g", p++, n); } while (atof(c) != n); - ensureFloat(c); - return string(c)+inumix(); - } else { - snprintf(c, 32, "%g", n); - return string(c); - } -} - - -/** - * remove quotes from a string - */ -string unquote(const string& s) -{ - assert(s.size() >= 2); - assert(s[0] == '"'); - assert(s[s.size()-1] == '"'); - return s.substr(1, s.size()-2); -} - - -/** - * add quotes to a string - */ -string quote(const string& s) -{ - string q("\""); - q += s; - q += "\""; - return q; -} - -string rmWhiteSpaces(const string& s) -{ - size_t i = s.find_first_not_of(" \t"); - size_t j = s.find_last_not_of(" \t"); - - if ( (i != string::npos) & (j != string::npos) ) { - return s.substr(i, 1+j-i); - } else { - return ""; - } -}