1 #ifndef PYTHONIC_BUILTIN_DICT_SETDEFAULT_HPP 2 #define PYTHONIC_BUILTIN_DICT_SETDEFAULT_HPP 3 4 #include "pythonic/include/builtins/dict/setdefault.hpp" 5 6 #include "pythonic/types/dict.hpp" 7 #include "pythonic/utils/functor.hpp" 8 9 PYTHONIC_NS_BEGIN 10 11 namespace builtins 12 { 13 14 namespace dict 15 { 16 17 template <class K, class V, class W, class X> 18 V &setdefault(types::dict<K, V> &d, W const &k, X const &default_) 19 { 20 return d.setdefault(k, default_); 21 } 22 23 template <class K, class V, class W> setdefault(types::dict<K,V> & d,W const & k)24 types::none<V> setdefault(types::dict<K, V> &d, W const &k) 25 { 26 return d.get(k); 27 } 28 29 template <class K, class V, class W, class X> 30 V setdefault(types::dict<K, V> &&d, W const &k, X const &default_) 31 { 32 return d.setdefault(k, default_); 33 } 34 35 template <class K, class V, class W> setdefault(types::dict<K,V> && d,W const & k)36 types::none<V> setdefault(types::dict<K, V> &&d, W const &k) 37 { 38 return d.get(k); 39 } 40 } 41 } 42 PYTHONIC_NS_END 43 44 #endif 45