FAUST compiler  0.9.9.6b8
Functions | Variables
Text.cpp File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Text.hh"
#include "compatibility.hh"
#include <string>
#include <vector>
#include <iostream>
#include <sstream>
#include <assert.h>
#include "floats.hh"
Include dependency graph for Text.cpp:

Go to the source code of this file.

Functions

static string substitution (const string &model, const vector< string > &args)
 
string subst (const string &model, const vector< string > &args)
 Text substitution. More...
 
string subst (const string &model, const string &a0)
 
string subst (const string &model, const string &a0, const string &a1)
 
string subst (const string &model, const string &a0, const string &a1, const string &a2)
 
string subst (const string &model, const string &a0, const string &a1, const string &a2, const string &a3)
 
string subst (const string &model, const string &a0, const string &a1, const string &a2, const string &a3, const string &a4)
 
string subst (const string &model, const string &a0, const string &a1, const string &a2, const string &a3, const string &a4, const string &a5)
 
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)
 
string T (char *c)
 
string T (int n)
 
string T (long n)
 
static void ensureFloat (char *c)
 If needed add a trailing '.0' to the the textual representation of a floating point number to avoid confusions with an int. More...
 
string T (double n)
 Convert a double-precision float into a string. More...
 
string unquote (const string &s)
 remove quotes from a string More...
 
string quote (const string &s)
 add quotes to a string More...
 
string rmWhiteSpaces (const string &s)
 

Variables

bool gInternDoubleSwitch
 

Function Documentation

static void ensureFloat ( char *  c)
static

If needed add a trailing '.0' to the the textual representation of a floating point number to avoid confusions with an int.

Definition at line 168 of file Text.cpp.

References isInt().

Referenced by T().

169 {
170  bool isInt = true;
171  while (*c != 0) {
172  if ((*c == '.') | (*c == 'e')) isInt = false;
173  c++;
174  }
175 
176  if (isInt) {
177  *c++ = '.';
178  *c++ = '0';
179  *c = 0;
180  }
181 }
bool isInt(const Node &n)
Definition: node.hh:126

Here is the call graph for this function:

Here is the caller graph for this function:

string quote ( const string &  s)

add quotes to a string

Definition at line 214 of file Text.cpp.

215 {
216  string q("\"");
217  q += s;
218  q += "\"";
219  return q;
220 }
string rmWhiteSpaces ( const string &  s)

Definition at line 222 of file Text.cpp.

Referenced by extractMetadata().

223 {
224  size_t i = s.find_first_not_of(" \t");
225  size_t j = s.find_last_not_of(" \t");
226 
227  if ( (i != string::npos) & (j != string::npos) ) {
228  return s.substr(i, 1+j-i);
229  } else {
230  return "";
231  }
232 }

Here is the caller graph for this function:

string subst ( const string &  model,
const vector< string > &  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))

Definition at line 47 of file Text.cpp.

References substitution().

