@@ -187,6 +187,18 @@ It should be noted that only the declaration is required. The implementation
187187can appear after the \texttt {Rcpp.h } file is included, and therefore take
188188full advantage of the \pkg {Rcpp} type system.
189189
190+ Another non-intrusive option is to expose an external pointer. The macro
191+ \texttt {RCPP\_ EXPORT\_ WRAP } provides an easy way to expose a \proglang {C++} class
192+ to \proglang {R} as an external pointer. It can be used instead of specializing
193+ \texttt {Rcpp::wrap }, and should not be used simultaneously.
194+
195+ <<lang =cpp >>=
196+ # include RcppCommon.h
197+ # include foobar.h
198+
199+ RCPP_EXPORT_WRAP(Bar );
200+ @
201+
190202\subsection {Templates and partial specialization }
191203
192204It is perfectly valid to declare a partial specialization for the
@@ -263,6 +275,28 @@ namespace Rcpp {
263275# include <Rcpp.h>
264276@
265277
278+ Furthermore, another non-intrusive option is to opt for sharing an R
279+ external pointer. The macro \texttt {RCPP\_ EXPORT\_ AS } provides an easy way to
280+ extend \texttt {Rcpp::as } to expose \proglang {R} external pointers to
281+ \proglang {C++}. It can be used instead of specializing \texttt {Rcpp::as }, and
282+ should not be used simultaneously.
283+
284+ <<lang =cpp >>=
285+ # include RcppCommon.h
286+ # include foobar.h
287+
288+ RCPP_EXPORT_AS(Bar );
289+ @
290+
291+ With this being said, there is one additional macro that can be used to
292+ simultaneously define both \texttt {Rcpp::wrap } and \texttt {Rcpp::as }
293+ specialization for an external pointer. The macro \texttt {RCPP\_ EXPOSED\_ CLASS }
294+ can be use to transparently exchange a class between \proglang {R} and
295+ \proglang {C++} as an external pointer. Do not simultaneously use it alongside
296+ \texttt {RCPP\_ EXPOSED\_ AS }, \texttt {RCPP\_ EXPOSED\_ WRAP }, \texttt {Rcpp::wrap }, or
297+ \texttt {Rcpp::as }.
298+
299+
266300\subsection {Templates and partial specialization }
267301
268302The signature of \texttt {Rcpp::as } does not allow partial specialization.
0 commit comments