S3method(as.matrix,DenseMatrix)
S3method(as.matrix,InfinitySparseMatrix)
S3method(print,optmatch)
S3method(summary,optmatch)
export(antiExactMatch)
export(caliper)
export(distUnion)
export(full)
export(fullmatch)
export(mahal.dist)
export(match_on)
export(maxCaliper)
export(minExactMatch)
export(num_eligible_matches)
export(optmatch_restrictions)
export(optmatch_same_distance)
export(pair)
export(pairmatch)
export(pscore.dist)
export(scores)
export(subdim)
import(digest)
useDynLib(optmatch, .registration = TRUE)

export(mdist,
       matched.distances,
       matched,
       matchfailed,
       unmatched,
       maxControlsCap,
       minControlsCap,
       relaxinfo,
       stratumStructure,
       fill.NAs,
       exactMatch)

import(methods)
importFrom(stats, getCall)
importFrom(graphics, boxplot)

### S3 Stuff
S3method(Ops, optmatch.dlist)
S3method(abs, optmatch.dlist)
S3method(print, optmatch.dlist)
S3method(getCall, optmatch.dlist)
S3method(dim, optmatch.dlist)
S3method(dimnames, optmatch.dlist)
S3method(as.matrix, optmatch.dlist)

S3method("[", optmatch)
S3method(print, summary.optmatch)
S3method(dim, InfinitySparseMatrix)
S3method(subset, InfinitySparseMatrix)

S3method(cbind, InfinitySparseMatrix)
S3method(rbind, InfinitySparseMatrix)
S3method(cbind, BlockedInfinitySparseMatrix)
S3method(rbind, BlockedInfinitySparseMatrix)
S3method(t, InfinitySparseMatrix)
S3method(t, BlockedInfinitySparseMatrix)

S3method(mdist, glm)
S3method(mdist, optmatch.dlist)
S3method(mdist, formula)
S3method(mdist, "function")
S3method(mdist, numeric)
S3method(mdist, bigglm)

S3method(match_on, "function")
S3method(match_on, formula)
S3method(match_on, InfinitySparseMatrix)
S3method(match_on, matrix)
S3method(match_on, glm)
S3method(match_on, bigglm)
S3method(match_on, numeric)

S3method(fullmatch, default)
S3method(fullmatch, numeric)
S3method(fullmatch, InfinitySparseMatrix)
S3method(fullmatch, BlockedInfinitySparseMatrix)
S3method(fullmatch, optmatch.dlist)
S3method(fullmatch, matrix)

S3method(pairmatch, default)
S3method(pairmatch, numeric)
S3method(pairmatch, InfinitySparseMatrix)
S3method(pairmatch, BlockedInfinitySparseMatrix)
S3method(pairmatch, optmatch.dlist)
S3method(pairmatch, matrix)

S3method(stratumStructure, default)
S3method(stratumStructure, optmatch)

S3method(effectiveSampleSize, table)
S3method(effectiveSampleSize, factor)

S3method(boxplot, glm)
S3method(boxplot, bigglm)

S3method(subdim, InfinitySparseMatrix)
S3method(subdim, BlockedInfinitySparseMatrix)
S3method(subdim, matrix)

S3method(num_eligible_matches, optmatch.dlist)
S3method(num_eligible_matches, matrix)
S3method(num_eligible_matches, InfinitySparseMatrix)
S3method(num_eligible_matches, BlockedInfinitySparseMatrix)

### S4 Stuff
exportClasses(InfinitySparseMatrix, BlockedInfinitySparseMatrix)
