1
#ifndef _KSUDOKU_GRAPH_H_
2
#define _KSUDOKU_GRAPH_H_
9
class ConstraintHelper;
13
class Ruleset : public QObject {
15
friend class Constraint;
16
friend class ConstraintHelper;
23
const QVector<const ConstraintHelper*>& helpers() const {
27
QVector<Storage*> storages() const;
28
Storage *storage(int id);
29
const Storage *storage(int id) const;
30
int storageId(const QByteArray &name) const;
31
int regStorage(const QByteArray &name, Storage *storage);
33
void addItem(Item *item);
34
QVector<Item*> itemList() const { return m_items; }
36
void addHelper(ConstraintHelper* helper);
39
QVector<const ConstraintHelper*> m_helpers;
40
QVector<Item*> m_items;
41
QHash<QByteArray, int> m_storageIds;
42
QVector<Storage*> m_storages;
46
T *storage(Ruleset *rules) {
47
int storageId = rules->storageId(T::name());
49
return static_cast<T*>(rules->storage(storageId));
53
rules->regStorage(T::name(), storage);
58
T *storage(const Ruleset *rules) {
59
int storageId = rules->storageId(T::name());
61
return static_cast<T*>(rules->storage(storageId));