Referenced by Description::addGroup(), Description::addWidget(), apply_pattern_matcher(), Klass::buildTasksList(), calcNumberedName(), DocCompiler::compileLateq(), SchedulerCompiler::compileMultiSignal(), VectorCompiler::compileMultiSignal(), ScalarCompiler::compileMultiSignal(), ScalarCompiler::compileSingleSignal(), copyFaustSources(), ScalarCompiler::declareWaveform(), SchedulerCompiler::dlineLoop(), VectorCompiler::dlineLoop(), ScalarCompiler::generateBinOp(), DocCompiler::generateBinOp(), ScalarCompiler::generateButton(), VectorCompiler::generateCacheCode(), ScalarCompiler::generateCheckbox(), AcosPrim::generateCode(), AsinPrim::generateCode(), AtanPrim::generateCode(), SinPrim::generateCode(), TanPrim::generateCode(), CosPrim::generateCode(), ExpPrim::generateCode(), FloorPrim::generateCode(), FmodPrim::generateCode(), CeilPrim::generateCode(), Atan2Prim::generateCode(), RemainderPrim::generateCode(), LogPrim::generateCode(), Log10Prim::generateCode(), PowPrim::generateCode(), RintPrim::generateCode(), SqrtPrim::generateCode(), AbsPrim::generateCode(), MaxPrim::generateCode(), MinPrim::generateCode(), ScalarCompiler::generateDelayLine(), DocCompiler::generateDelayLine(), VectorCompiler::generateDelayVec(), ScalarCompiler::generateDelayVecNoTemp(), DocCompiler::generateDelayVecNoTemp(), DocCompiler::generateDocAccessTbl(), DocCompiler::generateDocConstantTbl(), DocCompiler::generateDocWriteTbl(), VectorCompiler::generateFixDelay(), ScalarCompiler::generateFixDelay(), DocCompiler::generateFixDelay(), ScalarCompiler::generateFloatCast(), DocCompiler::generateFloatCast(), ScalarCompiler::generateHBargraph(), ScalarCompiler::generateHSlider(), ScalarCompiler::generateInput(), DocCompiler::generateInput(), ScalarCompiler::generateIntCast(), DocCompiler::generateIntCast(), ScalarCompiler::generateIota(), DocCompiler::generateIota(), SinPrim::generateLateq(), AtanPrim::generateLateq(), AcosPrim::generateLateq(), AsinPrim::generateLateq(), TanPrim::generateLateq(), CosPrim::generateLateq(), Atan2Prim::generateLateq(), FloorPrim::generateLateq(), FmodPrim::generateLateq(), CeilPrim::generateLateq(), ExpPrim::generateLateq(), RemainderPrim::generateLateq(), LogPrim::generateLateq(), SqrtPrim::generateLateq(), Log10Prim::generateLateq(), RintPrim::generateLateq(), PowPrim::generateLateq(), AbsPrim::generateLateq(), MaxPrim::generateLateq(), MinPrim::generateLateq(), ScalarCompiler::generateNumEntry(), ScalarCompiler::generateOutput(), DocCompiler::generateOutput(), ScalarCompiler::generatePrefix(), DocCompiler::generatePrefix(), ScalarCompiler::generateRDTbl(), DocCompiler::generateRecProj(), ScalarCompiler::generateSelect2(), DocCompiler::generateSelect2(), ScalarCompiler::generateSelect3(), DocCompiler::generateSelect3(), ScalarCompiler::generateSigGen(), ScalarCompiler::generateStaticSigGen(), ScalarCompiler::generateStaticTable(), ScalarCompiler::generateTable(), Compiler::generateUserInterfaceTree(), VectorCompiler::generateVariableStore(), ScalarCompiler::generateVariableStore(), DocCompiler::generateVariableStore(), ScalarCompiler::generateVBargraph(), ScalarCompiler::generateVSlider(), VectorCompiler::generateWaveform(), ScalarCompiler::generateWaveform(), Compiler::generateWidgetCode(), Compiler::generateWidgetMacro(), ScalarCompiler::generateWRTbl(), ScalarCompiler::getFreshID(), DocCompiler::getFreshID(), ScalarCompiler::getTypedNames(), DocCompiler::getTypedNames(), main(), ScalarCompiler::prepare(), Klass::printComputeMethodOpenMP(), Klass::printComputeMethodScalar(), Klass::printComputeMethodScheduler(), Klass::printComputeMethodVectorFaster(), Klass::printComputeMethodVectorSimple(), printDoc(), printDocDgm(), SigFloatGenKlass::println(), Klass::printOneLoopScheduler(), setSigListNickName(), SchedulerCompiler::vectorLoop(), and VectorCompiler::vectorLoop().

48 {
49  return substitution(model, args);
50 }
static string substitution(const string &model, const vector< string > &args)
Definition: Text.cpp:134

Here is the call graph for this function:

string subst ( const string &  model,
const string &  a0 
)

Definition at line 52 of file Text.cpp.

References substitution().

53 {
54  vector<string> args(10);
55  args[0] = a0;
56  return substitution (model, args);
57 }
static string substitution(const string &model, const vector< string > &args)
Definition: Text.cpp:134

Here is the call graph for this function:

string subst ( const string &  model,
const string &  a0,
const string &  a1 
)

Definition at line 59 of file Text.cpp.

References substitution().

60 {
61  vector<string> args(10);
62  args[0] = a0;
63  args[1] = a1;
64 
65  return substitution (model, args);
66 }
static string substitution(const string &model, const vector< string > &args)
Definition: Text.cpp:134

Here is the call graph for this function:

string subst ( const string &  model,
const string &  a0,
const string &  a1,
const string &  a2 
)

Definition at line 68 of file Text.cpp.

References substitution().

