| 30 | template <typename CLASS> |
| 31 | template <typename T> |
| 32 | void DottedPairImpl<CLASS>::push_back( const T& object){ |
| 33 | CLASS& ref = static_cast<CLASS&>(*this) ; |
| 34 | if( ref.isNULL() ){ |
| 35 | ref.set__( grow( object, ref.get__() ) ) ; |
| 36 | } else { |
| 37 | SEXP x = ref.get__() ; |
| 38 | /* traverse the pairlist */ |
| 39 | while( !Rf_isNull(CDR(x)) ){ |
| 40 | x = CDR(x) ; |
| 41 | } |
| 42 | Shield<SEXP> tail( grow( object, R_NilValue ) ); |
| 43 | SETCDR( x, tail ) ; |
| 44 | } |
| 45 | } |
| 46 | |
| 47 | template <typename CLASS> |
| 48 | template <typename T> |