Mercurial > projects > qtd
diff include/qtd_core.h @ 355:08c1ca7975ab
obviated redundant virtual dispatch callbacks
author | Max Samukha <maxter@spambox.com> |
---|---|
date | Tue, 25 May 2010 17:23:11 +0300 |
parents | 18bd68f586c6 |
children | 9784459f0750 |
line wrap: on
line diff
--- a/include/qtd_core.h Mon May 24 23:43:30 2010 +0300 +++ b/include/qtd_core.h Tue May 25 17:23:11 2010 +0300 @@ -1,13 +1,7 @@ /** -* -* Copyright: Copyright QtD Team, 2008-2009 -* License: <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a> -* -* Copyright QtD Team, 2008-2009 -* Distributed under the Boost Software License, Version 1.0. -* (See accompanying file boost-license-1.0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -* -*/ + * Copyright: Copyright QtD Team, 2008-2010 + * License: Boost Software License 1.0 + */ #ifndef QTD_CORE_H #define QTD_CORE_H @@ -34,6 +28,8 @@ extern "C" TYPE NAME ARGS; #endif +extern uint userDataId; + struct QModelIndexAccessor { int row; int col; @@ -54,14 +50,44 @@ //gcManaged = 0x04 }; -class QtD_Entity +class DLL_PUBLIC QtdObjectLink { public: - void* dId; + void* dId; // TODO: needs to be atomic + + QtdObjectLink(void* id) : dId(id) {} + + template<typename T> + static QtdObjectLink* getLink(const T* object) + { + return dynamic_cast<QtdObjectLink*>((T*)object); + } + + template<typename T> + static void* getDId(const T* object) + { + QtdObjectLink *link = getLink((T*)object); + return link ? link->dId : NULL; + } +}; - QtD_Entity(void* id) : dId(id) +class DLL_PUBLIC QObjectLink : public QtdObjectLink, public QObjectUserData +{ +public: + enum Flags { - } + None, + CreatedByD = 0x1 + }; + + Flags flags; + + QObjectLink(QObject* qObject, void* dId); + bool createdByD(); + virtual ~QObjectLink(); + void destroyLink(QObject* qObject = NULL); + static QObjectLink* getLink(const QObject* qObject); + static void* getDId(const QObject* qObject); }; #define Array DArray