summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/include/tqtenuminheritance.h
blob: ea6901616a6a7888c1f0d923af09294e637b8ec1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#ifndef TQT_ENUM_INHERITANCE_H
#define TQT_ENUM_INHERITANCE_H

template <typename EnumT, typename BaseEnumT>
class TQTInheritEnum
{
public:
  TQTInheritEnum() {}
  TQTInheritEnum(EnumT e)
    : enum_(e)
  {}

  TQTInheritEnum(BaseEnumT e)
    : baseEnum_(e)
  {}

  explicit TQTInheritEnum( int val )
    : enum_(static_cast<EnumT>(val))
  {}

  operator EnumT() const { return enum_; }
private:
  // Note - the value is declared as a union mainly for as a debugging aid. If 

  // the union is undesired and you have other methods of debugging, change it

  // to either of EnumT and do a cast for the constructor that accepts BaseEnumT.

  union
  { 
    EnumT enum_;
    BaseEnumT baseEnum_;
  };
};

#endif // TQT_ENUM_INHERITANCE_H