#ifndef CDUTILS_M_H
#define CDUTILS_M_H

#include "cdutils_interface.h"


namespace CDUtils {


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

	PICout operator [](int v) {return createPICout((*s)[v]);}
	PICout operator [](int v) const {return createPICout((*s)[v]);}
	PICout operator [](const PIString & name_) {return createPICout((*s)[name_]);}
	PICout operator [](const PIString & name_) const {return createPICout((*s)[name_]);}
	PICout operator [](const PIDeque<int> & path_) {return createPICout((*s)[path_]);}
	PICout operator [](const PIDeque<int> & path_) const {return createPICout((*s)[path_]);}

	void messageBox(const CDType & m, const PIString & msg);

	EVENT3(messageReceived, PIDeque<int>, path, int, type, PIString, msg)

private:
	PICout createPICout(const CDType & m) const;

};

}

extern CDUtils::MInterface M;

#endif // CDUTILS_M_H
