source: pacpusframework/branches/2.0-beta1/include/Pacpus/kernel/PacpusEvent.h@ 146

Last change on this file since 146 was 146, checked in by Marek Kurdej, 11 years ago

Update: refactoring in XmlConfigFile.
Added: attributes 'prefix', 'postfix', 'extension' in <parameters>.
Example: <parameters prefix="" postfix="_d" extension="dll">

  • Property svn:executable set to *
File size: 2.4 KB
RevLine 
[89]1#ifndef PACPUS_EVENT_H
2#define PACPUS_EVENT_H
3
4#include <QEvent>
5#include "Pacpus/kernel/road_time.h"
[94]6#include <Pacpus/kernel/pacpus.h>
[96]7#include <QDataStream>
[89]8
9namespace pacpus {
10
[110]11// registerEventType // TODO
12
[89]13class GenericData {
14public:
15 GenericData(char* data, size_t size) {
[110]16 data_ = (char*)malloc(size);
17 memcpy(data_,data,size);
[89]18 _size = size;}
19
[110]20 ~GenericData() {free(data_);}
[89]21
[110]22 char * data() { return data_;}
[89]23 size_t size() {return _size;}
24
25private:
[110]26char* data_;
[89]27size_t _size;
28};
29
30enum PacpusEventType {
31 TYPED_EVENT = 1000,
32 GENERIC_EVENT = 2000,
33 GENERIC_EVENT2 = 2002,
34 GENERIC_EVENT3 = 2003,
35 CONFIG_EVENT = 3000
36};
37
[131]38class PACPUSLIB_API PacpusEvent
39 : public QEvent
[89]40{
[131]41 Q_GADGET // permits to use signals and slots (using Q_SIGNAL, Q_SLOT) without inheriting from QObject
42
[89]43public:
[146]44 PacpusEvent(PacpusEventType type, road_time_t t = road_time(), road_timerange_t tr = 0)
45 : QEvent(QEvent::Type(type))
46 , t_(t)
47 , tr_(tr)
48 {}
49 virtual ~PacpusEvent()
50 {}
[96]51
[146]52 // NOTE virtual pure ??
53 virtual QDataStream& streamOut(QDataStream& out)
54 {
55 return out;
56 }
57 virtual QDataStream& streamIn(QDataStream& in)
58 {
59 return in;
60 }
[96]61
[146]62protected: // TODO make protected
[96]63 road_time_t t_;
64 road_timerange_t tr_;
[89]65};
66
67template<class T>
68class PacpusTypedEvent : public PacpusEvent
69{
70public:
[110]71 PacpusTypedEvent(PacpusEventType type, T data = T(), road_time_t t = road_time(), road_timerange_t tr = 0 ):PacpusEvent(type, t, tr),data_(data) {}
[89]72 ~PacpusTypedEvent() {}
[96]73
[110]74 QDataStream& streamOut(QDataStream& out) {return out << (quint64)t_ << tr_ /*<<data_*/;} // FIXME Stream Data errors
75 QDataStream& streamIn(QDataStream& in) {return in >> (quint64&)t_ >> tr_ /*>> data_*/;}
[96]76
[146]77protected:
[110]78 T data_;
[89]79};
80
[94]81class PACPUSLIB_API PacpusGenericEvent : public PacpusEvent
[89]82{
83public:
[146]84 PacpusGenericEvent(PacpusEventType type, char* data, size_t size)
85 : PacpusEvent(type)
86 {
87 data_ = new char[size];
[110]88 memcpy(data_,data,size);
[89]89 _size = size;
90
91 }
[146]92
93 virtual ~PacpusGenericEvent()
94 {
95 delete[] data_;
96 }
97
[110]98 char* data_;
[89]99 size_t _size;
100};
101
102
103} // namespace pacpus
104
[110]105inline QDataStream& operator << (QDataStream& out, pacpus::PacpusEvent& ev) {/*return ev.streamOut(out);*/ return out;}
106inline QDataStream& operator >> (QDataStream& in, pacpus::PacpusEvent& ev) {/*return ev.streamIn(in);*/ return in;}
107
[89]108#endif // PACPUS_EVENT_H
Note: See TracBrowser for help on using the repository browser.