aboutsummaryrefslogtreecommitdiff
path: root/common/enum/test.hxx
blob: f7941febdcc94b81ab41646807ea082fc6ea33f8 (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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// file      : common/enum/test.hxx
// copyright : Copyright (c) 2009-2015 Code Synthesis Tools CC
// license   : GNU GPL v2; see accompanying LICENSE file

#ifndef TEST_HXX
#define TEST_HXX

#include <odb/core.hxx>
#include <common/config.hxx> // HAVE_CXX11_ENUM

enum color {red, green, blue};

#pragma db object
struct object
{
  #pragma db id auto
  unsigned long id_;

  color color_;
  enum taste {bitter, sweet, sour};
  taste taste_;

  enum position {left = -1, center = 0, right = 1};
  position position_;


#ifdef HAVE_CXX11_ENUM
  enum class gender {male, female};
  enum class scale: unsigned char {one = 1, ten = 10, hundred = 100};
  enum class yesno: bool {no, yes};

  gender gender_;
  scale scale_;
  yesno yesno_;
#endif

};

inline bool
operator == (const object& x, const object& y)
{
  return
    x.id_ == y.id_
    && x.color_ == y.color_
    && x.taste_ == y.taste_
    && x.position_ == y.position_
#ifdef HAVE_CXX11_ENUM
    && x.gender_ == y.gender_
    && x.scale_ == y.scale_
    && x.yesno_ == y.yesno_;
#endif
    ;
}

#endif // TEST_HXX