OpenASIP  2.0
EntryKeyData.hh
Go to the documentation of this file.
1 /*
2  Copyright (c) 2002-2009 Tampere University.
3 
4  This file is part of TTA-Based Codesign Environment (TCE).
5 
6  Permission is hereby granted, free of charge, to any person obtaining a
7  copy of this software and associated documentation files (the "Software"),
8  to deal in the Software without restriction, including without limitation
9  the rights to use, copy, modify, merge, publish, distribute, sublicense,
10  and/or sell copies of the Software, and to permit persons to whom the
11  Software is furnished to do so, subject to the following conditions:
12 
13  The above copyright notice and this permission notice shall be included in
14  all copies or substantial portions of the Software.
15 
16  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  DEALINGS IN THE SOFTWARE.
23  */
24 /**
25  * @file EntryKeyData.hh
26  *
27  * Declaration of EntryKeyData, EntryKeyDataInt, EntryKeyDataDouble,
28  * EntryKeyDataOperationSet, EntryKeyDataBool and EntryKeyDataParameterSet
29  * classes.
30  *
31  * @author Tommi Rantanen 2003 (tommi.rantanen-no.spam-tut.fi)
32  * @author Jari Mäntyneva 2005 (jari.mantyneva-no.spam-tut.fi)
33  * @note rating: red
34  */
35 
36 #ifndef TTA_ENTRY_KEY_DATA_HH
37 #define TTA_ENTRY_KEY_DATA_HH
38 
39 
40 #include <string>
41 #include <set>
42 #include <vector>
43 
44 #include "Exception.hh"
45 
46 namespace TTAMachine {
47  class FunctionUnit;
48 }
49 
50 /**
51  * Interface for the data of the entry field.
52  */
53 class EntryKeyData {
54 public:
55  EntryKeyData();
56  virtual ~EntryKeyData();
57  /// Copies data.
58  virtual EntryKeyData* copy() const = 0;
59 
60  /// Checks if two data are equal.
61  virtual bool isEqual(const EntryKeyData*) const = 0;
62  /// Checks if this data is greater than another data.
63  virtual bool isGreater(const EntryKeyData*) const = 0;
64  /// Checks if this data is smaller than another data.
65  virtual bool isSmaller(const EntryKeyData*) const = 0;
66  /// Returns the relative position between two data.
67  virtual double coefficient(
68  const EntryKeyData*, const EntryKeyData*) const = 0;
69  /// Converts the data into a string.
70  virtual std::string toString() const = 0;
71 
72 private:
73  /// Copying not allowed.
74  EntryKeyData(const EntryKeyData&);
75  /// Assignment not allowed.
77 };
78 
79 
80 /**
81  * Implementation for integer type of data.
82  */
83 class EntryKeyDataInt : public EntryKeyData {
84 public:
86  EntryKeyDataInt(int fieldData);
87  virtual ~EntryKeyDataInt();
88  EntryKeyData* copy() const;
89 
90  bool isEqual(const EntryKeyData* fieldData) const;
91  bool isGreater(const EntryKeyData* fieldData) const;
92  bool isSmaller(const EntryKeyData* fieldData) const;
93  double coefficient(
94  const EntryKeyData* data1, const EntryKeyData* data2) const;
95  std::string toString() const;
96 
97 private:
98  /// Integer data.
99  int data_;
100 
101  /// Copying not allowed.
103  /// Assignment not allowed.
105 };
106 
107 
108 /**
109  * Implementation for double type of data.
110  */
112 public:
114  EntryKeyDataDouble(double fieldData);
115  virtual ~EntryKeyDataDouble();
116  EntryKeyData* copy() const;
117 
118  bool isEqual(const EntryKeyData* fieldData) const;
119  bool isGreater(const EntryKeyData* fieldData) const;
120  bool isSmaller(const EntryKeyData* fieldData) const;
121  double coefficient(
122  const EntryKeyData* data1, const EntryKeyData* data2) const;
123  std::string toString() const;
124 
125 private:
126  /// Double data.
127  double data_;
128 
129  /// Copying not allowed.
131  /// Assignment not allowed.
133 };
134 
135 
136 /**
137  * Implementation for operation set type of data.
138  */
140 public:
142  EntryKeyDataOperationSet(std::set<std::string> fieldData);
143  virtual ~EntryKeyDataOperationSet();
144  EntryKeyData* copy() const;
145 
146  bool isEqual(const EntryKeyData* fieldData) const;
147  bool isGreater(const EntryKeyData* fieldData) const;
148  bool isSmaller(const EntryKeyData* fieldData) const;
149  double coefficient(
150  const EntryKeyData* data1, const EntryKeyData* data2) const;
151  std::string toString() const;
152 
153 private:
154  /// Operation set data.
155  std::set<std::string> data_;
156 
157  /// Copying not allowed.
159  /// Assignment not allowed.
161 };
162 
163 /**
164  * Implementation for boolean type of data.
165  */
167 public:
169  EntryKeyDataBool(bool fieldData);
170  virtual ~EntryKeyDataBool();
171  EntryKeyData* copy() const;
172 
173  bool isEqual(const EntryKeyData* fieldData) const;
174  bool isGreater(const EntryKeyData* fieldData) const;
175  bool isSmaller(const EntryKeyData* fieldData) const;
176  double coefficient(
177  const EntryKeyData* data1, const EntryKeyData* data2) const;
178  std::string toString() const;
179 
180 private:
181  /// Boolean data.
182  bool data_;
183 
184  /// Copying not allowed.
186  /// Assignment not allowed.
188 };
189 
190 /**
191  * Implementation for FunctionUnit type of data.
192  */
194 public:
197  virtual ~EntryKeyDataFunctionUnit();
198  EntryKeyData* copy() const;
199 
200  bool isEqual(const EntryKeyData* fieldData) const;
201  bool isGreater(const EntryKeyData* fieldData) const;
202  bool isSmaller(const EntryKeyData* fieldData) const;
203  double coefficient(
204  const EntryKeyData* data1, const EntryKeyData* data2) const;
205  std::string toString() const;
206 
207 private:
208  /// FunctionUnit* data.
210 
211  /// Copying not allowed.
213  /// Assignment not allowed.
215 };
216 
217 #endif
EntryKeyDataOperationSet::copy
EntryKeyData * copy() const
Definition: EntryKeyData.cc:384
EntryKeyDataDouble::isSmaller
bool isSmaller(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:298
EntryKeyDataDouble
Definition: EntryKeyData.hh:111
EntryKeyDataDouble::toString
std::string toString() const
Definition: EntryKeyData.cc:346
EntryKeyDataOperationSet
Definition: EntryKeyData.hh:139
EntryKeyData::operator=
EntryKeyData & operator=(const EntryKeyData &)
Assignment not allowed.
Exception.hh
EntryKeyDataFunctionUnit::coefficient
double coefficient(const EntryKeyData *data1, const EntryKeyData *data2) const
Definition: EntryKeyData.cc:696
EntryKeyDataDouble::isGreater
bool isGreater(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:277
EntryKeyDataFunctionUnit::data_
const TTAMachine::FunctionUnit * data_
FunctionUnit* data.
Definition: EntryKeyData.hh:209
EntryKeyDataFunctionUnit::copy
EntryKeyData * copy() const
Definition: EntryKeyData.cc:629
EntryKeyDataOperationSet::toString
std::string toString() const
Definition: EntryKeyData.cc:462
EntryKeyDataOperationSet::EntryKeyDataOperationSet
EntryKeyDataOperationSet()
Definition: EntryKeyData.cc:357
EntryKeyDataBool::data_
bool data_
Boolean data.
Definition: EntryKeyData.hh:182
EntryKeyDataInt::isGreater
bool isGreater(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:134
EntryKeyDataFunctionUnit::isEqual
bool isEqual(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:643
EntryKeyDataFunctionUnit::isSmaller
bool isSmaller(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:680
EntryKeyDataInt::isEqual
bool isEqual(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:113
EntryKeyDataOperationSet::~EntryKeyDataOperationSet
virtual ~EntryKeyDataOperationSet()
Definition: EntryKeyData.cc:372
EntryKeyDataInt::EntryKeyDataInt
EntryKeyDataInt()
Definition: EntryKeyData.cc:73
EntryKeyDataInt::~EntryKeyDataInt
virtual ~EntryKeyDataInt()
Definition: EntryKeyData.cc:87
EntryKeyDataBool::toString
std::string toString() const
Definition: EntryKeyData.cc:585
TTAMachine::FunctionUnit
Definition: FunctionUnit.hh:55
EntryKeyData
Definition: EntryKeyData.hh:53
EntryKeyData::coefficient
virtual double coefficient(const EntryKeyData *, const EntryKeyData *) const =0
Returns the relative position between two data.
EntryKeyDataFunctionUnit::EntryKeyDataFunctionUnit
EntryKeyDataFunctionUnit()
Definition: EntryKeyData.cc:602
EntryKeyDataDouble::~EntryKeyDataDouble
virtual ~EntryKeyDataDouble()
Definition: EntryKeyData.cc:230
EntryKeyData::EntryKeyData
EntryKeyData()
Definition: EntryKeyData.cc:57
EntryKeyDataInt::data_
int data_
Integer data.
Definition: EntryKeyData.hh:99
EntryKeyDataFunctionUnit::~EntryKeyDataFunctionUnit
virtual ~EntryKeyDataFunctionUnit()
Definition: EntryKeyData.cc:617
EntryKeyDataInt::isSmaller
bool isSmaller(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:155
EntryKeyDataInt::copy
EntryKeyData * copy() const
Definition: EntryKeyData.cc:99
EntryKeyData::isEqual
virtual bool isEqual(const EntryKeyData *) const =0
Checks if two data are equal.
EntryKeyDataFunctionUnit::operator=
EntryKeyDataFunctionUnit & operator=(const EntryKeyDataFunctionUnit &)
Assignment not allowed.
EntryKeyDataOperationSet::operator=
EntryKeyDataOperationSet & operator=(const EntryKeyDataOperationSet &)
Assignment not allowed.
EntryKeyDataBool::EntryKeyDataBool
EntryKeyDataBool()
Definition: EntryKeyData.cc:481
EntryKeyDataOperationSet::data_
std::set< std::string > data_
Operation set data.
Definition: EntryKeyData.hh:155
EntryKeyDataInt::coefficient
double coefficient(const EntryKeyData *data1, const EntryKeyData *data2) const
Definition: EntryKeyData.cc:179
EntryKeyDataBool::isEqual
bool isEqual(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:521
EntryKeyDataDouble::operator=
EntryKeyDataDouble & operator=(const EntryKeyDataDouble &)
Assignment not allowed.
EntryKeyDataOperationSet::isSmaller
bool isSmaller(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:434
EntryKeyData::copy
virtual EntryKeyData * copy() const =0
Copies data.
EntryKeyDataBool::operator=
EntryKeyDataBool & operator=(const EntryKeyDataBool &)
Assignment not allowed.
EntryKeyDataBool::isGreater
bool isGreater(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:542
EntryKeyDataFunctionUnit::toString
std::string toString() const
Definition: EntryKeyData.cc:709
EntryKeyDataOperationSet::isEqual
bool isEqual(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:398
EntryKeyDataFunctionUnit
Definition: EntryKeyData.hh:193
EntryKeyDataDouble::coefficient
double coefficient(const EntryKeyData *data1, const EntryKeyData *data2) const
Definition: EntryKeyData.cc:322
EntryKeyDataInt::toString
std::string toString() const
Definition: EntryKeyData.cc:204
EntryKeyDataBool::isSmaller
bool isSmaller(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:557
EntryKeyDataBool::copy
EntryKeyData * copy() const
Definition: EntryKeyData.cc:507
EntryKeyDataBool::~EntryKeyDataBool
virtual ~EntryKeyDataBool()
Definition: EntryKeyData.cc:495
EntryKeyData::isGreater
virtual bool isGreater(const EntryKeyData *) const =0
Checks if this data is greater than another data.
EntryKeyData::~EntryKeyData
virtual ~EntryKeyData()
Definition: EntryKeyData.cc:63
EntryKeyDataDouble::data_
double data_
Double data.
Definition: EntryKeyData.hh:127
EntryKeyDataInt
Definition: EntryKeyData.hh:83
EntryKeyDataBool::coefficient
double coefficient(const EntryKeyData *data1, const EntryKeyData *data2) const
Definition: EntryKeyData.cc:573
EntryKeyData::isSmaller
virtual bool isSmaller(const EntryKeyData *) const =0
Checks if this data is smaller than another data.
TTAMachine
Definition: Assembler.hh:48
EntryKeyDataBool
Definition: EntryKeyData.hh:166
EntryKeyDataDouble::copy
EntryKeyData * copy() const
Definition: EntryKeyData.cc:242
EntryKeyDataOperationSet::coefficient
double coefficient(const EntryKeyData *data1, const EntryKeyData *data2) const
Definition: EntryKeyData.cc:449
EntryKeyDataFunctionUnit::isGreater
bool isGreater(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:665
EntryKeyDataDouble::EntryKeyDataDouble
EntryKeyDataDouble()
Definition: EntryKeyData.cc:216
EntryKeyData::toString
virtual std::string toString() const =0
Converts the data into a string.
EntryKeyDataDouble::isEqual
bool isEqual(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:256
EntryKeyDataOperationSet::isGreater
bool isGreater(const EntryKeyData *fieldData) const
Definition: EntryKeyData.cc:419
EntryKeyDataInt::operator=
EntryKeyDataInt & operator=(const EntryKeyDataInt &)
Assignment not allowed.