source: branches/RWT/soft/validation/scripts/TestGenerator/Variable.hpp @ 1008

Last change on this file since 1008 was 843, checked in by devigne, 10 years ago

RWT Commit : Add soft directory.
Soft directory contains scripts used to validate the RWT protocol

File size: 1.6 KB
Line 
1
2#ifndef _variable_hpp_
3#define _variable_hpp_
4
5#include "assert.h"
6
7class Variable {
8
9   int proc; // processor to which the variable belongs, -1 if public (most common case)
10   int operation; // 0 : RW ; 1 : RO ; 2 : WO
11   bool uncached; // Requests on this variable are done uncached
12   bool in_trans_line; // if private variable, specifies whether the variable is located in a line containing transactional variables
13
14   public:
15
16   Variable(int proc, int operation, bool uncached, bool in_trans_line = true){
17      assert(proc >= -1);
18      assert(operation == 0 || operation == 1 || operation == 2);
19      assert(in_trans_line || proc != -1);
20      this->proc = proc;
21      this->operation = operation;
22      this->uncached = uncached;
23      this-> in_trans_line = in_trans_line;
24   }
25
26   Variable(){
27      this->proc = -1;
28      this->operation = 0;
29      this->uncached = false;
30      this->in_trans_line = true;
31   }
32
33   int getProc(){
34      return proc;
35   }
36
37   bool isRW(){
38      return (operation == 0);
39   }
40
41   bool isRO(){
42      return (operation == 1);
43   }
44
45   bool isWO(){
46      return (operation == 2);
47   }
48
49   bool isUnc(){
50      return uncached;
51   }
52
53   void setRO(){
54      operation = 1;
55   }
56
57   void setWO(){
58      operation = 2;
59   }
60
61   void setROorWO(){
62      int n = randint(1,2);
63      if (n == 1){
64         operation = 1;
65      }
66      else {
67         operation = 2;
68      }
69   }
70
71   void setPrivate(int proc_id){
72      proc = proc_id;
73   }
74
75   void setUncached(){
76      uncached = true;
77   }
78
79   bool isPublic(){
80      return (proc == -1);
81   }
82
83   bool isPrivate(int proc_id){
84      return (proc == proc_id);
85   }
86
87};
88
89#endif
Note: See TracBrowser for help on using the repository browser.