// plinfo.h - typedefs for plugin info structure /* * Copyright (c) 2001-2003 Will Day * * This file is part of Metamod. * * Metamod 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. * * Metamod 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 Metamod; if not, write to the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, the author gives permission to * link the code of this program with the Half-Life Game Engine ("HL * Engine") and Modified Game Libraries ("MODs") developed by Valve, * L.L.C ("Valve"). You must obey the GNU General Public License in all * respects for all of the code used other than the HL Engine and MODs * from Valve. If you modify this file, you may extend this exception * to your version of the file, but you are not obligated to do so. If * you do not wish to do so, delete this exception statement from your * version. * */ #ifndef PLINFO_H #define PLINFO_H // Flags for plugin to indicate when it can be be loaded/unloaded. // NOTE: order is crucial, as greater/less comparisons are made. typedef enum { PT_NEVER = 0, PT_STARTUP, // should only be loaded/unloaded at initial hlds execution PT_CHANGELEVEL, // can be loaded/unloaded between maps PT_ANYTIME, // can be loaded/unloaded at any time PT_ANYPAUSE, // can be loaded/unloaded at any time, and can be "paused" during a map } PLUG_LOADTIME; // Flags to indicate why the plugin is being unloaded. typedef enum { PNL_NULL = 0, PNL_INI_DELETED, // was deleted from plugins.ini PNL_FILE_NEWER, // file on disk is newer than last load PNL_COMMAND, // requested by server/console command PNL_CMD_FORCED, // forced by server/console command PNL_DELAYED, // delayed from previous request; can't tell origin //only used for 'real_reason' on MPlugin::unload() PNL_PLUGIN, // requested by plugin function call PNL_PLG_FORCED, // forced by plugin function call PNL_RELOAD, // forced unload by reload() } PL_UNLOAD_REASON; // Information plugin provides about itself. typedef struct { char *ifvers; // meta_interface version char *name; // full name of plugin char *version; // version char *date; // date char *author; // author name/email char *url; // URL char *logtag; // log message prefix (unused right now) PLUG_LOADTIME loadable; // when loadable PLUG_LOADTIME unloadable; // when unloadable } plugin_info_t; extern plugin_info_t Plugin_info; // Plugin identifier, passed to all Meta Utility Functions. typedef plugin_info_t* plid_t; #define PLID &Plugin_info #endif /* PLINFO_H */