view plugins/mono/loader/mono-helper.h @ 11660:a3302d271199

[gaim-migrate @ 13945] Thanks to the hard work of Eoin 'ecoffey' Coffey, here is the mono plugin loader. It needs a lot of api wrapping a bit more autotools loving, but with the basic API that is wrapped, it works quite well. committer: Tailor Script <tailor@pidgin.im>
author Gary Kramlich <grim@reaperworld.com>
date Fri, 14 Oct 2005 05:00:17 +0000
parents
children 565d2e437c04
line wrap: on
line source

#ifndef _GAIM_MONO_LOADER_MONO_HELPER_H_
#define _GAIM_MONO_LOADER_MONO_HELPER_H_

#include <mono/jit/jit.h>
#include <mono/metadata/object.h>
#include <mono/metadata/environment.h>
#include <mono/metadata/assembly.h>
#include <mono/metadata/debug-helpers.h>
#include <mono/metadata/tokentype.h>
#include "plugin.h"
#include "value.h"
#include "debug.h"

typedef struct {
	GaimPlugin *plugin;
	MonoAssembly *assm;
	MonoClass *klass;
	MonoObject *obj;	
	MonoMethod *init;
	MonoMethod *load;
	MonoMethod *unload;
	MonoMethod *destroy;
} GaimMonoPlugin;

MonoClass* mono_loader_find_plugin_class(MonoImage *image);

gchar* mono_loader_get_prop_string(MonoObject *obj, char *field);

void mono_loader_set_prop_string(MonoObject *obj, char *field, char *data);

gboolean mono_loader_is_api_dll(MonoImage *image);

MonoDomain* mono_loader_get_domain(void);

void mono_loader_set_domain(MonoDomain *d);

void mono_loader_init_internal_calls(void);

MonoObject* mono_loader_object_from_gaim_type(GaimType type, gpointer data);

MonoObject* mono_loader_object_from_gaim_subtype(GaimSubType type, gpointer data);

void mono_loader_set_api_image(MonoImage *image);

MonoImage* mono_loader_get_api_image();

/* hash table stuff; probably don't need it anymore */

void mono_loader_add_plugin(GaimMonoPlugin *plugin);

gboolean mono_loader_remove_plugin(GaimMonoPlugin *plugin);

gpointer mono_loader_find_plugin(GaimMonoPlugin *plugin);

gpointer mono_loader_find_plugin_by_class(MonoClass *klass);

GHashTable* mono_loader_get_plugin_hash();

#endif