From 4b88baebec63bbbd98961ec649fe25491f9bbf13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Thu, 15 Sep 2016 10:26:35 +0200 Subject: [PATCH] [Escher] Add a magic number to app as poor man's RTTI Change-Id: If7e907f1187b6b6bda33f89aee4a5dfbd922ed6d --- escher/include/escher/app.h | 2 ++ escher/src/app.cpp | 1 + escher/src/responder.cpp | 6 +++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/escher/include/escher/app.h b/escher/include/escher/app.h index 9afe972ff..ee5a98576 100644 --- a/escher/include/escher/app.h +++ b/escher/include/escher/app.h @@ -15,10 +15,12 @@ class App : public Responder { public: + constexpr static uint8_t Magic = 0xA8; App(); void setWindow(Window * window); void focus(Responder * responder); void processEvent(Ion::Events::Event event); + uint8_t m_magic; // Poor man's RTTI protected: virtual ViewController * rootViewController() = 0; private: diff --git a/escher/src/app.cpp b/escher/src/app.cpp index fe8a6c48b..86a062d20 100644 --- a/escher/src/app.cpp +++ b/escher/src/app.cpp @@ -5,6 +5,7 @@ extern "C" { } App::App() : + m_magic(Magic), Responder(nullptr), m_focusedResponder(nullptr) { diff --git a/escher/src/responder.cpp b/escher/src/responder.cpp index 6373a806b..5b867ba72 100644 --- a/escher/src/responder.cpp +++ b/escher/src/responder.cpp @@ -1,4 +1,6 @@ #include +#include +#include Responder::Responder(Responder * parentResponder) : m_parentResponder(parentResponder) @@ -29,5 +31,7 @@ App * Responder::app() { /* If we used RTTI we could use a dynamic_cast, which would be a lot more * safe, as such: * return dynamic_cast(rootResponder); */ - return (App *)rootResponder; + App * result = (App *)rootResponder; + assert(result->m_magic == App::Magic); // Poor man's RTTI + return result; }