ArcGIS Procedural Runtime  3.2.10650
OpaquePtr.h
1 /*
2  COPYRIGHT (c) 2012-2024 Esri R&D Center Zurich
3  TRADE SECRETS: ESRI PROPRIETARY AND CONFIDENTIAL
4  Unpublished material - all rights reserved under the
5  Copyright Laws of the United States and applicable international
6  laws, treaties, and conventions.
7 
8  For additional information, contact:
9  Environmental Systems Research Institute, Inc.
10  Attn: Contracts and Legal Services Department
11  380 New York Street
12  Redlands, California, 92373
13  USA
14 
15  email: contracts@esri.com
16 */
17 
18 #pragma once
19 
20 #include <memory>
21 
22 
23 namespace prtx {
24 
28 template<typename T>
29 class OpaquePtr {
30 public:
31  OpaquePtr();
32  OpaquePtr(OpaquePtr<T> const& other);
33  OpaquePtr(OpaquePtr<T>&& other);
34  OpaquePtr<T>& operator=(OpaquePtr<T> const& other);
35  OpaquePtr<T>& operator=(OpaquePtr<T>&& other);
36 
37  template<typename ...Args>
38  OpaquePtr(Args&&...);
39 
40  ~OpaquePtr();
41 
42  T* operator->();
43  T const* operator->() const;
44  T& operator*();
45 
46 private:
47 
48  std::unique_ptr<T> m;
49 };
50 
51 } // namespace prtx
52 
53 
54 // helper macros to suppress MSVC warnings
55 
56 #ifdef _MSC_VER
57 
58 # define BEGIN_SUPPRESS_EXPORT_WARNINGS \
59  __pragma(warning(push)) \
60  __pragma(warning (disable : 4251))
61 
62 # define END_SUPPRESS_EXPORT_WARNINGS \
63  __pragma(warning(pop))
64 
65 #else
66 # define BEGIN_SUPPRESS_EXPORT_WARNINGS
67 # define END_SUPPRESS_EXPORT_WARNINGS
68 #endif
Definition: OpaquePtr.h:29
The Procedural Runtime eXtension namespace. The prtx namespace contains the tools to extend the Proce...
Definition: AnnotationBuilder.h:35