~drizzle-trunk/drizzle/development

1093.3.2 by Monty Taylor
Split drizzle::plugin::Manifest into its own file.
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.2 by Monty Taylor
Split drizzle::plugin::Manifest into its own file.
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
1530.2.5 by Monty Taylor
Renamed classes that were in drizzled::plugin but which were not meant
20
#ifndef DRIZZLED_MODULE_MANIFEST_H
21
#define DRIZZLED_MODULE_MANIFEST_H
1093.3.2 by Monty Taylor
Split drizzle::plugin::Manifest into its own file.
22
1324.2.8 by Monty Taylor
Added some comment headers.
23
/**
24
 * @file Defines a Plugin Manifest
25
 *
1530.2.5 by Monty Taylor
Renamed classes that were in drizzled::plugin but which were not meant
26
 * A module::Manifest is the struct contained in every Plugin Library.
1324.2.8 by Monty Taylor
Added some comment headers.
27
 */
28
2173.2.1 by Monty Taylor
Fixes incorrect usage of include
29
#include <drizzled/module/context.h>
30
#include <drizzled/module/option_context.h>
1093.3.3 by Monty Taylor
Split out handle and library.
31
1280.1.10 by Monty Taylor
Put everything in drizzled into drizzled namespace.
32
namespace drizzled
33
{
34
1228.1.5 by Monty Taylor
Merged in some naming things.
35
struct drizzle_show_var;
36
struct drizzle_sys_var;
1093.3.2 by Monty Taylor
Split drizzle::plugin::Manifest into its own file.
37
38
/* We use the following strings to define licenses for plugins */
39
enum plugin_license_type {
40
  PLUGIN_LICENSE_GPL,
41
  PLUGIN_LICENSE_BSD,
42
  PLUGIN_LICENSE_LGPL,
43
  PLUGIN_LICENSE_PROPRIETARY,
44
  PLUGIN_LICENSE_MAX=PLUGIN_LICENSE_LGPL
45
};
46
47
1530.2.5 by Monty Taylor
Renamed classes that were in drizzled::plugin but which were not meant
48
namespace module
1093.3.2 by Monty Taylor
Split drizzle::plugin::Manifest into its own file.
49
{
50
1530.2.6 by Monty Taylor
Moved plugin::Context to module::Context.
51
typedef int (*initialize_func_t)(::drizzled::module::Context &);
1625.1.4 by Monty Taylor
Add function pointer hook for plugins to register program_options.
52
typedef void (*options_func_t)(::drizzled::module::option_context &);
1093.3.2 by Monty Taylor
Split drizzle::plugin::Manifest into its own file.
53
54
/**
55
 * Plugin Manfiest
56
 *
57
 * One Manifest is required per plugin library which is to be dlopened
58
 *
59
 * This is a struct and not a class because it is staticly defined in the
60
 * plugin objects and needs to be a POD as it can, or else it won't compile.
61
 */
62
struct Manifest
63
{
1241.10.2 by Monty Taylor
Added support for embedding the drizzle version number in the plugin file.
64
  uint64_t drizzle_version;  /* Drizzle version the plugin was compiled for  */
1093.3.2 by Monty Taylor
Split drizzle::plugin::Manifest into its own file.
65
  const char *name;          /* plugin name (for SHOW PLUGINS)               */
66
  const char *version;       /* plugin version (for SHOW PLUGINS)            */
67
  const char *author;        /* plugin author (for SHOW PLUGINS)             */
68
  const char *descr;         /* general descriptive text (for SHOW PLUGINS ) */
69
  plugin_license_type license; /* plugin license (PLUGIN_LICENSE_XXX)          */
70
  initialize_func_t init;     /* function to invoke when plugin is loaded     */
2095.3.1 by Monty Taylor
Re-purpose the old plugin sysvar slot in the struct to be a depends list.
71
  const char *depends;
1625.1.4 by Monty Taylor
Add function pointer hook for plugins to register program_options.
72
  options_func_t init_options; /* register command line options              */
1093.3.2 by Monty Taylor
Split drizzle::plugin::Manifest into its own file.
73
};
74
1530.2.5 by Monty Taylor
Renamed classes that were in drizzled::plugin but which were not meant
75
} /* namespace module */
1093.3.2 by Monty Taylor
Split drizzle::plugin::Manifest into its own file.
76
} /* namespace drizzled */
77
1530.2.5 by Monty Taylor
Renamed classes that were in drizzled::plugin but which were not meant
78
#endif /* DRIZZLED_MODULE_MANIFEST_H */