1 #ifndef mock_types_1103988513531
2 #define mock_types_1103988513531
3 
4 template <typename T> struct Ref {
5   T t;
6 
RefRef7   Ref() : t{} {};
RefRef8   Ref(T *) {}
getRef9   T *get() { return nullptr; }
10   operator const T &() const { return t; }
11   operator T &() { return t; }
12 };
13 
14 template <typename T> struct RefPtr {
15   T *t;
16 
RefPtrRefPtr17   RefPtr() : t(new T) {}
RefPtrRefPtr18   RefPtr(T *t) : t(t) {}
getRefPtr19   T *get() { return t; }
20   T *operator->() { return t; }
21   T &operator*() { return *t; }
22   RefPtr &operator=(T *) { return *this; }
23 };
24 
25 template <typename T> bool operator==(const RefPtr<T> &, const RefPtr<T> &) {
26   return false;
27 }
28 
29 template <typename T> bool operator==(const RefPtr<T> &, T *) { return false; }
30 
31 template <typename T> bool operator==(const RefPtr<T> &, T &) { return false; }
32 
33 template <typename T> bool operator!=(const RefPtr<T> &, const RefPtr<T> &) {
34   return false;
35 }
36 
37 template <typename T> bool operator!=(const RefPtr<T> &, T *) { return false; }
38 
39 template <typename T> bool operator!=(const RefPtr<T> &, T &) { return false; }
40 
41 struct RefCountable {
refRefCountable42   void ref() {}
derefRefCountable43   void deref() {}
44 };
45 
downcast(T * t)46 template <typename T> T *downcast(T *t) { return t; }
47 
48 #endif
49