1#ifndef ZYPP_NG_BASE_ZYPPGLOBAL_H_INCLUDED
2#define ZYPP_NG_BASE_ZYPPGLOBAL_H_INCLUDED
6#ifndef EXPORT_EXPERIMENTAL_API
7#define LIBZYPP_NG_EXPORT
8#define LIBZYPP_NG_NO_EXPORT
10#include <zypp-ng_export.h>
83template <
typename Ptr>
inline auto zyppGetPtrHelper(
const Ptr &ptr) ->
decltype(ptr.operator->()) {
return ptr.operator->(); }
84template <
typename Ptr>
inline auto zyppGetPtrHelper(Ptr &ptr) ->
decltype(ptr.operator->()) {
return ptr.operator->(); }
86#define ZYPP_DECLARE_PRIVATE(Class) \
87 Class##Private* d_func();\
88 const Class##Private* d_func() const; \
89 friend class Class##Private;
91#define ZYPP_IMPL_PRIVATE(Class) \
92 Class##Private* Class::d_func() \
93 { return static_cast<Class##Private *>(zyppGetPtrHelper(d_ptr)); } \
94 const Class##Private* Class::d_func() const \
95 { return static_cast<const Class##Private *>(zyppGetPtrHelper(d_ptr)); }
97#define ZYPP_DECLARE_PUBLIC(Class) \
99 inline Class* z_func() { return static_cast<Class *>(z_ptr); } \
100 inline const Class* z_func() const { return static_cast<const Class *>(z_ptr); } \
101 friend class Class; \
104#define Z_D() auto const d = d_func()
105#define Z_Z() auto const z = z_func()
110#define ZYPP_FWD_DECL_REFS(T) \
111 using T##Ref = std::shared_ptr<T>; \
112 using T##WeakRef = std::weak_ptr<T>
117#define ZYPP_FWD_DECL_TYPE_WITH_REFS(T) \
119 ZYPP_FWD_DECL_REFS(T)
121#define ZYPP_FWD_DECL_TEMPL_TYPE_WITH_REFS_ARG1(T, TArg1) \
122 template< typename TArg1> \
124 template< typename TArg1> \
125 using T##Ref = std::shared_ptr<T<TArg1>>; \
126 template< typename TArg1> \
127 using T##WeakRef = std::weak_ptr<T<TArg1>>
132#define ZYPP_FWD_DECL_TEMPL_TYPE_WITH_REFS(T, TArg1, ...) \
133 template< typename TArg1 __VA_OPT__(, typename) __VA_ARGS__ > \
135 template< typename TArg1 __VA_OPT__(, typename) __VA_ARGS__ > \
136 using T##Ref = std::shared_ptr<T<TArg1 __VA_OPT__(,) __VA_ARGS__>>; \
137 template< typename TArg1 __VA_OPT__(, typename) __VA_ARGS__ > \
138 using T##WeakRef = std::weak_ptr<T<TArg1 __VA_OPT__(,) __VA_ARGS__ >>
145#define ZYPP_ADD_PRIVATE_CONSTR_HELPER() \
146 struct private_constr_t { private_constr_t () noexcept = default; }
151#define ZYPP_PRIVATE_CONSTR_ARG \
157#define ZYPP_PRIVATE_CONSTR_ARG_VAL \
196#define ZYPP_ADD_CREATE_FUNC(Class) \
198 ZYPP_ADD_PRIVATE_CONSTR_HELPER(); \
200 template < typename ...Args > \
201 inline static Class##Ref create ( Args &&... args ) { \
202 return std::make_shared< Class >( private_constr_t{}, std::forward<Args>(args)... ); \
212#define ZYPP_DECL_PRIVATE_CONSTR(Class) Class( private_constr_t )
213#define ZYPP_IMPL_PRIVATE_CONSTR(Class) Class::Class( private_constr_t )
214#define ZYPP_DECL_PRIVATE_CONSTR_ARGS(Class,...) Class( private_constr_t, __VA_ARGS__ )
215#define ZYPP_IMPL_PRIVATE_CONSTR_ARGS(Class,...) Class::Class( private_constr_t, __VA_ARGS__ )
T * zyppGetPtrHelper(T *ptr)