← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3036: add a test plugin (it matches "ABC DEF" and makes it bold)

 

------------------------------------------------------------
revno: 3036
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Sat 2012-09-08 15:53:58 +0200
message:
  add a test plugin (it matches "ABC DEF" and makes it bold)
added:
  plugins/Test/
  plugins/Test/Plugin.cpp
  plugins/Test/Plugin.def
  plugins/Test/Plugin.h
  plugins/Test/SConscript
  plugins/Test/Util.cpp
  plugins/Test/Util.h
  plugins/Test/main.cpp
  plugins/Test/resource.h
  plugins/Test/resource.rc
  plugins/Test/stdafx.cpp
  plugins/Test/stdafx.h
  plugins/Test/version.h


--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk

Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== added directory 'plugins/Test'
=== added file 'plugins/Test/Plugin.cpp'
--- plugins/Test/Plugin.cpp	1970-01-01 00:00:00 +0000
+++ plugins/Test/Plugin.cpp	2012-09-08 13:53:58 +0000
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "stdafx.h"
+#include "Plugin.h"
+#include "Util.h"
+
+Plugin::Plugin() {
+}
+
+Plugin::~Plugin() {
+	for(auto& i: events)
+		hooks->release_hook(i.second);
+	events.clear();
+}
+
+Bool DCAPI Plugin::main(PluginState state, DCCorePtr core, dcptr_t) {
+	switch(state) {
+	case ON_INSTALL:
+	case ON_LOAD:
+		{
+			Bool res = True;
+			newInstance();
+			getInstance()->onLoad(core, (state == ON_INSTALL), res);
+			return res;
+		}
+
+	case ON_UNINSTALL:
+	case ON_UNLOAD:
+		{
+			deleteInstance();
+			return True;
+		}
+
+	default:
+		{
+			return False;
+		}
+	}
+}
+
+void Plugin::onLoad(DCCorePtr core, bool install, Bool& loadRes) {
+	dcpp = core;
+	hooks = reinterpret_cast<DCHooksPtr>(core->query_interface(DCINTF_HOOKS, DCINTF_HOOKS_VER));
+
+	auto utils = reinterpret_cast<DCUtilsPtr>(core->query_interface(DCINTF_DCPP_UTILS, DCINTF_DCPP_UTILS_VER));
+	auto config = reinterpret_cast<DCConfigPtr>(core->query_interface(DCINTF_CONFIG, DCINTF_CONFIG_VER));
+	auto logger = reinterpret_cast<DCLogPtr>(core->query_interface(DCINTF_LOGGING, DCINTF_LOGGING_VER));
+
+	tagger = reinterpret_cast<DCTaggerPtr>(core->query_interface(DCINTF_DCPP_TAGGER, DCINTF_DCPP_TAGGER_VER));
+
+	if(!utils || !config || !logger || !tagger) {
+		loadRes = False;
+		return;
+	}
+
+	Util::initialize(core->host_name(), utils, config, logger);
+
+	Util::logMessage("Test plugin loaded, watch out!");
+
+	/*if(install) {
+		// Default settings
+
+		Util::logMessage("Test plugin installed, please restart " + Util::appName + " to begin using the plugin.");
+		return;
+	}*/
+
+	events[HOOK_UI_CHAT_TAGS] = hooks->bind_hook(HOOK_UI_CHAT_TAGS, &uiChatTags, 0);
+}
+
+Bool Plugin::onUiChatTags(TagDataPtr tags) {
+	// look for the pattern and make it bold.
+	const string pattern = "ABC DEF";
+
+	string text(tags->text);
+	size_t start, end = 0;
+	while((start = text.find(pattern, end)) != string::npos) {
+		end = start + pattern.size();
+		tagger->add_tag(tags, start, end, "b", "");
+	}
+	return False;
+}

=== added file 'plugins/Test/Plugin.def'
--- plugins/Test/Plugin.def	1970-01-01 00:00:00 +0000
+++ plugins/Test/Plugin.def	2012-09-08 13:53:58 +0000
@@ -0,0 +1,2 @@
+EXPORTS
+	pluginInit = _pluginInit@4 @1

