#ifndef _XMLLIGHT_FUNCTORS
#define _XMLLIGHT_FUNCTORS

#include "Behavioural/include/IXMLLight.h"

namespace morpheo {
	namespace XMLUtils {
		
	//******************************************CLASS DECLARATION**************************************//
	
		// enum to enumerate some XML tags playing a part within parsing process.
		enum EXML_DELIMITOR {
			BEGIN_TAG = '<', 
			SECOND_TAG = '/',
			END_TAG = '>'
		};

		// functor class used inside XML parsing algorithm 
		class XMLLightComparator {
		public:
			bool operator () ( char firstChar, char secondChar ) ; 
		
		};
		
		// Deleter is a functor to handle deletion algorithm of XMLLightVector
					
		template<typename T> class XMLLightDeleter {
		public: 
			inline T * operator() ( T *);
		};
		
	//*********************************** INLINE DEFINITION*********************************************//
	
		//definition of Deleter functor
		template <typename T> T* XMLLightDeleter<T>::operator() ( T * xmlLightPointer )
		{
			xmlLightPointer -> detach();
			//delete xmlLightPointer ; 
			return NULL; 
		}

	} // end of namespace XMLUtils.
} // end of morpheo's namespace.

#endif // _XMLLIGHT_FUNCTORS 

