qplugin.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:5k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtCore module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QPLUGIN_H
  38. #define QPLUGIN_H
  39. #include <QtCore/qobject.h>
  40. #include <QtCore/qpointer.h>
  41. QT_BEGIN_HEADER
  42. QT_BEGIN_NAMESPACE
  43. QT_MODULE(Core)
  44. #ifndef Q_EXTERN_C
  45. #  ifdef __cplusplus
  46. #    define Q_EXTERN_C extern "C"
  47. #  else
  48. #    define Q_EXTERN_C extern
  49. #  endif
  50. #endif
  51. typedef QObject *(*QtPluginInstanceFunction)();
  52. void Q_CORE_EXPORT qRegisterStaticPluginInstanceFunction(QtPluginInstanceFunction function);
  53. #define Q_IMPORT_PLUGIN(PLUGIN) 
  54.         extern QT_PREPEND_NAMESPACE(QObject) *qt_plugin_instance_##PLUGIN(); 
  55.         class Static##PLUGIN##PluginInstance{ 
  56.         public: 
  57.                 Static##PLUGIN##PluginInstance() { 
  58.                 qRegisterStaticPluginInstanceFunction(qt_plugin_instance_##PLUGIN); 
  59.                 } 
  60.         }; 
  61.        static Static##PLUGIN##PluginInstance static##PLUGIN##Instance;
  62. #define Q_PLUGIN_INSTANCE(IMPLEMENTATION) 
  63.         { 
  64.             static QT_PREPEND_NAMESPACE(QPointer)<QT_PREPEND_NAMESPACE(QObject)> _instance; 
  65.             if (!_instance)      
  66.                 _instance = new IMPLEMENTATION; 
  67.             return _instance; 
  68.         }
  69. #  define Q_EXPORT_PLUGIN(PLUGIN) 
  70.             Q_EXPORT_PLUGIN2(PLUGIN, PLUGIN)
  71. #  define Q_EXPORT_STATIC_PLUGIN(PLUGIN) 
  72.             Q_EXPORT_STATIC_PLUGIN2(PLUGIN, PLUGIN)
  73. #if defined(QT_STATICPLUGIN)
  74. #  define Q_EXPORT_PLUGIN2(PLUGIN, PLUGINCLASS) 
  75.             Q_DECL_EXPORT QT_PREPEND_NAMESPACE(QObject) 
  76.                 *qt_plugin_instance_##PLUGIN() 
  77.             Q_PLUGIN_INSTANCE(PLUGINCLASS)
  78. #  define Q_EXPORT_STATIC_PLUGIN2(PLUGIN, PLUGINCLASS) 
  79.             Q_EXPORT_PLUGIN2(PLUGIN, PLUGINCLASS)
  80. #else
  81. // NOTE: if you change pattern, you MUST change the pattern in
  82. // qlibrary.cpp as well.  changing the pattern will break all
  83. // backwards compatibility as well (no old plugins will be loaded).
  84. #  ifdef QPLUGIN_DEBUG_STR
  85. #    undef QPLUGIN_DEBUG_STR
  86. #  endif
  87. #  ifdef QT_NO_DEBUG
  88. #    define QPLUGIN_DEBUG_STR "false"
  89. #  else
  90. #    define QPLUGIN_DEBUG_STR "true"
  91. #  endif
  92. #  define Q_PLUGIN_VERIFICATION_DATA 
  93.     static const char *qt_plugin_verification_data = 
  94.       "pattern=""QT_PLUGIN_VERIFICATION_DATA""n" 
  95.       "version="QT_VERSION_STR"n" 
  96.       "debug="QPLUGIN_DEBUG_STR"n" 
  97.       "buildkey="QT_BUILD_KEY"";
  98. #  if defined (Q_OS_WIN32) && defined(Q_CC_BOR)
  99. #     define Q_STANDARD_CALL __stdcall
  100. #  else
  101. #     define Q_STANDARD_CALL
  102. #  endif
  103. #  define Q_EXPORT_PLUGIN2(PLUGIN, PLUGINCLASS)      
  104.             Q_PLUGIN_VERIFICATION_DATA 
  105.             Q_EXTERN_C Q_DECL_EXPORT 
  106.             const char * Q_STANDARD_CALL qt_plugin_query_verification_data() 
  107.             { return qt_plugin_verification_data; } 
  108.             Q_EXTERN_C Q_DECL_EXPORT QT_PREPEND_NAMESPACE(QObject) * Q_STANDARD_CALL qt_plugin_instance() 
  109.             Q_PLUGIN_INSTANCE(PLUGINCLASS)
  110. #  define Q_EXPORT_STATIC_PLUGIN2(PLUGIN, PLUGINCLASS)
  111. #endif
  112. QT_END_NAMESPACE
  113. QT_END_HEADER
  114. #endif // Q_PLUGIN_H