libcommonc++  0.7
Plugin.h++
Go to the documentation of this file.
1 /* ---------------------------------------------------------------------------
2  commonc++ - A C++ Common Class Library
3  Copyright (C) 2005-2014 Mark A Lindner
4 
5  This file is part of commonc++.
6 
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Library General Public
9  License as published by the Free Software Foundation; either
10  version 2 of the License, or (at your option) any later version.
11 
12  This library is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Library General Public License for more details.
16 
17  You should have received a copy of the GNU Library General Public
18  License along with this library; if not, write to the Free
19  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20  ---------------------------------------------------------------------------
21 */
22 
23 #ifndef __ccxx_Plugin_hxx
24 #define __ccxx_Plugin_hxx
25 
26 #include <commonc++/Common.h++>
27 #include <commonc++/String.h++>
28 
29 namespace ccxx {
30 
41 {
42  protected:
43 
48  Plugin();
49 
50  public:
51 
53  virtual ~Plugin();
54 
55  private:
56 
58 };
59 
60 } // namespace ccxx
61 
62 #ifdef CCXX_OS_WINDOWS
63 #define COMMONCPP_PLUGIN_API __declspec(dllexport)
64 #else
65 #define COMMONCPP_PLUGIN_API
66 #endif // CCXX_OS_WINDOWS
67 
80 #define CCXX_EXPORT_PLUGIN(CLASS, NAME, VERSION, AUTHOR) \
81  extern "C" { \
82  COMMONCPP_PLUGIN_API ccxx::Plugin *ccxx_plugin_new(void) \
83  { return(new CLASS); } \
84  COMMONCPP_PLUGIN_API const char *ccxx_plugin_version(void) \
85  { return(VERSION); } \
86  COMMONCPP_PLUGIN_API const char *ccxx_plugin_name(void) \
87  { return(NAME); } \
88  COMMONCPP_PLUGIN_API const char *ccxx_plugin_author(void) \
89  { return(AUTHOR); } \
90  COMMONCPP_PLUGIN_API const char *ccxx_plugin_build_date(void) \
91  { return(__DATE__ " " __TIME__); } \
92  COMMONCPP_PLUGIN_API const char *ccxx_plugin_class_name(void) \
93  { return(#CLASS); } \
94  };
95 
96 #endif // __ccxx_Plugin_hxx
class COMMONCPP_API Plugin
Definition: PluginLoader.h++:30
A class representing a dynamically loaded plugin.
Definition: Plugin.h++:40
#define COMMONCPP_API
Definition: Common.h++:126
#define CCXX_COPY_DECLS(CLASS)
Inlines declarations of a copy constructor and assignment operator for the class CLASS.
Definition: Common.h++:295
Definition: AllocationMap.c++:25