/****************************************************************************************************

		BasicGenericData.h
		Copyright: (c) 2001 Eovia Corp. All rights reserved.

		Author:	Julien
		Date:	2/27/2002

****************************************************************************************************/

#ifndef __BasicGenericData__
#define __BasicGenericData__

#if CP_PRAGMA_ONCE
#pragma once
#endif

#include "BasicCOMImplementations.h"
#include "I3DExGenericData.h"
#include "IShTokenStream.h"

/// \addtogroup BaseClass
/// \{
/********************************************************************************\
*                                                                                *
*     TBasicGenericData															 *
*                                                                                *
\********************************************************************************/
/// Basic Generic Data class.  Derive from this for a default implementation of I3DExGenericData
/// \see I3DExGenericData7
class TBasicGenericData : public I3DExGenericData, public TBasicDataExchanger, public IExStreamIO
{
public:
	// IMCUnknown methods
    virtual MCErr				MCCOMAPI QueryInterface(const MCIID& riid, void** ppvObj);
    virtual uint32				MCCOMAPI AddRef() { return TBasicDataExchanger::AddRef(); }
	// I3DExGenericData methods
	virtual int32				MCCOMAPI Edit( I3DShScene* scene );
	virtual TMCDynamicString&	MCCOMAPI GetName()=0;
	virtual void				MCCOMAPI Clone(I3DExGenericData** clone)=0;
	// IExStreamIO methods
	virtual MCCOMErr			MCCOMAPI Read(IShTokenStream* stream, ReadAttributeProc readUnknown, void* privData)=0;
	virtual MCCOMErr			MCCOMAPI Write(IShTokenStream* stream)=0;
	virtual MCCOMErr			MCCOMAPI FinishRead(IStreamContext* streamContext) { return MC_S_OK; }
};




/// \}



#endif
