/** @file basetypejsonparser.h
 *  Functionality for writing generic EA::Types classes as JSON
 *	@author Jeff Skelton (jeff@ea.com)
 *
 *	UX
 *	(c) 2012 Electronic Arts Inc. 
 */

#ifndef EABASETYPESJSON_BASETYPEJSONWRITER_H_
#define EABASETYPESJSON_BASETYPEJSONWRITER_H_

#include "EABaseTypes/autoref.h"
#include "EAJson/jsonwriter.h"

namespace EA
{
	namespace Types
	{
		EABASETYPES_FORWARD_DECLARATION(class, BaseType)

		namespace BaseTypeJsonWriter
		{
			/*!
			*	Function for writing a Types::BaseType as JSON
			*	@param[in]	base		A pointer to the Types::BaseType to be written out
			*	@param[in]	writeStream	A EA::Json template representing the string to be written
			*
			*	@todo Should we break the direct dependency on EA::Json by passing in a EA::String& and creating
			*	the EA::Json::StringWriteStream template internally?
			*/
			 void Write(BaseTypeIn base, EA::Json::IWriteStream* writeStream);
		}
	}
}

#endif /* EABASETYPESJSON_BASETYPEJSONWRITER_H_ */
