~drizzle-trunk/drizzle/development

1093.3.3 by Monty Taylor
Split out handle and library.
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 *
1999.6.1 by kalebral at gmail
update Copyright strings to a more common format to help with creating the master debian copyright file
4
 *  Copyright (C) 2009 Sun Microsystems, Inc.
1093.3.3 by Monty Taylor
Split out handle and library.
5
 *
6
 *  This program is free software; you can redistribute it and/or modify
7
 *  it under the terms of the GNU General Public License as published by
8
 *  the Free Software Foundation; version 2 of the License.
9
 *
10
 *  This program is distributed in the hope that it will be useful,
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 *  GNU General Public License for more details.
14
 *
15
 *  You should have received a copy of the GNU General Public License
16
 *  along with this program; if not, write to the Free Software
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
 */
19
2234 by Brian Aker
Mass removal of ifdef/endif in favor of pragma once.
20
#pragma once
1093.3.3 by Monty Taylor
Split out handle and library.
21
1324.2.8 by Monty Taylor
Added some comment headers.
22
/**
23
 * @file Defines a Plugin Library Wrapper
24
 *
25
 * A plugin::Library is a wrapper object around a plugin .so file. It owns
26
 * the void * returned by dlopen and contains the knowledge of how to load
27
 * and unload plugin libraries via dlopen().
28
 */
29
1228.1.3 by Monty Taylor
All of the outstanding plugin loader system cleanups:
30
#include <string>
1813.2.7 by Monty Taylor
Migrated plugin_dir to fs::path.
31
#include <boost/filesystem.hpp>
32
2385.3.17 by Olaf van der Spek
Remove unnecessary constructors and destructors
33
namespace drizzled {
34
namespace module {
1093.3.3 by Monty Taylor
Split out handle and library.
35
1891.2.1 by Monty Taylor
Fixed things to make things compile with clang
36
struct Manifest;
1093.3.3 by Monty Taylor
Split out handle and library.
37
38
/* A handle for the dynamic library containing a plugin or plugins. */
2385.3.17 by Olaf van der Spek
Remove unnecessary constructors and destructors
39
class Library : boost::noncopyable
1093.3.3 by Monty Taylor
Split out handle and library.
40
{
1228.1.3 by Monty Taylor
All of the outstanding plugin loader system cleanups:
41
  std::string name;
42
  void *handle;
43
  const Manifest *manifest;
44
45
  /* Construction should only happen through the static factory method */
2385.3.17 by Olaf van der Spek
Remove unnecessary constructors and destructors
46
  Library(const std::string &name_arg, void *handle_arg, const Manifest*);
1530.2.3 by Monty Taylor
Changed the builtin plugin code path to work exactly the same as dynamic.
47
1093.3.3 by Monty Taylor
Split out handle and library.
48
public:
1228.1.3 by Monty Taylor
All of the outstanding plugin loader system cleanups:
49
  ~Library();
50
51
  const std::string &getName() const
52
  {
53
    return name;
54
  }
55
 
56
  const Manifest *getManifest() const
57
  {
58
    return manifest;
59
  }
60
1813.2.7 by Monty Taylor
Migrated plugin_dir to fs::path.
61
  static const boost::filesystem::path getLibraryPath(const std::string &plugin_name);
1530.2.3 by Monty Taylor
Changed the builtin plugin code path to work exactly the same as dynamic.
62
  static Library *loadLibrary(const std::string &plugin_name, bool builtin);
1093.3.3 by Monty Taylor
Split out handle and library.
63
};
64
1530.2.5 by Monty Taylor
Renamed classes that were in drizzled::plugin but which were not meant
65
} /* namespace module */
1093.3.3 by Monty Taylor
Split out handle and library.
66
} /* namespace drizzled */