summaryrefslogtreecommitdiff
path: root/utils/regtools/qeditor/analyser.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/regtools/qeditor/analyser.h')
-rw-r--r--utils/regtools/qeditor/analyser.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/utils/regtools/qeditor/analyser.h b/utils/regtools/qeditor/analyser.h
new file mode 100644
index 0000000000..33094574c1
--- /dev/null
+++ b/utils/regtools/qeditor/analyser.h
@@ -0,0 +1,64 @@
1#ifndef _ANALYSER_H_
2#define _ANALYSER_H_
3
4#include <QObject>
5#include <QVector>
6#include <QString>
7#include "backend.h"
8
9class Analyser : public QObject
10{
11 Q_OBJECT
12public:
13 Analyser(const soc_t& soc, IoBackend *backend);
14 virtual ~Analyser();
15 virtual QWidget *GetWidget() = 0;
16
17protected:
18 soc_t m_soc;
19 IoBackend *m_io_backend;
20};
21
22class AnalyserFactory
23{
24public:
25 AnalyserFactory(bool _register);
26 virtual ~AnalyserFactory();
27
28 virtual QString GetName() = 0;
29 virtual bool SupportSoc(const QString& soc_name) = 0;
30 // return NULL of soc is not handled by the analyser
31 virtual Analyser *Create(const soc_t& soc, IoBackend *backend) = 0;
32private:
33 QString m_name;
34
35public:
36 static QStringList GetAnalysersForSoc(const QString& soc_name);
37 static AnalyserFactory *GetAnalyserByName(const QString& name);
38 static void RegisterAnalyser(AnalyserFactory *factory);
39
40private:
41 static QVector< AnalyserFactory * > m_factories;
42};
43
44template< typename T >
45class TmplAnalyserFactory : public AnalyserFactory
46{
47public:
48 TmplAnalyserFactory(bool _register, const QString& name) :AnalyserFactory(_register) { m_name = name; }
49 virtual ~TmplAnalyserFactory() {}
50
51 virtual QString GetName() { return m_name; }
52 virtual bool SupportSoc(const QString& soc_name) { return T::SupportSoc(soc_name); }
53 // return NULL of soc is not handled by the analyser
54 virtual T *Create(const soc_t& soc, IoBackend *backend)
55 {
56 if(!T::SupportSoc(soc.name.c_str()))
57 return 0;
58 return new T(soc, backend);
59 }
60private:
61 QString m_name;
62};
63
64#endif /* _ANALYSER_H_ */