X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/4cac9f15932adee255ed2be1f6d419ffe068c438..d78fbc3a4f4bdef475f85b0c1ebeaddd74cce141:/src/uobject/module.h diff --git a/src/uobject/module.h b/src/uobject/module.h index 03fe0ec..e4fd5a6 100644 --- a/src/uobject/module.h +++ b/src/uobject/module.h @@ -1,10 +1,10 @@ /* * upkg: tool for manipulating Unreal Tournament packages. - * Copyright (C) 2009 Nick Bowler + * Copyright © 2009-2011 Nick Bowler * - * This program is free software; you can redistribute it and/or modify + * 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 + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -13,44 +13,35 @@ * 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 + * along with this program. If not, see . */ -#ifndef UOBJECT_MODULE_H_ -#define UOBJECT_MODULE_H_ +#ifndef U_OBJECT_MODULE_H_ +#define U_OBJECT_MODULE_H_ #include -#include -#define UPKG_MODULE_TYPE (upkg_module_get_type()) -#define UPKG_MODULE(obj) \ - G_TYPE_CHECK_INSTANCE_CAST(obj, UPKG_MODULE_TYPE, UPkgModule) -#define UPKG_MODULE_CLASS(class) \ - G_TYPE_CHECK_CLASS_CAST(class, UPKG_MODULE_TYPE, UPkgModuleClass) -#define IS_UPKG_MODULE(obj) \ - G_TYPE_CHECK_INSTANCE_TYPE(obj, UPKG_MODULE_TYPE) -#define IS_UPKG_MODULE_CLASS(class) \ - G_TYPE_CHECK_CLASS_TYPE(class, UPKG_MODULE_TYPE, UPkgModuleClass) - -typedef struct UPkgModule UPkgModule; -typedef struct UPkgModuleClass UPkgModuleClass; - -struct UPkgModule { - GTypeModule parent; - - lt_dlhandle dl; -}; - -struct UPkgModuleClass { - GTypeModuleClass parent; -}; - -UPkgModule *upkg_module_new(const char *name); +/* + * Initialize the UObject module system. Returns 0 on success, -1 otherwise. + * The module system can be safely initialized multiple times. + */ +int u_object_module_init(void); -int module_init(void); -int module_exit(void); +/* + * Shutdown the UObject module system. Returns 0 on success, -1 otherwise. + * The module system is only shut down when this function has been called as + * many times as u_object_module_init. + */ +int u_object_module_exit(void); -GType module_get_class(const char *package, const char *class); +/* + * Get a class handle from the UObject module system, where class is an + * object reference for the class within the provided package. This will load + * the appropriate shared object if necessary. The resulting handle can then + * be used to create instances of the class with g_object_new. + * + * Returns 0 on failure. + */ +GType u_object_module_get_class(GTypeModule *pkg, long class); #endif