69 {
70  vector<string> args(10);
71 
72  args[0] = a0;
73  args[1] = a1;
74  args[2] = a2;
75 
76  return substitution (model, args);
77 }
static string substitution(const string &model, const vector< string > &args)
Definition: Text.cpp:134

Here is the call graph for this function:

string subst ( const string &  model,
const string &  a0,
const string &  a1,
const string &  a2,
const string &  a3 
)

Definition at line 79 of file Text.cpp.

References substitution().

80 {
81  vector<string> args(10);
82 
83  args[0] = a0;
84  args[1] = a1;
85  args[2] = a2;
86  args[3] = a3;
87 
88  return substitution (model, args);
89 }
static string substitution(const string &model, const vector< string > &args)
Definition: Text.cpp:134

Here is the call graph for this function:

string subst ( const string &  model,
const string &  a0,
const string &  a1,
const string &  a2,
const string &  a3,
const string &  a4 
)

Definition at line 91 of file Text.cpp.

References substitution().

92 {
93  vector<string> args(10);
94 
95  args[0] = a0;
96  args[1] = a1;
97  args[2] = a2;
98  args[3] = a3;
99  args[4] = a4;
100 
101  return substitution (model, args);
102 }
static string substitution(const string &model, const vector< string > &args)
Definition: Text.cpp:134

Here is the call graph for this function:

string subst ( const string &  model,
const string &  a0,
const string &  a1,
const string &  a2,
const string &  a3,
const string &  a4,
const string &  a5 
)

Definition at line 104 of file Text.cpp.

References substitution().

105 {
106  vector<string> args(10);
107 
108  args[0] = a0;
109  args[1] = a1;
110  args[2] = a2;
111  args[3] = a3;
112  args[4] = a4;
113  args[5] = a5;
114 
115  return substitution (model, args);
116 }
static string substitution(const string &model, const vector< string > &args)
Definition: Text.cpp:134

Here is the call graph for this function:

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 
)

Definition at line 118 of file Text.cpp.

References substitution().

119 {
120  vector<string> args(10);
121 
122  args[0] = a0;
123  args[1] = a1;
124  args[2] = a2;
125  args[3] = a3;
126  args[4] = a4;
127  args[5] = a5;
128  args[6] = a6;
129 
130  return substitution (model, args);
131 }
static string substitution(const string &model, const vector< string > &args)
Definition: Text.cpp:134

Here is the call graph for this function:

static string substitution ( const string &  model,
const vector< string > &  args 
)
static

Definition at line 134 of file Text.cpp.

Referenced by subst().

135 {
136  char c;
137  int i=0, ilast = (int)model.length()-1;
138  string result;
139 
140  while (i < ilast) {
141  c = model[i++];
142  if (c != '$') {
143  result += c;
144  } else {
145  c = model[i++];
146  if (c >= '0' && c <= '9') {
147  result += args[c - '0'];
148  } else {
149  result += c;
150  }
151  }
152  }
153  if (i == ilast) result += model[i];
154  return result;
155 }

Here is the caller graph for this function:

string T ( char *  c)
string T ( int  n)

Definition at line 159 of file Text.cpp.

159 { char c[64]; snprintf(c, 63, "%d",n); return string(c); }
string T ( long  n)

Definition at line 160 of file Text.cpp.

160 { char c[64]; snprintf(c, 63, "%ld",n); return string(c); }
string T ( double  n)

Convert a double-precision float into a string.

Adjusts the precision p to the needs. Add a trailing f if single-precision is required.

Definition at line 188 of file Text.cpp.

References ensureFloat(), and inumix().

189 {
190  char c[64];
191  int p = 1;
192 
193  do { snprintf(c, 32, "%.*g", p++, n); } while (atof(c) != n);
194  ensureFloat(c);
195  return string(c)+inumix();
196 }
static void ensureFloat(char *c)
If needed add a trailing '.0' to the the textual representation of a floating point number to avoid c...
Definition: Text.cpp:168
const char * inumix()
suffix for numeric constants
Definition: floats.cpp:44

Here is the call graph for this function:

string unquote ( const string &  s)

remove quotes from a string

Definition at line 202 of file Text.cpp.

203 {
204  assert(s.size() >= 2);
205  assert(s[0] == '"');
206  assert(s[s.size()-1] == '"');
207  return s.substr(1, s.size()-2);
208 }

Variable Documentation

bool gInternDoubleSwitch