1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
// Copyright (C) 2013 Romain Francois
//
// This file is part of Rcpp.
//
// Rcpp is free software: you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// Rcpp is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Rcpp. If not, see <http://www.gnu.org/licenses/>.
#ifndef Rcpp_macros_interface_h
#define Rcpp_macros_interface_h
#define RCPP_GENERATE_CTOR_ASSIGN(__CLASS__) \
typedef StoragePolicy<__CLASS__> Storage ; \
typedef AttributeProxyPolicy<__CLASS__> AttributePolicy ; \
RCPP_CTOR_ASSIGN(__CLASS__)
#define RCPP_CTOR_ASSIGN(__CLASS__) \
__CLASS__( const __CLASS__& other ){ \
Storage::copy__(other) ; \
} \
__CLASS__& operator=(const __CLASS__& rhs) { \
return Storage::copy__(rhs) ; \
} \
template <typename Proxy> \
__CLASS__( const GenericProxy<Proxy>& proxy ){ \
Storage::set__( proxy.get() ) ; \
}
#define RCPP_CTOR_ASSIGN_WITH_BASE(__CLASS__) \
__CLASS__( const __CLASS__& other ) : Base(other) { \
} \
__CLASS__& operator=(const __CLASS__& rhs) { \
return Storage::copy__(rhs) ; \
} \
template <typename Proxy> \
__CLASS__( const GenericProxy<Proxy>& proxy ){ \
Storage::set__( proxy.get() ) ; \
}
#define RCPP_API_CLASS(__CLASS__) \
template < template <class> class StoragePolicy > class __CLASS__ : \
public StoragePolicy<__CLASS__<StoragePolicy> >, \
public SlotProxyPolicy<__CLASS__<StoragePolicy> >, \
public AttributeProxyPolicy<__CLASS__<StoragePolicy> >, \
public RObjectMethods< __CLASS__<StoragePolicy> >
#endif
|