![]() |
QxOrm
1.2.3
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 _QX_REPOSITORY_X_H_ 00027 #define _QX_REPOSITORY_X_H_ 00028 00029 #ifdef _MSC_VER 00030 #pragma once 00031 #endif 00032 00040 #include <QtCore/qhash.h> 00041 #include <QtCore/qmutex.h> 00042 00043 #include <QxDao/QxRepository/IxRepository.h> 00044 00045 #include <QxSingleton/QxSingleton.h> 00046 00047 namespace qx { 00048 00055 class QX_DLL_EXPORT QxRepositoryX : public QxSingleton<QxRepositoryX> 00056 { 00057 00058 friend class IxRepository; 00059 friend class QxSingleton<QxRepositoryX>; 00060 00061 protected: 00062 00063 QHash<QString, IxRepository *> m_mapRepositoryX; 00064 QMutex m_oMutexRepositoryX; 00065 bool m_bUnregisterAllRepository; 00066 00067 private: 00068 00069 QxRepositoryX() : QxSingleton<QxRepositoryX>("qx::QxRepositoryX"), m_bUnregisterAllRepository(false) { ; } 00070 virtual ~QxRepositoryX() { unregisterAllRepository(); } 00071 00072 void registerRepository(const QString & sKey, IxRepository * pRepository); 00073 void unregisterRepository(const QString & sKey); 00074 void unregisterAllRepository(); 00075 00076 public: 00077 00078 static IxRepository * get(const QString & sKey); 00079 00080 }; 00081 00082 } // namespace qx 00083 00084 QX_DLL_EXPORT_QX_SINGLETON_HPP(qx::QxRepositoryX) 00085 00086 #endif // _QX_REPOSITORY_X_H_