=== added file 'plugins/Test/Plugin.h'
--- plugins/Test/Plugin.h	1970-01-01 00:00:00 +0000
+++ plugins/Test/Plugin.h	2012-09-08 13:53:58 +0000
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PLUGINS_DEV_PLUGIN_H
+#define PLUGINS_DEV_PLUGIN_H
+
+#include <Singleton.h>
+
+#include <map>
+
+using std::map;
+using std::string;
+
+class Plugin : public dcpp::Singleton<Plugin>
+{
+public:
+	static Bool DCAPI main(PluginState state, DCCorePtr core, dcptr_t);
+
+private:
+	friend class dcpp::Singleton<Plugin>;
+
+	Plugin();
+	~Plugin();
+
+	void onLoad(DCCorePtr core, bool install, Bool& loadRes);
+	Bool onUiChatTags(TagDataPtr tags);
+
+	// Event wrappers
+	static Bool DCAPI uiChatTags(dcptr_t /*pObject*/, dcptr_t pData, dcptr_t, Bool* /*bBreak*/) {
+		return getInstance()->onUiChatTags(reinterpret_cast<TagDataPtr>(pData));
+	}
+
+	map<string, subsHandle> events;
+
+	DCCorePtr dcpp;
+	DCHooksPtr hooks;
+
+	DCTaggerPtr tagger;
+};
+
+#endif

=== added file 'plugins/Test/SConscript'
--- plugins/Test/SConscript	1970-01-01 00:00:00 +0000
+++ plugins/Test/SConscript	2012-09-08 13:53:58 +0000
@@ -0,0 +1,19 @@
+Import('dev source_path')
+
+if not dev.is_win32():
+	Return()
+
+env, target, sources = dev.prepare_build(source_path, 'TestPlugin', source_glob = '*.cpp', in_bin = False)
+
+env.Append(CPPPATH = ['#/dcpp'])
+
+res = env.RES(dev.get_sources(source_path, '*.rc'))
+env.Depends(res, 'resource.h')
+
+if 'g++' in env['LINK']:
+	env.Append(SHLINKFLAGS = '-Wl,--add-stdcall-alias')
+elif 'link' in env['LINK'] and env['arch'] == 'x86':
+	sources.append('Plugin.def')
+
+ret = dev.build_lib(env, target, [sources, res, dev.boost], shared = True)
+Return('ret')

=== added file 'plugins/Test/Util.cpp'
--- plugins/Test/Util.cpp	1970-01-01 00:00:00 +0000
+++ plugins/Test/Util.cpp	2012-09-08 13:53:58 +0000
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "stdafx.h"
+#include "Util.h"
+
+#include "version.h"
+
+string Util::appName; 
+
+DCUtilsPtr Util::utils = nullptr;
+DCConfigPtr Util::config = nullptr;
+DCLogPtr Util::logger = nullptr;
+
+void Util::setConfig(const char* name, const char* value) {
+	ConfigStr val;
+	memset(&val, 0, sizeof(ConfigStr));
+
+	val.type = CFG_TYPE_STRING;
+	val.value = value;
+	config->set_cfg(PLUGIN_GUID, name, (ConfigValuePtr)&val);
+}
+
+string Util::getConfig(const char *name) {
+	auto value = (ConfigStrPtr)config->get_cfg(PLUGIN_GUID, name, CFG_TYPE_STRING);
+	string str(value->value);
+	config->release((ConfigValuePtr)value);
+
+	return str;
+}
+
+bool Util::getBoolConfig(const char *name) {
+	auto value = (ConfigIntPtr)config->get_cfg(PLUGIN_GUID, name, CFG_TYPE_INT);
+	int32_t num = value->value;
+	config->release((ConfigValuePtr)value);
+
+	return (num != 0);
+}
+
+ConfigValuePtr Util::getCoreConfig(const char* name) {
+	return config->get_cfg("CoreSetup", name, CFG_TYPE_UNKNOWN);
+}
+
+string Util::fromT(const tstring& str) {
+	string res;
+	if(str.empty())
+		return res;
+	res.resize(str.size() + 1);
+	res.resize(utils->wcs_to_utf8(&res[0], &str[0], res.size()));
+	return res;
+}
+
+tstring Util::toT(const string& str) {
+	tstring res;
+	if(str.empty())
+		return res;
+	res.resize(str.size() + 1);
+	res.resize(utils->utf8_to_wcs(&res[0], &str[0], str.size()));
+	return res;
+}

