source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Parameter_definition_test.cpp @ 128

Last change on this file since 128 was 128, checked in by rosiere, 15 years ago

1) Correct bug in link two signal
2) Fix error detected with valgrind
3) modif distexe script

  • Property svn:keywords set to Id
File size: 1.7 KB
Line 
1/*
2 * $Id: Parameter_definition_test.cpp 128 2009-06-26 08:43:23Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Configuration/include/Parameter_definition.h"
9#include "Behavioural/include/Stat_binary_tree.h"
10#include "Common/include/FromString.h"
11
12namespace morpheo {
13namespace behavioural {
14namespace configuration {
15
16#undef  FUNCTION
17#define FUNCTION "Parameter_definition::test"
18  void Parameter_definition::test (std::string x)
19  {
20    log_begin(Configuration,FUNCTION);
21
22    std::map<std::string, counter_t*> * operand = new std::map<std::string, counter_t*>;
23
24    std::string expr = _step+" "+_name;
25    std::string expr_str = _name + "(n+1) = "+_step+" "+_name+"(n)";
26
27    counter_t value;
28    (*operand)[_name] = &value;
29
30    Stat_binary_tree * tree;
31    try
32      {
33        tree = new Stat_binary_tree(expr,operand);
34      }
35    catch (morpheo::ErrorMorpheo & error)
36      {
37        throw (ERRORMORPHEO (FUNCTION,toString(_("step make an invalid infix expression : \"%s\"\n"),expr_str.c_str())));
38      }
39   
40    counter_t min = fromString<counter_t>(_min);
41    counter_t max = fromString<counter_t>(_max);
42
43    value = min;
44    while ((value != fromString<counter_t>(x)) and (value <= max))
45      {
46        counter_t tmp = tree->eval();
47
48        // warning, can have infinite loop
49        value = (tmp == value)?(max+1):tmp; 
50      }
51
52    if (value > max)
53      {
54        throw (ERRORMORPHEO (FUNCTION,toString(_("With the expression \"%s\" and \"%s(0) = %s\" and value between [%s:%s], \"%s(n) = %s\" is not a valid value.\n"),expr_str.c_str(),_name.c_str(),_min.c_str(),_min.c_str(),_max.c_str(),_name.c_str(),x.c_str())));
55      }
56   
57    delete tree;
58    delete operand;
59
60    log_end(Configuration,FUNCTION);
61  };
62
63}; // end namespace configuration
64}; // end namespace behavioural
65}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.