/*	CVS trigger library interface
    Copyright (C) 2004-5 Tony Hoyle and March-Hare Software Ltd

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library 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
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

/* _EXPORT */

#ifndef TRIGGER_INTERFACE__H
#define TRIGGER_INTERFACE__H

#ifdef __cplusplus
extern "C" {
#endif

/* Structure passed into loginfo function */
typedef struct change_info_t
{
	const char *filename;
	const char *rev_new;
	const char *rev_old;
	char type;
	const char *tag;
	const char *bugid;
} change_info;

typedef struct property_info_t
{
	const char *property;
	const char *value;
	int isglobal;
} property_info;

/* Main callback structure.  This should be returned as an intitialised structure
   by the GetCvsInfo structure. */
typedef struct trigger_interface_t
{
	plugin_interface plugin;

	int (*init)(const struct trigger_interface_t* cb, const char *command, const char *date, const char *hostname, const char *username, const char *virtual_repository, const char *physical_repository, const char *sessionid, const char *editor, int count_uservar, const char **uservar, const char **userval, const char *client_version, const char *character_set);
	int (*close)(const struct trigger_interface_t* cb);
	int (*pretag)(const struct trigger_interface_t* cb, const char *message, const char *directory, int name_list_count, const char **name_list, const char **version_list, char tag_type, const char *action, const char *tag);
	int (*verifymsg)(const struct trigger_interface_t* cb, const char *directory, const char *filename);
	int (*loginfo)(const struct trigger_interface_t* cb, const char *message, const char *status, const char *directory, int change_list_count, change_info_t *change_list);
	int (*history)(const struct trigger_interface_t* cb, char type, const char *workdir, const char *revs, const char *name, const char *bugid, const char *message);
	int (*notify)(const struct trigger_interface_t* cb, const char *message, const char *bugid, const char *directory, const char *notify_user, const char *tag, const char *type, const char *file);
	int (*precommit)(const struct trigger_interface_t* cb, int name_list_count, const char **name_list, const char *message, const char *directory);
	int (*postcommit)(const struct trigger_interface_t* cb, const char *directory);
	int (*precommand)(const struct trigger_interface_t* cb, int argc, const char **argv);
	int (*postcommand)(const struct trigger_interface_t* cb, const char *directory);
	int (*premodule)(const struct trigger_interface_t* cb, const char *module);
	int (*postmodule)(const struct trigger_interface_t* cb, const char *module);
	int (*get_template)(const struct trigger_interface_t *cb, const char *directory, const char **template_ptr);
	int (*parse_keyword)(const struct trigger_interface_t *cb, const char *keyword,const char *directory,const char *file,const char *branch,const char *author,const char *printable_date,const char *rcs_date,const char *locker,const char *state,const char *version,const char *name,const char *bugid,const char *commitid,const property_info *props, size_t numprops, const char **value);
	int (*prercsdiff)(const struct trigger_interface_t *cb, const char *file, const char *directory, const char *oldfile, const char *newfile, const char *type, const char *options, const char *oldversion, const char *newversion, unsigned long added, unsigned long removed);
	int (*rcsdiff)(const struct trigger_interface_t *cb, const char *file, const char *directory, const char *oldfile, const char *newfile, const char *diff, size_t difflen, const char *type, const char *options, const char *oldversion, const char *newversion, unsigned long added, unsigned long removed);
} trigger_interface;

#ifdef __cplusplus
}
#endif

#endif


syntax highlighted by Code2HTML, v. 0.9.1