=== added file 'plugins/Test/Util.h'
--- plugins/Test/Util.h	1970-01-01 00:00:00 +0000
+++ plugins/Test/Util.h	2012-09-08 13:53:58 +0000
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PLUGINS_DEV_UTIL_H
+#define PLUGINS_DEV_UTIL_H
+
+#ifdef _WIN32
+# define PATH_SEPARATOR '\\'
+# define PATH_SEPARATOR_STR "\\"
+#else
+# define PATH_SEPARATOR '/'
+# define PATH_SEPARATOR_STR "/"
+# include <sys/stat.h> 
+#endif
+
+#ifdef _WIN32
+# ifdef _MSC_VER
+#  define snprintf _snprintf
+#  define snwprintf _snwprintf
+# endif
+#elif __GNUC__
+# define stricmp strcasecmp
+# define strnicmp strncasecmp
+#else
+# error No supported compiler found
+#endif
+
+using std::string;
+
+class Util
+{
+public:
+	static void initialize(string coreName, DCUtilsPtr coreUtils, DCConfigPtr coreConfig, DCLogPtr coreLogger) {
+		appName = std::move(coreName);
+		utils = coreUtils;
+		config = coreConfig;
+		logger = coreLogger;
+	}
+
+	static string toString(uint16_t val) {
+		char buf[8];
+		snprintf(buf, sizeof(buf), "%u", (unsigned int)val);
+		return buf;
+	}
+
+	static string toString(int32_t val) {
+		char buf[16];
+		snprintf(buf, sizeof(buf), "%d", val);
+		return buf;
+	}
+
+	static bool fileExists(const string& aFile) {
+#ifdef _WIN32
+		DWORD attr = GetFileAttributesA(aFile.c_str());
+		return (attr != 0xFFFFFFFF);
+#else
+		struct stat fi;
+		return (stat(aFile.c_str(), &fi) == 0);
+#endif
+	}
+
+	// API Stuff
+	static string getPath(PathType type) {
+		return config->get_path(type);
+	}
+
+	static void logMessage(const string& message) {
+		logger->log(message.c_str());
+	}
+
+	static void setConfig(const char* name, const char* value);
+	static void setConfig(const char* name, const string& value) { setConfig(name, value.c_str()); }
+	static void setConfig(const char* name, bool state) { setConfig(name, string(state ? "1" : "0")); }
+
+	static string getConfig(const char *name);
+	static bool getBoolConfig(const char* name);
+
+	static ConfigValuePtr getCoreConfig(const char* name);
+	static void freeCoreConfig(ConfigValuePtr val) { config->release(val); }
+
+	static string fromT(const tstring& str);
+	static tstring toT(const string& str);
+
+	static string appName;
+
+private:
+	static DCUtilsPtr utils;
+	static DCConfigPtr config;
+	static DCLogPtr logger;
+};
+
+#define SETTING(k) Util::getConfig(#k)
+#define BOOLSETTING(k) (Util::getBoolConfig(#k))
+
+#endif

