Skip to content

Commit

Permalink
introduce DateSubsetVectorVisitor. #1204
Browse files Browse the repository at this point in the history
  • Loading branch information
romainfrancois committed Aug 14, 2015
1 parent a90f778 commit 7a81db0
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 0 deletions.
53 changes: 53 additions & 0 deletions inst/include/dplyr/SubsetVectorVisitorImpl.h
Expand Up @@ -152,6 +152,59 @@ namespace dplyr {

} ;

class DateSubsetVectorVisitor : public SubsetVectorVisitor {
public:

DateSubsetVectorVisitor( SEXP data ) : impl(0){
if( TYPEOF(data) == INTSXP ) {
impl = new SubsetVectorVisitorImpl<INTSXP>(data) ;
} else if( TYPEOF(data) == REALSXP ) {
impl = new SubsetVectorVisitorImpl<REALSXP>(data) ;
} else {
stop( "" ) ;
}
}

~DateSubsetVectorVisitor( ){
delete impl ;
}

virtual SEXP subset( const Rcpp::IntegerVector& index ) const {
return impl->subset( index ) ;
}

virtual SEXP subset( const std::vector<int>& index ) const {
return impl->subset( index ) ;
}

virtual SEXP subset( const ChunkIndexMap& index ) const {
return impl->subset(index) ;
}

virtual SEXP subset( const Rcpp::LogicalVector& index ) const {
return impl->subset( index ) ;
}

virtual SEXP subset( EmptySubset index ) const {
return impl->subset( index ) ;
}

virtual int size() const {
return impl->size() ;
}

virtual std::string get_r_type() const {
return impl->get_r_type() ;
}

private:
SubsetVectorVisitor* impl ;
DateSubsetVectorVisitor( const DateSubsetVectorVisitor& ) ;

} ;



}

#endif
4 changes: 4 additions & 0 deletions inst/include/dplyr/subset_visitor.h
Expand Up @@ -18,6 +18,10 @@ namespace dplyr {
}
}

if( Rf_inherits(vec, "Date") ){
return new DateSubsetVectorVisitor(vec) ;
}

switch( TYPEOF(vec) ){
case CPLXSXP:
return new SubsetVectorVisitorImpl<CPLXSXP>( vec ) ;
Expand Down

0 comments on commit 7a81db0

Please sign in to comment.