useDynLib(data.table)

## For S4-ization
import(methods)
exportClasses(data.table, IDate, ITime)
##

export(data.table, tables, setkey, key, "key<-", haskey, J, CJ, SJ, copy)
export(as.data.table,is.data.table,test.data.table,last,like,"%like%",between,"%between%")
export(timetaken)

export(cbind,rbind)
# .Internal dispatch in the base functions prevents both cbind(DT,DF) and cbind(DT,vector)
# from working using S3 methods cbind.data.table and cbind.data.frame.

## utility functions for testing with test_that
## export(is_equivalent_dt, expect_equivalent_dt)

S3method("[", data.table)
S3method("[<-", data.table)
# S3method("[[", data.table)
# S3method("[[<-", data.table)
S3method("$<-", data.table)
S3method(print, data.table)
S3method(as.data.table, data.table)
S3method(as.data.table, data.frame)
S3method(as.data.table, matrix)
S3method(as.data.frame, data.table)
S3method(as.matrix, data.table)
# S3method(cbind, data.table)  # see comment above. 
# S3method(rbind, data.table)
S3method(dim, data.table)
S3method(dimnames, data.table)
S3method("dimnames<-", data.table)
S3method("names<-", data.table)
S3method(duplicated, data.table)
S3method(unique, data.table)
S3method(merge, data.table)
S3method(transform, data.table)
S3method(within, data.table)
S3method(is.na, data.table)
S3method(format, data.table)
S3method(Ops, data.table)
S3method(all.equal, data.table)

import(utils)
S3method(tail, data.table)
S3method(head, data.table)
import(stats)
S3method(na.omit, data.table)

# IDateTime support:
export(as.IDate,as.ITime,IDateTime)
export(hour,yday,wday,mday,week,month,quarter,year)

export(as.chron.IDate,as.chron.ITime)

S3method("[", ITime)
S3method(as.character, ITime)
## S3method(as.chron, IDate)
## S3method(as.chron, ITime)
S3method(as.Date, IDate)
S3method(as.IDate, Date)
S3method(as.IDate, default)
S3method(as.ITime, character)
S3method(as.ITime, default)
S3method(as.ITime, POSIXlt)
S3method(as.ITime, times)
S3method(as.list, IDate)
S3method(as.POSIXct, IDate)
S3method(as.POSIXct, ITime)
S3method(as.POSIXlt, ITime)
S3method(c, IDate)
S3method(cut, IDate)
S3method(format, ITime)
S3method(IDateTime, default)
S3method(mean, IDate)
S3method(print, ITime)
S3method(rep, IDate)
S3method(rep, ITime)
S3method(round, IDate)
S3method(seq, IDate)
S3method(split, IDate)


# [.factor
# c.factor
# duplist
# getdots
# NCOL
# NROW
# sortedmatch
# take
# trim
# which.first
# which.last

