summaryrefslogtreecommitdiff
path: root/tests/glibmm_objectbase/test_derived_objectbase.h
blob: a4a509a8f3c7a094ac5bb24051a02428b6911d52 (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 _GLIBMM_TEST_DERIVED_OBJECTBASE_H
#define _GLIBMM_TEST_DERIVED_OBJECTBASE_H

#include <glibmm.h>

class DerivedObjectBase : public Glib::ObjectBase
{
public:
  // A real application would never make the constructor public.
  // It would instead have a protected constructor and a public create() method.
  DerivedObjectBase(GObject* gobject, int i) : Glib::ObjectBase(nullptr), i_(i)
  {
    Glib::ObjectBase::initialize(gobject);
  }

  DerivedObjectBase(const DerivedObjectBase& src) = delete;
  DerivedObjectBase& operator=(const DerivedObjectBase& src) = delete;

  DerivedObjectBase(DerivedObjectBase&& src) noexcept : Glib::ObjectBase(std::move(src)),
                                                        i_(std::move(src.i_))
  {
    ObjectBase::initialize_move(src.gobject_, &src);
  }

  DerivedObjectBase& operator=(DerivedObjectBase&& src) noexcept
  {
    Glib::ObjectBase::operator=(std::move(src));
    i_ = std::move(src.i_);

    return *this;
  }

  int i_;
};

#endif // _GLIBMM_TEST_DERIVED_OBJECTBASE_H