/*
	CD Utils - Control-Debug utilites

	Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru

	This program 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 3 of the License, or
	(at your option) any later version.

	This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef CDUTILS_X_H
#define CDUTILS_X_H

#include "cdutils_interface.h"


namespace CDUtils {


class XInterface: public Interface
{
	PIOBJECT_SUBCLASS(XInterface, Interface)
public:
	XInterface();

	EVENT1(keepNamesRequest, bool*, xn)
	EVENT1(receivedX, PIVector<PIDeque<int> >, pathes)

	void enable(const CDType & x) {setEnabled(x, true);}
	void disable(const CDType & x) {setEnabled(x, false);}
	void setEnabled(const CDType & x, bool en);
	void setDisabled(const CDType & x, bool dis) {setEnabled(x, !dis);}
	PIVector<PIDeque<int> > enabledList() const;
	void setEnabledList(const PIVector<PIDeque<int> > & l);
	void lock();
	void unlock();

	void start(double freq = 20.);
	void stop();

};

}

extern CDUtils::XInterface X;

#endif // CDUTILS_X_H
