source: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Stat.h @ 74

Last change on this file since 74 was 74, checked in by rosiere, 16 years ago

New component : Read_unit (instance between a write queue and a optionnal execute_queue)

  • Property svn:executable set to *
File size: 3.1 KB
Line 
1#ifdef STATISTICS
2#ifndef morpheo_behavioural_Stat_h
3#define morpheo_behavioural_Stat_h
4
5#include "Behavioural/include/Parameters_Statistics.h"
6#include "Behavioural/include/Stat_type.h"
7#include "Behavioural/include/Stat_binary_tree.h"
8#include "Behavioural/include/XML.h"
9#include "Common/include/ErrorMorpheo.h"
10#include "Common/include/Message.h"
11
12#ifdef SYSTEMC
13#include "systemc.h"
14#endif
15
16#include <stdint.h>
17#include <string>
18#include <map>
19#include <list>
20#include <iostream>
21
22namespace morpheo {
23  namespace behavioural {
24
25    typedef double cycle_t;
26 
27    typedef struct 
28    {
29      counter_type_t type;
30      counter_t *    counter;
31      std::string    name;
32      std::string    unit;
33      std::string    description;
34      std::list<counter_t> save_counter;
35    } var_t;
36 
37    typedef struct 
38    {
39      bool               each_cycle;
40      counter_t        * variable;
41      Stat_binary_tree * expression;
42    } expr_t;
43
44    class Stat
45    {
46      const std::string              _name_instance;
47      const std::string              _name_component;
48      const cycle_t                  _nb_cycle_before_begin;
49      const cycle_t                  _period;
50      const bool                     _save_periodic;
51      // Tableau des variables
52      std::map<std::string, var_t> * _list_operand;
53      // Liste chaîné des expressions
54      std::list<expr_t>            * _list_expr;
55
56      counter_t                    * _cycle;
57
58      std::list<Stat *>            * _list_stat;
59
60      bool                           _generate_file;
61
62    public :                     Stat            (std::string name_instance,
63                                                  std::string name_component,
64                                                  Parameters_Statistics * param);
65
66    public :                     Stat            (std::string name_instance,
67                                                  std::string name_component,
68                                                  cycle_t nb_cycle_before_begin=0,
69                                                  cycle_t period=0);
70    public :                    ~Stat            (void);
71     
72    public  : counter_t *        create_variable (std::string varname);
73    public  : counter_t *        create_counter  (std::string varname,
74                                                  std::string unit,
75                                                  std::string description);
76    private : counter_t *        alloc_operand   (counter_type_t type,
77                                                  std::string varname,
78                                                  std::string unit,
79                                                  std::string description);
80    public  : void               create_expr     (std::string varname,
81                                                  std::string expr,
82                                                  bool each_cycle=true);
83
84    private : Stat_binary_tree * string2tree     (std::string expr);
85
86    public  : void               end_cycle       (void);
87    private : void               end_simulation  (void);
88    private : void               test_and_save   (bool force_save=false);
89    private : void               eval_exprs      (bool only_each_cycle=true);
90    private : void               eval_expr       (expr_t expr);
91     
92    private : bool               is_valid_var    (std::string expr);
93
94    private : void               generate_file   (void);
95
96    public  : void               add_stat        (Stat * stat);
97
98    public  : std::string        print           (uint32_t depth=0);
99    };
100
101  };
102};
103#endif
104#endif
Note: See TracBrowser for help on using the repository browser.