Ignore:
Timestamp:
07/31/13 14:42:05 (11 years ago)
Author:
Marek Kurdej
Message:

Corrections in PacpusEvent, InputOutputBase, InputOutputInterface.
Fixed: DLL import/export in geodesie.h.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.0-beta1/include/Pacpus/kernel/PacpusEvent.h

    r146 r148  
    22#define PACPUS_EVENT_H
    33
    4 #include <QEvent>
    5 #include "Pacpus/kernel/road_time.h"
     4#include <algorithm>
     5#include <Pacpus/kernel/road_time.h>
    66#include <Pacpus/kernel/pacpus.h>
    77#include <QDataStream>
     8#include <QEvent>
    89
    910namespace pacpus {
     
    1112// registerEventType // TODO
    1213
    13 class GenericData {
    14 public:
    15     GenericData(char* data, size_t size) {
    16         data_ = (char*)malloc(size);
    17         memcpy(data_,data,size);
    18         _size = size;}
    19 
    20     ~GenericData() {free(data_);}
    21 
    22     char * data() { return data_;}
    23     size_t size() {return _size;}
    24 
    25 private:
    26 char* data_;
    27 size_t _size;
    28 };
    29 
    30 enum PacpusEventType  {
     14// FIXME: move to another header file
     15enum PacpusEventType {
    3116    TYPED_EVENT = 1000,
    3217    GENERIC_EVENT = 2000,
     
    4429    PacpusEvent(PacpusEventType type, road_time_t t = road_time(), road_timerange_t tr = 0)
    4530        : QEvent(QEvent::Type(type))
    46         , t_(t)
    47         , tr_(tr)
     31        , m_time(t)
     32        , m_timerange(tr)
    4833    {}
     34
    4935    virtual ~PacpusEvent()
    5036    {}
    5137
    52     // NOTE virtual pure ??
     38    // TODO: should we make it virtual pure ???
    5339    virtual QDataStream& streamOut(QDataStream& out)
    5440    {
    5541        return out;
    56     }
     42    }
     43
     44    // TODO: should we make it virtual pure ???
    5745    virtual QDataStream& streamIn(QDataStream& in)
    5846    {
     
    6048    }
    6149
    62 protected: // TODO make protected
    63     road_time_t t_;
    64     road_timerange_t tr_;
     50    road_time_t & time()
     51    {
     52        return m_time;
     53    }
     54
     55    const road_time_t & time() const
     56    {
     57        return m_time;
     58    }
     59
     60    road_timerange_t & timerange()
     61    {
     62        return m_timerange;
     63    }
     64
     65    const road_timerange_t & timerange() const
     66    {
     67        return m_timerange;
     68    }
     69protected:
     70    road_time_t m_time;
     71    road_timerange_t m_timerange;
     72};
     73
     74template <typename T>
     75class /*PACPUSLIB_API*/ TypedData
     76{
     77public:
     78    TypedData(const T& data)
     79    : m_data(data)
     80    {
     81    }
     82
     83    ~TypedData()
     84    {
     85    }
     86
     87    T & data()
     88    {
     89        return m_data;
     90    }
     91
     92    const T & data() const
     93    {
     94        return m_data;
     95    }
     96
     97    size_t size() const
     98    {
     99        return sizeof(T);
     100    }
     101
     102private:
     103    T m_data;
    65104};
    66105
    67106template<class T>
    68 class PacpusTypedEvent : public PacpusEvent
     107class /*PACPUSLIB_API*/ PacpusTypedEvent
     108    : public PacpusEvent
     109    , public TypedData<T>
    69110{
    70111public:
    71     PacpusTypedEvent(PacpusEventType type, T data = T(), road_time_t t = road_time(), road_timerange_t tr = 0 ):PacpusEvent(type, t, tr),data_(data) {}
    72     ~PacpusTypedEvent() {}
     112    // FIXME: why we need `data = T()` ???
     113    PacpusTypedEvent(PacpusEventType type, const T & data = T(), road_time_t t = road_time(), road_timerange_t tr = 0 )
     114        : PacpusEvent(type, t, tr)
     115        , TypedData(data)
     116    {}
    73117
    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_*/;}
     118    ~PacpusTypedEvent()
     119    {}
    76120
    77 protected:
    78     T data_;
     121    QDataStream& streamOut(QDataStream& out)
     122    {
     123        // FIXME Stream Data errors
     124        return out << (quint64) time() << timerange() /*<< m_data*/;
     125    }
     126
     127    QDataStream& streamIn(QDataStream& in)
     128    {
     129        return in >> (quint64&) time() >> timerange() /*>> m_data*/;
     130    }
    79131};
    80132
    81 class PACPUSLIB_API PacpusGenericEvent : public PacpusEvent
     133class PACPUSLIB_API GenericData
    82134{
    83135public:
    84     PacpusGenericEvent(PacpusEventType type, char* data, size_t size)
    85         : PacpusEvent(type)
     136    GenericData(const char* data, size_t size)
     137        : m_data(NULL)
     138        , m_dataSize(size)
    86139    {
    87         data_ = new char[size];
    88         memcpy(data_,data,size);
    89         _size = size;
     140        m_data = new char[m_dataSize];
     141        ::std::copy(data, data + m_dataSize, m_data);
     142    }
    90143
     144    ~GenericData()
     145    {
     146        delete[] m_data;
     147    }
     148
     149    char * data()
     150    {
     151        return m_data;
    91152    }
    92153   
     154    const char * data() const
     155    {
     156        return m_data;
     157    }
     158
     159    size_t size() const
     160    {
     161        return m_dataSize;
     162    }
     163
     164private:
     165    char* m_data;
     166    size_t m_dataSize;
     167};
     168
     169class PACPUSLIB_API PacpusGenericEvent
     170    : public PacpusEvent
     171    , public GenericData
     172{
     173public:
     174    PacpusGenericEvent(PacpusEventType type, const char* data, size_t size)
     175        : PacpusEvent(type)
     176        , GenericData(data, size)
     177    {
     178    }
     179
    93180    virtual ~PacpusGenericEvent()
    94181    {
    95         delete[] data_;
    96182    }
    97 
    98     char* data_;
    99     size_t _size;
    100183};
    101 
    102184
    103185} // namespace pacpus
    104186
    105 inline QDataStream& operator << (QDataStream& out, pacpus::PacpusEvent& ev) {/*return ev.streamOut(out);*/ return out;}
    106 inline QDataStream& operator >> (QDataStream& in, pacpus::PacpusEvent& ev) {/*return ev.streamIn(in);*/ return in;}
     187PACPUSLIB_API inline QDataStream& operator<< (QDataStream& out, pacpus::PacpusEvent& ev)
     188{
     189    /*return ev.streamOut(out);*/
     190    return out;
     191}
     192
     193PACPUSLIB_API inline QDataStream& operator>> (QDataStream& in, pacpus::PacpusEvent& ev)
     194{
     195    /*return ev.streamIn(in);*/
     196    return in;
     197}
    107198
    108199#endif // PACPUS_EVENT_H
Note: See TracChangeset for help on using the changeset viewer.