/
umud/DOC/
umud/DOC/examples/
umud/DOC/internals/
umud/DOC/wizard/
umud/MISC/
umud/MISC/dbchk/
umud/RWHO/rwhod/
#ifndef	_INCL_TRANS_H

/*
	Basic structs for the DB transaction engine.
*/


/* This holds a datum for any of the transaction types */
typedef union {
		char	*name;		/* Name of an object to delete */
					/* Or link to */
		struct {
			Obj	*obj;	/* Object to insert */
			char	*name;	/* its name */
		} object;
		struct {
			char	*this;	/* Name of thing to insert/remove */
			char	*there;	/* from here.  */
		}insdel;

		struct {
			char	*to;
			char	*from;
			char	*who;	/* from here.  */
		} linkchk;
} tr_opdata;



/* String these together to make a program for tr_exec() */
typedef struct tr_op {
	int		(*handler)();
	tr_opdata	parm;
	struct tr_op	*next;
} tr_op;



/* This points to a list of tr_ops, of course. Geez. */
typedef struct {
	tr_op	*first;		/* First operation of the program */
	tr_op	*last;		/* Last operation of the program */
} tr_prog;



/* Flags for the various transaction handlers.  */
#define TR_VALIDATE	0
#define TR_EXEC		1
#define	TR_ABORT	2


/* The functions YOU use to get at transact.c */
extern	tr_prog		*tr_newprog();
extern	void		tr_addop();
extern	int		tr_exec();
extern	int		tr_abort();


/* The handlers for the various DB transactions */
extern	int		tr_newobj();
extern	int		tr_delobj();
extern	int		tr_zeroobj();
extern	int		tr_insply();
extern	int		tr_remply();
extern	int		tr_addlink();

#define	_INCL_TRANS_H
#endif