diff --git a/Lib/java/std_map.i b/Lib/java/std_map.i index d59ceb8fc..5b7517ad5 100644 --- a/Lib/java/std_map.i +++ b/Lib/java/std_map.i @@ -46,10 +46,10 @@ namespace std { -template > class map { +template > class map { -%typemap(javabase) std::map - "java.util.AbstractMap<$typemap(jboxtype, KeyType), $typemap(jboxtype, ValueType)>" +%typemap(javabase) std::map + "java.util.AbstractMap<$typemap(jboxtype, KeyType), $typemap(jboxtype, MappedType)>" %proxycode %{ @@ -65,7 +65,7 @@ template > return containsImpl(($typemap(jboxtype, KeyType))key); } - public $typemap(jboxtype, ValueType) get(Object key) { + public $typemap(jboxtype, MappedType) get(Object key) { if (!(key instanceof $typemap(jboxtype, KeyType))) { return null; } @@ -78,11 +78,11 @@ template > return null; } - public $typemap(jboxtype, ValueType) put($typemap(jboxtype, KeyType) key, - $typemap(jboxtype, ValueType) value) { + public $typemap(jboxtype, MappedType) put($typemap(jboxtype, KeyType) key, + $typemap(jboxtype, MappedType) value) { Iterator itr = find(($typemap(jboxtype, KeyType)) key); if (itr.isNot(end())) { - $typemap(jboxtype, ValueType) oldValue = itr.getValue(); + $typemap(jboxtype, MappedType) oldValue = itr.getValue(); itr.setValue(value); return oldValue; } else { @@ -91,14 +91,14 @@ template > } } - public $typemap(jboxtype, ValueType) remove(Object key) { + public $typemap(jboxtype, MappedType) remove(Object key) { if (!(key instanceof $typemap(jboxtype, KeyType))) { return null; } Iterator itr = find(($typemap(jboxtype, KeyType)) key); if (itr.isNot(end())) { - $typemap(jboxtype, ValueType) oldValue = itr.getValue(); + $typemap(jboxtype, MappedType) oldValue = itr.getValue(); removeUnchecked(itr); return oldValue; } else { @@ -106,17 +106,17 @@ template > } } - public java.util.Set> entrySet() { - java.util.Set> setToReturn = - new java.util.HashSet>(); + public java.util.Set> entrySet() { + java.util.Set> setToReturn = + new java.util.HashSet>(); Iterator itr = begin(); final Iterator end = end(); while(itr.isNot(end)) { - setToReturn.add(new Entry<$typemap(jboxtype, KeyType), $typemap(jboxtype, ValueType)>() { + setToReturn.add(new Entry<$typemap(jboxtype, KeyType), $typemap(jboxtype, MappedType)>() { private Iterator iterator; - private Entry<$typemap(jboxtype, KeyType), $typemap(jboxtype, ValueType)> init(Iterator iterator) { + private Entry<$typemap(jboxtype, KeyType), $typemap(jboxtype, MappedType)> init(Iterator iterator) { this.iterator = iterator; return this; } @@ -125,12 +125,12 @@ template > return iterator.getKey(); } - public $typemap(jboxtype, ValueType) getValue() { + public $typemap(jboxtype, MappedType) getValue() { return iterator.getValue(); } - public $typemap(jboxtype, ValueType) setValue($typemap(jboxtype, ValueType) newValue) { - $typemap(jboxtype, ValueType) oldValue = iterator.getValue(); + public $typemap(jboxtype, MappedType) setValue($typemap(jboxtype, MappedType) newValue) { + $typemap(jboxtype, MappedType) oldValue = iterator.getValue(); iterator.setValue(newValue); return oldValue; } @@ -143,17 +143,24 @@ template > %} public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef KeyType key_type; + typedef MappedType mapped_type; + typedef Compare key_compare; + map(); - map(const map&); + map(const map&); struct iterator { + %typemap(javaclassmodifiers) iterator "protected class" %extend { - std::map::iterator getNextUnchecked() { - std::map::iterator copy = (*$self); + std::map::iterator getNextUnchecked() { + std::map::iterator copy = (*$self); return ++copy; } - bool isNot(const iterator other) const { + bool isNot(iterator other) const { return (*$self != other); } @@ -161,11 +168,11 @@ template > return (*$self)->first; } - ValueType getValue() const { + MappedType getValue() const { return (*$self)->second; } - void setValue(const ValueType& newValue) { + void setValue(const MappedType& newValue) { (*$self)->second = newValue; } } @@ -188,14 +195,27 @@ template > return (self->count(key) > 0); } - void putUnchecked(const KeyType& key, const ValueType& value) { + void putUnchecked(const KeyType& key, const MappedType& value) { (*self)[key] = value; } - void removeUnchecked(const std::map::iterator itr) { + void removeUnchecked(const std::map::iterator itr) { self->erase(itr); } } }; +// Legacy macros (deprecated) +%define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) +#warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary" +%enddef + } diff --git a/Lib/java/std_set.i b/Lib/java/std_set.i index de0c31fba..6f557f627 100644 --- a/Lib/java/std_set.i +++ b/Lib/java/std_set.i @@ -134,6 +134,7 @@ class set { public: struct iterator { + %typemap(javaclassmodifiers) iterator "protected class" %extend { void incrementUnchecked() { ++(*$self); @@ -149,6 +150,11 @@ class set { } }; + typedef KeyType key_type; + typedef KeyType value_type; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + set(); set(const set&); diff --git a/Lib/java/std_unordered_map.i b/Lib/java/std_unordered_map.i index b0e8b3e40..405e0fba5 100644 --- a/Lib/java/std_unordered_map.i +++ b/Lib/java/std_unordered_map.i @@ -46,10 +46,10 @@ namespace std { -template class unordered_map { +template class unordered_map { -%typemap(javabase) std::unordered_map - "java.util.AbstractMap<$typemap(jboxtype, KeyType), $typemap(jboxtype, ValueType)>" +%typemap(javabase) std::unordered_map + "java.util.AbstractMap<$typemap(jboxtype, KeyType), $typemap(jboxtype, MappedType)>" %proxycode %{ @@ -65,7 +65,7 @@ template class unordered_map { return containsImpl(($typemap(jboxtype, KeyType))key); } - public $typemap(jboxtype, ValueType) get(Object key) { + public $typemap(jboxtype, MappedType) get(Object key) { if (!(key instanceof $typemap(jboxtype, KeyType))) { return null; } @@ -78,11 +78,11 @@ template class unordered_map { return null; } - public $typemap(jboxtype, ValueType) put($typemap(jboxtype, KeyType) key, - $typemap(jboxtype, ValueType) value) { + public $typemap(jboxtype, MappedType) put($typemap(jboxtype, KeyType) key, + $typemap(jboxtype, MappedType) value) { Iterator itr = find(($typemap(jboxtype, KeyType)) key); if (itr.isNot(end())) { - $typemap(jboxtype, ValueType) oldValue = itr.getValue(); + $typemap(jboxtype, MappedType) oldValue = itr.getValue(); itr.setValue(value); return oldValue; } else { @@ -91,14 +91,14 @@ template class unordered_map { } } - public $typemap(jboxtype, ValueType) remove(Object key) { + public $typemap(jboxtype, MappedType) remove(Object key) { if (!(key instanceof $typemap(jboxtype, KeyType))) { return null; } Iterator itr = find(($typemap(jboxtype, KeyType)) key); if (itr.isNot(end())) { - $typemap(jboxtype, ValueType) oldValue = itr.getValue(); + $typemap(jboxtype, MappedType) oldValue = itr.getValue(); removeUnchecked(itr); return oldValue; } else { @@ -106,17 +106,17 @@ template class unordered_map { } } - public java.util.Set> entrySet() { - java.util.Set> setToReturn = - new java.util.HashSet>(); + public java.util.Set> entrySet() { + java.util.Set> setToReturn = + new java.util.HashSet>(); Iterator itr = begin(); final Iterator end = end(); while(itr.isNot(end)) { - setToReturn.add(new Entry<$typemap(jboxtype, KeyType), $typemap(jboxtype, ValueType)>() { + setToReturn.add(new Entry<$typemap(jboxtype, KeyType), $typemap(jboxtype, MappedType)>() { private Iterator iterator; - private Entry<$typemap(jboxtype, KeyType), $typemap(jboxtype, ValueType)> init(Iterator iterator) { + private Entry<$typemap(jboxtype, KeyType), $typemap(jboxtype, MappedType)> init(Iterator iterator) { this.iterator = iterator; return this; } @@ -125,12 +125,12 @@ template class unordered_map { return iterator.getKey(); } - public $typemap(jboxtype, ValueType) getValue() { + public $typemap(jboxtype, MappedType) getValue() { return iterator.getValue(); } - public $typemap(jboxtype, ValueType) setValue($typemap(jboxtype, ValueType) newValue) { - $typemap(jboxtype, ValueType) oldValue = iterator.getValue(); + public $typemap(jboxtype, MappedType) setValue($typemap(jboxtype, MappedType) newValue) { + $typemap(jboxtype, MappedType) oldValue = iterator.getValue(); iterator.setValue(newValue); return oldValue; } @@ -143,13 +143,19 @@ template 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&); + unordered_map(const unordered_map&); struct iterator { + %typemap(javaclassmodifiers) iterator "protected class" %extend { - std::unordered_map::iterator getNextUnchecked() { - std::unordered_map::iterator copy = (*$self); + std::unordered_map::iterator getNextUnchecked() { + std::unordered_map::iterator copy = (*$self); return ++copy; } @@ -161,11 +167,11 @@ template class unordered_map { return (*$self)->first; } - ValueType getValue() const { + MappedType getValue() const { return (*$self)->second; } - void setValue(const ValueType& newValue) { + void setValue(const MappedType& newValue) { (*$self)->second = newValue; } } @@ -188,11 +194,11 @@ template class unordered_map { return (self->count(key) > 0); } - void putUnchecked(const KeyType& key, const ValueType& value) { + void putUnchecked(const KeyType& key, const MappedType& value) { (*self)[key] = value; } - void removeUnchecked(const std::unordered_map::iterator itr) { + void removeUnchecked(const std::unordered_map::iterator itr) { self->erase(itr); } } diff --git a/Lib/java/std_unordered_set.i b/Lib/java/std_unordered_set.i index ca9af0f19..b408c47de 100644 --- a/Lib/java/std_unordered_set.i +++ b/Lib/java/std_unordered_set.i @@ -134,6 +134,7 @@ class unordered_set { public: struct iterator { + %typemap(javaclassmodifiers) iterator "protected class" %extend { void incrementUnchecked() { ++(*$self); @@ -149,6 +150,11 @@ class unordered_set { } }; + typedef KeyType key_type; + typedef KeyType value_type; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + unordered_set(); unordered_set(const unordered_set&);