useDynLib(cluster, .registration=TRUE)

## S3 Generics:
export(clusplot, pltree, silhouette, volume)
## Normal functions (non-generics, non-methods):
## The original constructors:
export(agnes, clara, daisy, diana, fanny, mona, pam)
## and the rest
export(bannerplot, ellipsoidhull, ellipsoidPoints,
       clusGap, maxSE,
       medoids,
       lower.to.upper.tri.inds, upper.to.lower.tri.inds,
       meanabsdev, sizeDiss, sortSilhouette)

## Methods also useful as 'standalone functions':
export(predict.ellipsoid)
export(coef.hclust, coefHier)

importFrom("stats", as.hclust, as.dist, as.dendrogram, cmdscale,
           coef, cov.wt, dist,
           mahalanobis, median, na.omit,
           princomp, runif, setNames, var, weighted.mean)
## For now, we keep *depending* on 'stats' just so that
## S3 methods *.hclust, *.dist etc will work

importFrom("graphics",
           arrows, axis, barplot, boxplot,
           identify, lines, matplot, mtext,
           par, plot, points, polygon, rect, segments, text, title)

importFrom("grDevices", dev.interactive)

importFrom("utils", menu, str)

###---- Methods ---- all documented but not exported

## of own generics
S3method(clusplot, default)
S3method(clusplot, partition)
S3method(pltree, twins)
S3method(silhouette, default)
S3method(silhouette, clara)
S3method(silhouette, partition)
S3method(volume, ellipsoid)

## register all the method for generics elsewhere in case namespace is
## loaded but not currently attached.
# via matrix method (R "bug": needs a copy *in* cluster, -> R/silhouette.R):
S3method(as.data.frame, silhouette, as.data.frame.matrix)
##
S3method(as.dendrogram, twins)
S3method(coef, hclust)
S3method(coef, twins)

S3method(plot, agnes)
S3method(plot, diana)
S3method(plot, mona)
S3method(plot, partition)
S3method(plot, silhouette)
S3method(plot, clusGap)

#exported:
S3method(predict, ellipsoid)

S3method(print, agnes)
S3method(print, clara)
S3method(print, diana)
S3method(print, dissimilarity)
S3method(print, ellipsoid)
S3method(print, fanny)
S3method(print, mona)
S3method(print, pam)
S3method(print, clusGap)
S3method(print, summary.agnes)
S3method(print, summary.clara)
S3method(print, summary.diana)
S3method(print, summary.dissimilarity)
S3method(print, summary.fanny)
S3method(print, summary.mona)
S3method(print, summary.pam)
S3method(print, summary.silhouette)

S3method(summary, agnes)
S3method(summary, clara)
S3method(summary, diana)
S3method(summary, dissimilarity)
S3method(summary, fanny)
S3method(summary, mona)
S3method(summary, pam)
S3method(summary, silhouette)
