00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #pragma once
00021
00030 #include <string>
00031
00032 #include <boost/filesystem.hpp>
00033
00034 namespace drizzled
00035 {
00036 namespace module
00037 {
00038
00039 struct Manifest;
00040
00041
00042 class Library
00043 {
00044 std::string name;
00045 void *handle;
00046 const Manifest *manifest;
00047
00048
00049 Library();
00050 Library(const Library &);
00051 Library& operator=(const Library &);
00052
00053
00054 Library(const std::string &name_arg,
00055 void *handle_arg,
00056 const Manifest *manifest_arg);
00057
00058 public:
00059 ~Library();
00060
00061 const std::string &getName() const
00062 {
00063 return name;
00064 }
00065
00066 const Manifest *getManifest() const
00067 {
00068 return manifest;
00069 }
00070
00071 static const boost::filesystem::path getLibraryPath(const std::string &plugin_name);
00072 static Library *loadLibrary(const std::string &plugin_name, bool builtin);
00073 };
00074
00075 }
00076 }
00077