/////////////////////////////////////////////////////////////
// CINEMA 4D SDK                                           //
/////////////////////////////////////////////////////////////
// (c) MAXON Computer GmbH, all rights reserved            //
/////////////////////////////////////////////////////////////

#ifndef __C4D_COMMANDPLUGIN_H
#define __C4D_COMMANDPLUGIN_H

#include "ge_math.h"
#include "c4d_commanddata.h"
#include "c4d_baseplugin.h"

struct COMMANDPLUGIN : public STATICPLUGIN
{
	String			*help;
	BaseBitmap	*command_icon;

    Bool        (*Execute)(CommandData *self, BaseDocument *doc);
    LONG        (*GetState)(CommandData *self, BaseDocument *doc);
    Bool        (*RestoreLayout)(CommandData *self, void *secret);
    void		(*MessageEx)(CommandData *self, const BaseContainer &bc);
    String      (*GetScriptName)(CommandData *self);
    Bool        (*GetSubContainer)(CommandData *self, BaseDocument *doc, BaseContainer &submenu);
    Bool        (*ExecuteSubID)(CommandData *self, BaseDocument *doc, LONG subid);
    Bool        (*Message)(CommandData *self, LONG type, void *data);
    Bool        (*ExecuteOptionID)(CommandData *self, BaseDocument *doc, LONG plugid, LONG subid);

	//Bool		(CommandData::*Execute			)(BaseDocument *doc);
	//LONG		(CommandData::*GetState			)(BaseDocument *doc);
	//Bool		(CommandData::*RestoreLayout	)(void *secret);
	//void		(CommandData::*MessageEx		)(const BaseContainer &bc);
	//String	(CommandData::*GetScriptName	)(void); 
	//Bool		(CommandData::*GetSubContainer)(BaseDocument *doc, BaseContainer &submenu);
	//Bool		(CommandData::*ExecuteSubID		)(BaseDocument *doc, LONG subid);
	//Bool		(CommandData::*Message			)(LONG type, void *data);
	//Bool		(CommandData::*ExecuteOptionID)(BaseDocument *doc, LONG plugid, LONG subid);

	void*	reserved[(32-9)*C4DPL_MEMBERMULTIPLIER-2];
};

struct MANAGERINFORMATION : public STATICPLUGIN
{
	LONG info;

	void*	reserved[32*C4DPL_MEMBERMULTIPLIER-1];
};

#endif