=== added file 'plugins/Test/main.cpp'
--- plugins/Test/main.cpp	1970-01-01 00:00:00 +0000
+++ plugins/Test/main.cpp	2012-09-08 13:53:58 +0000
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "stdafx.h"
+#include "Plugin.h"
+#include "version.h"
+
+extern "C" {
+
+// Plugin loader
+DCEXP DCMAIN DCAPI pluginInit(MetaDataPtr info) {
+	info->name = PLUGIN_NAME;
+	info->author = PLUGIN_AUTHOR;
+	info->description = PLUGIN_DESC;
+	info->web = PLUGIN_WEB;
+	info->version = PLUGIN_VERSION;
+	info->apiVersion = DCAPI_CORE_VER;
+	info->guid = PLUGIN_GUID;
+
+	return &Plugin::main;
+}
+
+#ifdef _WIN32
+BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD /*fdwReason*/, LPVOID /*lpvReserved*/) {
+	return TRUE;
+}
+#endif
+
+}

=== added file 'plugins/Test/resource.h'
--- plugins/Test/resource.h	1970-01-01 00:00:00 +0000
+++ plugins/Test/resource.h	2012-09-08 13:53:58 +0000
@@ -0,0 +1,16 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by resource.rc
+//
+#define VERSION_INFO                    1
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        102
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1002
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif

=== added file 'plugins/Test/resource.rc'
--- plugins/Test/resource.rc	1970-01-01 00:00:00 +0000
+++ plugins/Test/resource.rc	2012-09-08 13:53:58 +0000
@@ -0,0 +1,100 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (United States) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,0
+ PRODUCTVERSION 1,0,0,0
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "080004b0"
+        BEGIN
+            VALUE "Comments", "http://dcplusplus.sourceforge.net";
+            VALUE "FileDescription", "Test plugin for DC++"
+            VALUE "FileVersion", "1, 0, 0, 0"
+            VALUE "InternalName", "TestPlugin"
+            VALUE "LegalCopyright", "Copyright (C) 2012 Jacek Sieka"
+            VALUE "OriginalFilename", "TestPlugin.dll"
+            VALUE "ProductName", "Test plugin for DC++"
+            VALUE "ProductVersion", "1, 0, 0, 0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x800, 1200
+    END
+END
+
+#endif    // English (United States) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+

=== added file 'plugins/Test/stdafx.cpp'
--- plugins/Test/stdafx.cpp	1970-01-01 00:00:00 +0000
+++ plugins/Test/stdafx.cpp	2012-09-08 13:53:58 +0000
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "stdafx.h"

=== added file 'plugins/Test/stdafx.h'
--- plugins/Test/stdafx.h	1970-01-01 00:00:00 +0000
+++ plugins/Test/stdafx.h	2012-09-08 13:53:58 +0000
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PLUGINS_TEST_STDAFX_H
+#define PLUGINS_TEST_STDAFX_H
+
+#ifdef _WIN32
+
+#include <windows.h>
+#include <tchar.h>
+
+#else
+
+#include <unistd.h>
+
+#endif
+
+#include <cstdio>
+#include <cstdint>
+#include <string>
+
+#include <PluginDefs.h>
+
+#ifdef _UNICODE
+typedef std::wstring tstring;
+#else
+typedef std::string tstring;
+#endif
+
+#endif

=== added file 'plugins/Test/version.h'
--- plugins/Test/version.h	1970-01-01 00:00:00 +0000
+++ plugins/Test/version.h	2012-09-08 13:53:58 +0000
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PLUGINS_DEV_VERSION_H
+#define PLUGINS_DEV_VERSION_H
+
+/* UUID/GUID for this plugin project */
+#define PLUGIN_GUID "{a6150201-b8f6-4ec7-b851-e9fb1b2807dc}"
+
+/* Name of the plugin */
+#define PLUGIN_NAME "Test plugin"
+
+/* Author of the plugin */
+#define PLUGIN_AUTHOR "DC++"
+
+/* Short description of the plugin */
+#define PLUGIN_DESC "Test plugin to play around with the plugin API"
+
+/* Version of the plugin (note: not API version) */
+#define PLUGIN_VERSION 1.0
+
+/* Plugin website, set to "N/A" if none */
+#define PLUGIN_WEB "http://dcplusplus.sourceforge.net/";
+
+#endif