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