![]() |
QxOrm 1.1.9
C++ Object Relational Mapping library
|
00001 /**************************************************************************** 00002 ** 00003 ** http://www.qxorm.com/ 00004 ** http://sourceforge.net/projects/qxorm/ 00005 ** Original file by Lionel Marty 00006 ** 00007 ** This file is part of the QxOrm library 00008 ** 00009 ** This software is provided 'as-is', without any express or implied 00010 ** warranty. In no event will the authors be held liable for any 00011 ** damages arising from the use of this software. 00012 ** 00013 ** GNU Lesser General Public License Usage 00014 ** This file must be used under the terms of the GNU Lesser 00015 ** General Public License version 2.1 as published by the Free Software 00016 ** Foundation and appearing in the file 'license.lgpl.txt' included in the 00017 ** packaging of this file. Please review the following information to 00018 ** ensure the GNU Lesser General Public License version 2.1 requirements 00019 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 00020 ** 00021 ** If you have questions regarding the use of this file, please contact : 00022 ** contact@qxorm.com 00023 ** 00024 ****************************************************************************/ 00025 00026 #ifndef _IX_DATA_MEMBER_X_H_ 00027 #define _IX_DATA_MEMBER_X_H_ 00028 00029 #ifdef _MSC_VER 00030 #pragma once 00031 #endif 00032 00040 #include <QxDataMember/IxDataMember.h> 00041 00042 #include <QxDao/QxDaoStrategy.h> 00043 00044 #include <QxCollection/QxCollection.h> 00045 00046 namespace qx { 00047 00048 class IxClass; 00049 00054 class QX_DLL_EXPORT IxDataMemberX 00055 { 00056 00057 protected: 00058 00059 QxCollection<QString, IxDataMember *> m_lstDataMember; 00060 IxClass * m_pClass; 00061 00062 protected: 00063 00064 IxDataMemberX() : m_pClass(NULL) { ; } 00065 virtual ~IxDataMemberX() { deleteAllIxDataMember(); } 00066 00067 public: 00068 00069 inline IxClass * getClass() const { return m_pClass; } 00070 inline void setClass(IxClass * p) { m_pClass = p; } 00071 00072 QString getName() const; 00073 const char * getNamePtr() const; 00074 QString getDescription() const; 00075 long getVersion() const; 00076 qx::dao::strategy::inheritance getDaoStrategy() const; 00077 00078 inline long count() const { return m_lstDataMember.count(); } 00079 inline long size() const { return this->count(); } 00080 inline bool exist(const QString & sKey) const { return m_lstDataMember.exist(sKey); } 00081 inline IxDataMember * get(long l) const { return m_lstDataMember.getByIndex(l); } 00082 inline IxDataMember * get(const QString & s) const { return m_lstDataMember.getByKey(s); } 00083 00084 virtual IxDataMember * getId() const = 0; 00085 virtual long count_WithDaoStrategy() const = 0; 00086 virtual bool exist_WithDaoStrategy(const QString & sKey) const = 0; 00087 virtual IxDataMember * get_WithDaoStrategy(long lIndex) const = 0; 00088 virtual IxDataMember * get_WithDaoStrategy(const QString & sKey) const = 0; 00089 virtual IxDataMember * getId_WithDaoStrategy() const = 0; 00090 00091 private: 00092 00093 inline void deleteAllIxDataMember() { _foreach(IxDataMember * p, m_lstDataMember) { delete p; }; } 00094 00095 }; 00096 00097 typedef boost::shared_ptr<IxDataMemberX> IxDataMemberX_ptr; 00098 00099 } // namespace qx 00100 00101 #endif // _IX_DATA_MEMBER_X_H_