// Copyright (c) 1999-2000 David Muse
// See the COPYING file for more information.

#ifndef SEMAPHORESET_H
#define SEMAPHORESET_H

#include <sys/types.h>

class semaphoreset {
	public:
			semaphoreset(key_t key, int semcount, int *values,
					mode_t mode);
		virtual	~semaphoreset();

		int	wait(int which);
		int	waitWithUndo(int which);
		int	signal(int which);
		int	signalWithUndo(int which);

		void	setValue(int which, int value);
		int	getValue(int which);

		int	setUid(ushort uid);
		int	setGid(ushort uid);
		int	setMode(mode_t mode);

		ushort	getUid();
		ushort	getGid();
		mode_t	getMode();

		int	getWaitingForZero(int which);
		int	getWaitingForIncrement(int which);

	private:
		#include <private/semaphoreset.h>

};

#endif