Add unordered_{set|map} and set to Java
Add test suite Add to makefile Revert set change Fix java map test Fix some of the tests Fix unordered map test
This commit is contained in:
parent
902f3f0ac5
commit
0f18b430fb
11 changed files with 481 additions and 12 deletions
65
Lib/java/std_unordered_map.i
Normal file
65
Lib/java/std_unordered_map.i
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
* std_unordered_map.i
|
||||
*
|
||||
* SWIG typemaps for std::unordered_map
|
||||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
%include <std_common.i>
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// std::unordered_map
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
%{
|
||||
#include <unordered_map>
|
||||
#include <stdexcept>
|
||||
%}
|
||||
|
||||
namespace std {
|
||||
|
||||
template<class KeyType, class MappedType> class unordered_map {
|
||||
public:
|
||||
typedef size_t size_type;
|
||||
typedef ptrdiff_t difference_type;
|
||||
typedef KeyType key_type;
|
||||
typedef MappedType mapped_type;
|
||||
unordered_map();
|
||||
unordered_map(const unordered_map<KeyType, MappedType>&);
|
||||
|
||||
unsigned int size() const;
|
||||
bool empty() const;
|
||||
void clear();
|
||||
|
||||
%extend {
|
||||
const MappedType& get(const KeyType& key) throw (std::out_of_range) {
|
||||
std::unordered_map<KeyType, MappedType>::iterator i = self->find(key);
|
||||
|
||||
if (i != self->end()) {
|
||||
return i->second;
|
||||
} else {
|
||||
throw std::out_of_range("key not found");
|
||||
}
|
||||
}
|
||||
|
||||
void set(const KeyType& key, const MappedType& x) {
|
||||
(*self)[key] = x;
|
||||
}
|
||||
|
||||
void del(const KeyType& key) throw (std::out_of_range) {
|
||||
std::unordered_map<KeyType, MappedType>::iterator i = self->find(key);
|
||||
|
||||
if (i != self->end()) {
|
||||
self->erase(i);
|
||||
} else {
|
||||
throw std::out_of_range("key not found");
|
||||
}
|
||||
}
|
||||
|
||||
bool has_key(const KeyType& key) {
|
||||
std::unordered_map<KeyType, MappedType>::iterator i = self->find(key);
|
||||
return i != self->end();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace std
|
||||
Loading…
Add table
Add a link
Reference in a new issue