|
Shinya Kitaoka |
810553 |
#pragma once
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef TPROPERTYTYPE_H
|
|
Toshihiro Shimizu |
890ddd |
#define TPROPERTYTYPE_H
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include <vector></vector>
|
|
Toshihiro Shimizu |
890ddd |
using namespace std;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <typename t=""></typename>
|
|
Shinya Kitaoka |
120a6e |
class TEnumerationT {
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
typedef T value_type;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TEnumerationT() {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void addItem(const string &id, T item) {
|
|
Shinya Kitaoka |
120a6e |
m_items.push_back(std::make_pair(id, item));
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
int getItemCount() const { return m_items.size(); }
|
|
Shinya Kitaoka |
120a6e |
void getItem(unsigned int i, string &idstring, T &value) const {
|
|
Shinya Kitaoka |
120a6e |
assert(i < m_items.size());
|
|
Shinya Kitaoka |
120a6e |
ItemData vp = m_items[i];
|
|
Shinya Kitaoka |
120a6e |
idstring = vp.first;
|
|
Shinya Kitaoka |
120a6e |
value = vp.second;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
T getItem(unsigned int i) const {
|
|
Shinya Kitaoka |
120a6e |
assert(i < m_items.size());
|
|
Shinya Kitaoka |
120a6e |
ItemData vp = m_items[i];
|
|
Shinya Kitaoka |
120a6e |
return vp.second;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
bool isValid(T item) const {
|
|
Shinya Kitaoka |
120a6e |
typename vector<itemdata>::const_iterator it =</itemdata>
|
|
Shinya Kitaoka |
120a6e |
find_if(m_items.begin(), m_items.end(), MatchesItem(item));
|
|
Shinya Kitaoka |
120a6e |
return it != m_items.end();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
120a6e |
typedef pair<string, t=""> ItemData;</string,>
|
|
Shinya Kitaoka |
120a6e |
vector<itemdata> m_items;</itemdata>
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
class MatchesItem {
|
|
Shinya Kitaoka |
120a6e |
public:
|
|
Shinya Kitaoka |
120a6e |
MatchesItem(const T &item) : m_item(item) {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
bool operator()(const ItemData &itemData) {
|
|
Shinya Kitaoka |
120a6e |
return itemData.second == m_item;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
private:
|
|
Shinya Kitaoka |
120a6e |
T m_item;
|
|
Shinya Kitaoka |
120a6e |
};
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
typedef TEnumerationT<int> TIntEnumeration;</int>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <typename t=""></typename>
|
|
Shinya Kitaoka |
120a6e |
class TValueRangeT {
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
typedef T value_type;
|
|
Shinya Kitaoka |
120a6e |
TValueRangeT() : m_min(-1), m_max(1) {}
|
|
Shinya Kitaoka |
120a6e |
TValueRangeT(T min, T max) : m_min(min), m_max(max) {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void getRange(T &min, T &max) const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
bool isValid(T value) const { return m_min <= value && value <= m_max; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
120a6e |
T m_min, m_max;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
typedef TValueRangeT<int> IntValueRange;</int>
|
|
Toshihiro Shimizu |
890ddd |
typedef TValueRangeT<double> DoubleValueRange;</double>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#endif
|