diff options
Diffstat (limited to 'tests/glibmm_object/test_derived_object.h')
-rw-r--r-- | tests/glibmm_object/test_derived_object.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/glibmm_object/test_derived_object.h b/tests/glibmm_object/test_derived_object.h new file mode 100644 index 00000000..4c506b2b --- /dev/null +++ b/tests/glibmm_object/test_derived_object.h @@ -0,0 +1,60 @@ +#ifndef _GLIBMM_TEST_DERIVED_OBJECT_H +#define _GLIBMM_TEST_DERIVED_OBJECT_H + +#include <glibmm.h> + +// A basic derived GObject, just to test Glib::Object. +typedef struct +{ + GObject parent; +} TestDerived; + +typedef struct +{ + GObjectClass parent; +} TestDerivedClass; + +#define TEST_TYPE_DERIVED (test_derived_get_type()) +#define TEST_DERIVED(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TEST_TYPE_DERIVED, TestDerived)) +#define TEST_DERIVED_CLASS(cls) \ + (G_TYPE_CHECK_CLASS_CAST((cls), TEST_TYPE_DERIVED, TestDerivedClass)) +#define TEST_DERIVED_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS((obj), TEST_TYPE_DERIVED, TestDerivedClass)) + +static void +test_derived_class_init(TestDerivedClass*) +{ +} +static void +test_derived_init(TestDerived*) +{ +} + +G_DEFINE_TYPE(TestDerived, test_derived, G_TYPE_OBJECT) + +class DerivedObject : public Glib::Object +{ +public: + // A real application would never make the constructor public. + // It would instead have a protected constructor and a public create() method. + DerivedObject(GObject* gobject, int i) : Glib::Object(gobject), i_(i) {} + + DerivedObject(const DerivedObject& src) = delete; + DerivedObject& operator=(const DerivedObject& src) = delete; + + DerivedObject(DerivedObject&& src) noexcept : Glib::Object(std::move(src)), i_(std::move(src.i_)) + { + } + + DerivedObject& operator=(DerivedObject&& src) noexcept + { + Glib::Object::operator=(std::move(src)); + i_ = std::move(src.i_); + + return *this; + } + + int i_; +}; + +#endif // _GLIBMM_TEST_DERIVED_OBJECT_H |