RStudio Launcher Plugin SDK
1.1.3
A software development kit for creating plugins that work the the RStudio Launcher.
sdk
include
PImpl.hpp
1
/*
2
* PImpl.hpp
3
*
4
* Copyright (C) 2022 by RStudio, PBC
5
*
6
* Unless you have received this program directly from RStudio pursuant to the terms of a commercial license agreement
7
* with RStudio, then this program is licensed to you under the following terms:
8
*
9
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
10
* documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
11
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
12
* permit persons to whom the Software is furnished to do so, subject to the following conditions:
13
*
14
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
15
* Software.
16
*
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
18
* WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
19
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
20
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
*
22
*/
23
24
#ifndef LAUNCHER_PLUGINS_P_IMPL_HPP
25
#define LAUNCHER_PLUGINS_P_IMPL_HPP
26
27
#include <memory>
28
32
#define PRIVATE_IMPL_START \
33
struct Impl;
34
47
#define PRIVATE_IMPL(in_memberName) \
48
PRIVATE_IMPL_START \
49
struct ImplDeleter { void operator()(Impl*); }; \
50
std::unique_ptr<Impl, ImplDeleter> in_memberName;
51
60
#define PRIVATE_IMPL_SHARED(in_memberName) \
61
PRIVATE_IMPL_START \
62
std::shared_ptr<Impl> in_memberName;
63
70
#define PRIVATE_IMPL_DELETER_IMPL(in_owningClass) \
71
void in_owningClass::ImplDeleter::operator()(in_owningClass::Impl* io_toDelete) \
72
{ \
73
delete io_toDelete; \
74
}
75
76
#endif
Generated by
1.8.16