//	Roast+ License

//	Safe系関数 (バッファオーバーラン防止)
//		- バッファを越えようとした場合は、納まり切らなかった文字列を切り捨てます。

#ifndef __SFJP_OPENMGL_roast_bufsafe_HPP__
#define __SFJP_OPENMGL_roast_bufsafe_HPP__

#include "roast_bufsafe.h"
#include "roast_str.h"
#include <stdarg.h>

namespace roast{

	//	safe_strcpy -> roast_safe_strcpy
	inline char* safe_strcpy( char *dest, const char *src, size_t dest_memsize ){
		return roast_safe_strcpy(dest,src,dest_memsize);
	}
	
	//	safe_strcat -> roast_safe_strcat
	inline char* safe_strcat( char *dest, const char *src, size_t dest_memsize ){
		return roast_safe_strcat(dest,src,dest_memsize);
	}
	
	//	safe_strccpy -> roast_safe_strccpy
	inline char* safe_strccpy( char *dest, const char *src, char c, size_t dest_memsize ){
		return roast_safe_strccpy(dest,src,c,dest_memsize);
	}
	
	
	/////////////////////////////////////////////////////////////////////////////
	
	
	//	using namespace等と言うDirtyなコードを書く奴はお仕置きだべー！
	//（::のsnprintfかroast::snprintfかちゃんと指定しろと言われる。＠Linux）
	
	//	vsnprintf -> roast_vsnprintf
	inline int vsnprintf( char *str, size_t size, const char *format, va_list ap ){
		return roast_vsnprintf(str,size,format,ap);
	}
	
	//	snprintf -> GCCでない限りこうするしかない...
	inline int snprintf( char *str, size_t size, const char *format, ... )
	{
		int r;
		va_list vl;
		
		va_start(vl, format);
		r = roast_vsnprintf(str, size, format, vl);
		va_end(vl);
		
		return r;
	}

}

#endif//__SFJP_OPENMGL_roast_bufsafe_HPP__
