useDynLib("matrixStats")

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# IMPORTS
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
importFrom("methods", "setMethod")
importFrom("methods", "setGeneric")
importFrom("methods", "loadMethod")

importFrom("R.methodsS3", "setMethodS3")
importFrom("R.methodsS3", "throw")
importFrom("R.methodsS3", "pkgStartupMessage")


# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# EXPORTS
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
export("allocVector")
export("allocMatrix")
export("allocArray")
export("anyMissing")
export("binCounts")
export("binMeans")
export("colAlls")
export("colAnys")
export("colAvgsPerRowSet")
export("colCollapse")
export("colCounts")
export("colCummins")
export("colCummaxs")
export("colCumprods")
export("colCumsums")
export("colDiffs")
export("colIQRs")
export("colLogSumExps")
export("colMads")
export("colMaxs")
export("colMedians")
export("colMins")
export("colOrderStats")
export("colProds")
export("colQuantiles")
export("colRanges")
export("colRanks")
export("colSds")
export("colTabulates")
export("colVars")
export("colWeightedMeans")
export("colWeightedMedians")
export("indexByRow")
export("logSumExp")
export("madDiff")
export("meanOver")
export("product")
export("rowAlls")
export("rowAnys")
export("rowAvgsPerColSet")
export("rowCollapse")
export("rowCounts")
export("rowCummins")
export("rowCummaxs")
export("rowCumprods")
export("rowCumsums")
export("rowDiffs")
export("rowIQRs")
export("rowLogSumExps")
export("rowMads")
export("rowMaxs")
export("rowMedians")
export("rowMins")
export("rowOrderStats")
export("rowProds")
export("rowQuantiles")
export("rowRanges")
export("rowRanks")
export("rowSds")
export("rowTabulates")
export("rowVars")
export("rowWeightedMeans")
export("rowWeightedMedians")
export("sdDiff")
export("signTabulate")
export("sumOver")
export("x_OP_y")
export("t_tx_OP_y")
export("varDiff")
export("weightedMad")
export("weightedMedian")
export("weightedSd")
export("weightedVar")


# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# DECLARATIONS
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Vector methods
S3method("binCounts", "default")
S3method("binMeans", "default")

# Matrix methods
S3method("rowAvgsPerColSet", "matrix")
S3method("colAvgsPerRowSet", "matrix")
S3method("rowWeightedMeans", "matrix")
S3method("colWeightedMeans", "matrix")
S3method("rowWeightedMedians", "matrix")
S3method("colWeightedMedians", "matrix")
S3method("rowTabulates", "matrix")
S3method("colTabulates", "matrix")
S3method("rowCollapse", "matrix")
S3method("colCollapse", "matrix")

# Matrix and vector methods
# These are implemented as "default" methods for the purpose
# of transitioning them to plain functions in a future version
# as soon as we know there are no packages relying on them
# being generic functions.
S3method("rowCounts", "default")
S3method("colCounts", "default")
S3method("rowAnys", "default")
S3method("colAnys", "default")
S3method("rowAlls", "default")
S3method("colAlls", "default")
