move to cpp file.
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index c45bb4a..71ac621 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -30,6 +30,72 @@
 #   include <cstddef>

 #endif

 

+#if defined(_MSC_VER) && (_MSC_VER >= 1400 ) && (!defined WINCE)

+	// Microsoft visual studio, version 2005 and higher. Not WinCE.

+	/*int _snprintf_s(

+	   char *buffer,

+	   size_t sizeOfBuffer,

+	   size_t count,

+	   const char *format [,

+		  argument] ...

+	);*/

+	inline int TIXML_SNPRINTF( char* buffer, size_t size, const char* format, ... )

+	{

+		va_list va;

+		va_start( va, format );

+		int result = vsnprintf_s( buffer, size, _TRUNCATE, format, va );

+		va_end( va );

+		return result;

+	}

+

+	inline int TIXML_VSNPRINTF( char* buffer, size_t size, const char* format, va_list va )

+	{

+		int result = vsnprintf_s( buffer, size, _TRUNCATE, format, va );

+		return result;

+	}

+

+	#define TIXML_VSCPRINTF	_vscprintf

+	#define TIXML_SSCANF	sscanf_s

+#elif defined _MSC_VER

+	// Microsoft Visual Studio 2003 and earlier or WinCE

+	#define TIXML_SNPRINTF	_snprintf

+	#define TIXML_VSNPRINTF _vsnprintf

+	#define TIXML_SSCANF	sscanf

+	#if (_MSC_VER == 1300 ) && (!defined WINCE)

+		// Microsoft Visual Studio 2003 and not WinCE.

+		#define TIXML_VSCPRINTF   _vscprintf // VS2003's C runtime has this, but VC6 C runtime or WinCE SDK doesn't have.

+	#else

+		// Microsoft Visual Studio 2003 and earlier or WinCE.

+		inline int TIXML_VSCPRINTF( const char* format, va_list va )

+		{

+			int len = 512;

+			for (;;) {

+				len = len*2;

+				char* str = new char[len]();

+				const int required = _vsnprintf(str, len, format, va);

+				delete[] str;

+				if ( required != -1 ) {

+					len = required;

+					break;

+				}

+			}

+			return len;

+		}

+	#endif

+#else

+	// GCC version 3 and higher

+	//#warning( "Using sn* functions." )

+	#define TIXML_SNPRINTF	snprintf

+	#define TIXML_VSNPRINTF	vsnprintf

+	inline int TIXML_VSCPRINTF( const char* format, va_list va )

+	{

+		int len = vsnprintf( 0, 0, format, va );

+		return len;

+	}

+	#define TIXML_SSCANF   sscanf

+#endif

+

+

 static const char LINE_FEED				= (char)0x0a;			// all line endings are normalized to LF

 static const char LF = LINE_FEED;

 static const char CARRIAGE_RETURN		= (char)0x0d;			// CR gets filtered out