// file : bpkg/pointer-traits.hxx -*- C++ -*- // license : MIT; see accompanying LICENSE file #ifndef BPKG_POINTER_TRAITS_HXX #define BPKG_POINTER_TRAITS_HXX #include #include namespace odb { template class pointer_traits> { public: static const pointer_kind kind = pk_shared; static const bool lazy = true; typedef T element_type; typedef bpkg::lazy_shared_ptr pointer_type; typedef bpkg::shared_ptr eager_pointer_type; static bool null_ptr (const pointer_type& p) { return !p; } template static typename object_traits::id_type object_id (const pointer_type& p) { return p.template object_id (); } }; template class pointer_traits> { public: static const pointer_kind kind = pk_weak; static const bool lazy = true; typedef T element_type; typedef bpkg::lazy_weak_ptr pointer_type; typedef bpkg::lazy_shared_ptr strong_pointer_type; typedef bpkg::weak_ptr eager_pointer_type; static strong_pointer_type lock (const pointer_type& p) { return p.lock (); } }; } #endif // BPKG_POINTER_TRAITS_HXX