
/*!
@author d金魚
@since 2003/9/26
@note
参考サイト:<br>
http://www.nantekotta.com/<br>
*/
#ifndef DKUTIL_DKTL_MAP_EX_HPP
#define DKUTIL_DKTL_MAP_EX_HPP

#include <map>
#include <dkutil/dktl/adapters.hpp>

namespace dkutil{

/*!
@note
後々、class map_ex : public MAPTYPE{...};になる予定･･･
MAP_TYPEはG++では反映されない。
*/
#ifdef _MSC_VER
template<class K,class V,class MAP_TYPE=std::map<K,V> >
struct map_ex : public map_ex_adapter<MAP_TYPE>{
  //typedef std::map<K,V> MAP_TYPE;
	typedef map_ex<K,V,MAP_TYPE> self_type;
#else
template<class K,class V>
struct map_ex : public map_ex_adapter<std::map<K,V> >{
  typedef std::map<K,V> MAP_TYPE;
 	typedef map_ex<K,V> self_type;
#endif


	typedef map_ex_adapter<MAP_TYPE> base_type ;

	typedef MAP_TYPE CONTAINER_TYPE;


	typedef typename base_type::DATA_TYPE DATA_TYPE;
	typedef typename base_type::RESULT RESULT;
	//typedef std::pair<bool,void *> GET_DATA;
	typedef typename base_type::iterator iterator;
	typedef typename base_type::const_iterator const_iterator;
	typedef typename base_type::reverse_iterator reverse_iterator;
	typedef typename base_type::const_reverse_iterator const_reverse_iterator;
	/// キーの型 
	typedef typename base_type::key_type key_type;
	///データの型 
	typedef typename base_type::mapped_type mapped_type;
	/// キーとデータのペア 
	typedef typename base_type::value_type value_type;

	//コンストラクタとかなくても大丈夫だよね･･･。（謎

};


}//end of dkutil namespace


#endif//end of include once
