/** @file iencoder.h
*	An encoder that accepts all inputs and commits them to the ether
*	@author Chris Burns (cburns@ea.com)
*
*	EABaseTypes
*	(c) 2011 Electronic Arts Inc.
*/

#ifndef EABASETYPES_NULLENCODER_H_
#define EABASETYPES_NULLENCODER_H_

#include "EABaseTypes/basetypefloat.h"
#include "EABaseTypes/autoref.h"

namespace EA
{
	namespace Types
	{
		EABASETYPES_FORWARD_DECLARATION(class, Function)
		EABASETYPES_FORWARD_DECLARATION(class, UserData)
		
		/*! @class NullEncoder nullencoder.h	"EABaseTypes/nullencoder.h"
		*	@brief An encoder that doesn't do anything
		*/
		class NullEncoder
		{
		public:
		
			EA_FORCE_INLINE NullEncoder() {}

			EA_FORCE_INLINE void Reset() {}

			EA_FORCE_INLINE void BeginArray() {}
			EA_FORCE_INLINE void EndArray() {}

			EA_FORCE_INLINE void BeginArrayValue(size_t index) {}
			EA_FORCE_INLINE void EndArrayValue(size_t index) {}

			EA_FORCE_INLINE void BeginObject() {}
			EA_FORCE_INLINE void EndObject() {}

			EA_FORCE_INLINE void BeginObjectValue(const char* key, size_t length) {}
			EA_FORCE_INLINE void EndObjectValue(const char* key, size_t length) {}

			EA_FORCE_INLINE void Boolean(bool boolean) {}
			EA_FORCE_INLINE void Number(BaseTypeFloat number) {}
			EA_FORCE_INLINE void String(const char* str, size_t length) {}
			EA_FORCE_INLINE void Function(FunctionIn function) {}
			EA_FORCE_INLINE void UserData(UserDataIn userData) {}
			EA_FORCE_INLINE void Null() {}
		};
	}
}

#endif /* EABASETYPES_NULLENCODER_H_ */
