### Visible functions:
export("allPerms",
       "as.allPerms",
       "Blocks",
       "check",
       "getBlocks",
       "getWithin",
       "getStrata",
       "getType",
       "getMirror",
       "getConstant",
       "getPlots",
       "getRow",
       "getCol",
       "getDim",
       "getNperm",
       "getMaxperm",
       "getMinperm",
       "getComplete",
       "getMake",
       "getObserved",
       "getAllperms",
       "getControl",
       "getHow",
       "how",
       "numPerms",
       "permute",
       "Plots",
       "setBlocks<-",
       "setWithin<-",
       "setStrata<-",
       "setType<-",
       "setMirror<-",
       "setConstant<-",
       "setPlots<-",
       "setRow<-",
       "setCol<-",
       "setDim<-",
       "setNperm<-",
       "setMaxperm<-",
       "setMinperm<-",
       "setComplete<-",
       "setMake<-",
       "setObserved<-",
       "setAllperms<-",
       "shuffle",
       "shuffleFree",
       "shuffleGrid",
       "shuffleSeries",
       "shuffleSet",
       "shuffleStrata",
       "Within"
       )

### Imports: nobs() only exists in R 2.13.0 for import. We define the
### same nobs() generic in permute for export in older R.
if (getRversion() >= "2.13.0") {
    importFrom("stats", "nobs")
} else {
    export(nobs)
}

### After R 3.2.x, R-Devel required all non-Base functions to be
### imported
importFrom("stats", "getCall", "runif", "update")

### S3 Methods
S3method("as.matrix", "allPerms")
S3method("as.matrix", "permutationMatrix")
S3method("update", "how")
S3method("update", "Plots")
## print methods
S3method("print", "allPerms")
S3method("print", "check")
S3method("print", "how")
S3method("print", "permutationMatrix")
S3method("print", "summary.allPerms")
S3method("print", "summary.check")
## summary methods
S3method("summary", "allPerms")
S3method("summary", "check")
## nobs() methods
S3method("nobs", "numeric")
S3method("nobs", "integer")
S3method("nobs", "matrix")
S3method("nobs", "data.frame")
S3method("nobs", "factor")
S3method("nobs", "character")
## getFoo methods
S3method("getBlocks", "default")
S3method("getBlocks", "how")
S3method("getPlots", "default")
S3method("getPlots", "how")
S3method("getWithin", "default")
S3method("getWithin", "how")
S3method("getStrata", "default")
S3method("getStrata", "how")
S3method("getStrata", "Plots")
S3method("getType", "default")
S3method("getType", "how")
S3method("getType", "Plots")
S3method("getType", "Within")
S3method("getMirror", "default")
S3method("getMirror", "how")
S3method("getMirror", "Plots")
S3method("getMirror", "Within")
S3method("getConstant", "default")
S3method("getConstant", "how")
S3method("getConstant", "Within")
S3method("getNperm", "default")
S3method("getNperm", "how")
S3method("getMaxperm", "default")
S3method("getMaxperm", "how")
S3method("getMinperm", "default")
S3method("getMinperm", "how")
S3method("getComplete", "default")
S3method("getComplete", "how")
S3method("getRow", "default")
S3method("getRow", "how")
S3method("getRow", "Plots")
S3method("getRow", "Within")
S3method("getCol", "default")
S3method("getCol", "how")
S3method("getCol", "Plots")
S3method("getCol", "Within")
S3method("getDim", "default")
S3method("getDim", "how")
S3method("getDim", "Plots")
S3method("getDim", "Within")
S3method("getMake", "default")
S3method("getMake", "how")
S3method("getObserved", "default")
S3method("getObserved", "how")
S3method("getAllperms", "default")
S3method("getAllperms", "how")
S3method("getControl", "default")
S3method("getControl", "allPerms")

## setFoo methods
S3method("setBlocks<-", "default")
S3method("setBlocks<-", "how")
S3method("setPlots<-", "default")
S3method("setPlots<-", "how")
S3method("setWithin<-", "default")
S3method("setWithin<-", "how")
S3method("setStrata<-", "default")
S3method("setStrata<-", "how")
S3method("setStrata<-", "Plots")
S3method("setType<-", "default")
S3method("setType<-", "how")
S3method("setType<-", "Within")
S3method("setType<-", "Plots")
S3method("setMirror<-", "default")
S3method("setMirror<-", "how")
S3method("setMirror<-", "Within")
S3method("setMirror<-", "Plots")
S3method("setConstant<-", "default")
S3method("setConstant<-", "how")
S3method("setConstant<-", "Within")
S3method("setConstant<-", "Plots")
S3method("setNperm<-", "default")
S3method("setNperm<-", "how")
S3method("setMaxperm<-", "default")
S3method("setMaxperm<-", "how")
S3method("setMinperm<-", "default")
S3method("setMinperm<-", "how")
S3method("setComplete<-", "default")
S3method("setComplete<-", "how")
S3method("setRow<-", "default")
S3method("setRow<-", "how")
S3method("setRow<-", "Within")
S3method("setRow<-", "Plots")
S3method("setCol<-", "default")
S3method("setCol<-", "how")
S3method("setCol<-", "Within")
S3method("setCol<-", "Plots")
S3method("setDim<-", "default")
S3method("setDim<-", "how")
S3method("setDim<-", "Within")
S3method("setDim<-", "Plots")
S3method("setMake<-", "default")
S3method("setMake<-", "how")
S3method("setObserved<-", "default")
S3method("setObserved<-", "how")
S3method("setAllperms<-", "default")
S3method("setAllperms<-", "how")