Add support for non-default compare template argument in std::map wrappers - Javascript
This commit is contained in:
parent
c8fc6a0322
commit
967776189e
2 changed files with 10 additions and 10 deletions
|
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
namespace std {
|
namespace std {
|
||||||
|
|
||||||
template<class K, class T> class map {
|
template<class K, class T, class C = std::less<K> > class map {
|
||||||
// add typemaps here
|
// add typemaps here
|
||||||
public:
|
public:
|
||||||
typedef size_t size_type;
|
typedef size_t size_type;
|
||||||
|
|
@ -28,14 +28,14 @@ namespace std {
|
||||||
typedef K key_type;
|
typedef K key_type;
|
||||||
typedef T mapped_type;
|
typedef T mapped_type;
|
||||||
map();
|
map();
|
||||||
map(const map<K,T> &);
|
map(const map< K, T, C > &);
|
||||||
|
|
||||||
unsigned int size() const;
|
unsigned int size() const;
|
||||||
bool empty() const;
|
bool empty() const;
|
||||||
void clear();
|
void clear();
|
||||||
%extend {
|
%extend {
|
||||||
const T& get(const K& key) throw (std::out_of_range) {
|
const T& get(const K& key) throw (std::out_of_range) {
|
||||||
std::map<K,T >::iterator i = self->find(key);
|
std::map< K, T, C >::iterator i = self->find(key);
|
||||||
if (i != self->end())
|
if (i != self->end())
|
||||||
return i->second;
|
return i->second;
|
||||||
else
|
else
|
||||||
|
|
@ -45,14 +45,14 @@ namespace std {
|
||||||
(*self)[key] = x;
|
(*self)[key] = x;
|
||||||
}
|
}
|
||||||
void del(const K& key) throw (std::out_of_range) {
|
void del(const K& key) throw (std::out_of_range) {
|
||||||
std::map<K,T >::iterator i = self->find(key);
|
std::map< K, T, C >::iterator i = self->find(key);
|
||||||
if (i != self->end())
|
if (i != self->end())
|
||||||
self->erase(i);
|
self->erase(i);
|
||||||
else
|
else
|
||||||
throw std::out_of_range("key not found");
|
throw std::out_of_range("key not found");
|
||||||
}
|
}
|
||||||
bool has_key(const K& key) {
|
bool has_key(const K& key) {
|
||||||
std::map<K,T >::iterator i = self->find(key);
|
std::map< K, T, C >::iterator i = self->find(key);
|
||||||
return i != self->end();
|
return i != self->end();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
namespace std {
|
namespace std {
|
||||||
|
|
||||||
template<class K, class T> class map {
|
template<class K, class T, class C = std::less<K> > class map {
|
||||||
// add typemaps here
|
// add typemaps here
|
||||||
public:
|
public:
|
||||||
typedef size_t size_type;
|
typedef size_t size_type;
|
||||||
|
|
@ -28,14 +28,14 @@ namespace std {
|
||||||
typedef K key_type;
|
typedef K key_type;
|
||||||
typedef T mapped_type;
|
typedef T mapped_type;
|
||||||
map();
|
map();
|
||||||
map(const map<K,T> &);
|
map(const map< K, T, C > &);
|
||||||
|
|
||||||
unsigned int size() const;
|
unsigned int size() const;
|
||||||
bool empty() const;
|
bool empty() const;
|
||||||
void clear();
|
void clear();
|
||||||
%extend {
|
%extend {
|
||||||
const T& get(const K& key) throw (std::out_of_range) {
|
const T& get(const K& key) throw (std::out_of_range) {
|
||||||
std::map<K,T >::iterator i = self->find(key);
|
std::map< K, T, C >::iterator i = self->find(key);
|
||||||
if (i != self->end())
|
if (i != self->end())
|
||||||
return i->second;
|
return i->second;
|
||||||
else
|
else
|
||||||
|
|
@ -45,14 +45,14 @@ namespace std {
|
||||||
(*self)[key] = x;
|
(*self)[key] = x;
|
||||||
}
|
}
|
||||||
void del(const K& key) throw (std::out_of_range) {
|
void del(const K& key) throw (std::out_of_range) {
|
||||||
std::map<K,T >::iterator i = self->find(key);
|
std::map< K, T, C >::iterator i = self->find(key);
|
||||||
if (i != self->end())
|
if (i != self->end())
|
||||||
self->erase(i);
|
self->erase(i);
|
||||||
else
|
else
|
||||||
throw std::out_of_range("key not found");
|
throw std::out_of_range("key not found");
|
||||||
}
|
}
|
||||||
bool has_key(const K& key) {
|
bool has_key(const K& key) {
|
||||||
std::map<K,T >::iterator i = self->find(key);
|
std::map< K, T, C >::iterator i = self->find(key);
|
||||||
return i != self->end();
|
return i != self->end();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue