/[ff3d]/ff3d/language/EmbededFunctions.hpp
ViewVC logotype

Diff of /ff3d/language/EmbededFunctions.hpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1.1.1 by delpinux, Mon Feb 17 16:32:53 2003 UTC revision 1.2 by delpinux, Sun May 4 18:09:01 2003 UTC
# Line 80  class ExpressionBinaryOperator Line 80  class ExpressionBinaryOperator
80  {  {
81  public:  public:
82    friend std::ostream& operator << (std::ostream& os,    friend std::ostream& operator << (std::ostream& os,
83                                      ExpressionBinaryOperator<B, TypeExpression>& bo)                                      const ExpressionBinaryOperator<B, TypeExpression>& bo)
84    {    {
85      bo.put(os);      bo.put(os);
86      return os;      return os;
# Line 91  public: Line 91  public:
91      return static_cast<B&>(*this);      return static_cast<B&>(*this);
92    }    }
93    
94    std::ostream& put(std::ostream& os)    const B& theBinaryOperator() const
95      {
96        return static_cast<const B&>(*this);
97      }
98    
99      std::ostream& put(std::ostream& os) const
100    {    {
101      theBinaryOperator().put(os);      theBinaryOperator().put(os);
102      return os;      return os;
103    }    }
104    
105    TypeExpression& operator()(const TypeExpression& a, const TypeExpression& b)    const TypeExpression operator()(const TypeExpression& a, const TypeExpression& b) const
106    {    {
107      return theBinaryOperator().apply(a,b);      return theBinaryOperator().apply(a,b);
108    }    }
109    
110    const real_t operator()(const real_t a, const real_t b)    const real_t operator()(const real_t a, const real_t b) const
111    {    {
112      return theBinaryOperator().apply(a,b);      return theBinaryOperator().apply(a,b);
113    }    }
# Line 121  class ExpressionPlus Line 126  class ExpressionPlus
126                                      TypeExpression>                                      TypeExpression>
127  {  {
128  public:  public:
129    std::ostream& put(std::ostream& os)    std::ostream& put(std::ostream& os) const
130    {    {
131      os << '+';      os << '+';
132      return os;      return os;
133    }    }
134    
135    TypeExpression& apply(const TypeExpression& a, const TypeExpression& b)    const TypeExpression apply(const TypeExpression& a, const TypeExpression& b) const
136    {    {
137      return  a+b;      return  a+b;
138    }    }
139    
140    const real_t apply(const real_t a, const real_t b)    const real_t apply(const real_t a, const real_t b) const
141    {    {
142      return  a+b;      return  a+b;
143    }    }
# Line 151  class ExpressionMinus Line 156  class ExpressionMinus
156                                      TypeExpression>                                      TypeExpression>
157  {  {
158  public:  public:
159    std::ostream& put(std::ostream& os)    std::ostream& put(std::ostream& os) const
160    {    {
161      os << '-';      os << '-';
162      return os;      return os;
163    }    }
164    
165    TypeExpression& apply(const TypeExpression& a, const TypeExpression& b)    const TypeExpression apply(const TypeExpression& a, const TypeExpression& b) const
166    {    {
167      return  a-b;      return  a-b;
168    }    }
169    
170    const real_t apply(const real_t a, const real_t b)    const real_t apply(const real_t a, const real_t b) const
171    {    {
172      return  a-b;      return  a-b;
173    }    }
# Line 181  class ExpressionMultiplies Line 186  class ExpressionMultiplies
186                                      TypeExpression>                                      TypeExpression>
187  {  {
188  public:  public:
189    std::ostream& put(std::ostream& os)    std::ostream& put(std::ostream& os) const
190    {    {
191      os << '*';      os << '*';
192      return os;      return os;
193    }    }
194    
195    TypeExpression& apply(const TypeExpression& a, const TypeExpression& b)    const TypeExpression apply(const TypeExpression& a, const TypeExpression& b) const
196    {    {
197      return  a*b;      return  a*b;
198    }    }
199    
200    const real_t apply(const real_t a, const real_t b)    const real_t apply(const real_t a, const real_t b) const
201    {    {
202      return  a*b;      return  a*b;
203    }    }
# Line 211  class ExpressionDivides Line 216  class ExpressionDivides
216                                      TypeExpression>                                      TypeExpression>
217  {  {
218  public:  public:
219    std::ostream& put(std::ostream& os)    std::ostream& put(std::ostream& os) const
220    {    {
221      os << '/';      os << '/';
222      return os;      return os;
223    }    }
224    
225    TypeExpression& apply(const TypeExpression& a, const TypeExpression& b)    const TypeExpression apply(const TypeExpression& a, const TypeExpression& b) const
226    {    {
227      return  a/b;      return  a/b;
228    }    }
229    
230    const real_t apply(const real_t a, const real_t b)    const real_t apply(const real_t a, const real_t b) const
231    {    {
232      return  a/b;      return  a/b;
233    }    }
# Line 241  class ExpressionPower Line 246  class ExpressionPower
246                                      TypeExpression>                                      TypeExpression>
247  {  {
248  public:  public:
249    std::ostream& put(std::ostream& os)    std::ostream& put(std::ostream& os) const
250    {    {
251      os << '^';      os << '^';
252      return os;      return os;
253    }    }
254    
255    TypeExpression& apply(const TypeExpression& a, const TypeExpression& b)    const TypeExpression apply(const TypeExpression& a, const TypeExpression& b) const
256    {    {
257      return  std::pow(a,b);      return std::pow(a,b);
258    }    }
259    
260    const real_t apply(const real_t a, const real_t b)    const real_t apply(const real_t a, const real_t b) const
261    {    {
262      return  std::pow(a,b);      return std::pow(a,b);
263    }    }
264  };  };
265    
# Line 274  class ExpressionUnaryOperator Line 279  class ExpressionUnaryOperator
279  {  {
280  public:  public:
281    friend std::ostream& operator << (std::ostream& os,    friend std::ostream& operator << (std::ostream& os,
282                                 ExpressionUnaryOperator<U, TypeExpression>& uo)                                      const ExpressionUnaryOperator<U, TypeExpression>& uo)
283    {    {
284      uo.put(os);      uo.put(os);
285      return os;      return os;
# Line 285  public: Line 290  public:
290      return static_cast<U&>(*this);      return static_cast<U&>(*this);
291    }    }
292    
293    std::ostream& put(std::ostream& os)    const U& theUnaryOperator() const
294      {
295        return static_cast<const U&>(*this);
296      }
297    
298      std::ostream& put(std::ostream& os) const
299    {    {
300      theUnaryOperator().put(os);      theUnaryOperator().put(os);
301      return os;      return os;
302    }    }
303    
304    TypeExpression& operator()(const TypeExpression& a)    const TypeExpression operator()(const TypeExpression& a) const
305    {    {
306      return theUnaryOperator().apply(a,b);      return theUnaryOperator().apply(a,b);
307    }    }
308    
309    real_t operator()(const real_t a)    real_t operator()(const real_t a) const
310    {    {
311      return theUnaryOperator().apply(a);      return theUnaryOperator().apply(a);
312    }    }
# Line 316  class ExpressionUnaryMinus Line 326  class ExpressionUnaryMinus
326                                     TypeExpression>                                     TypeExpression>
327  {  {
328  public:  public:
329    std::ostream& put(std::ostream& os)    std::ostream& put(std::ostream& os) const
330    {    {
331      os << '-';      os << '-';
332      return os;      return os;
333    }    }
334    
335    TypeExpression& apply(const TypeExpression& a)    const TypeExpression apply(const TypeExpression& a) const
336    {    {
337      return  -a;      return -a;
338    }    }
339    
340    const real_t apply(const real_t a)    const real_t apply(const real_t a) const
341    {    {
342      return  -a;      return -a;
343    }    }
344  };  };
345    
# Line 379  class ExpressionStdFunction Line 389  class ExpressionStdFunction
389                                     TypeExpression>                                     TypeExpression>
390  {  {
391  public:  public:
392    std::ostream& put(std::ostream& os)    std::ostream& put(std::ostream& os) const
393    {    {
394      return functionName<F>(os);      return functionName<F>(os);
395    }    }
396    
397    TypeExpression& apply(const TypeExpression& a)    const TypeExpression apply(const TypeExpression& a) const
398    {    {
399      return  F(a);      return F(a);
400    }    }
401    
402    const real_t apply(const real_t a)    const real_t apply(const real_t a) const
403    {    {
404      return  F(a);      return F(a);
405    }    }
406  };  };
407    

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26