
useDynLib(robustbase, .registration=TRUE)# -> R >= 2.3.0

importFrom("graphics", plot)# < more ?
importFrom("stats", anova, coef, cov, family, fitted,
	   logLik, model.frame, predict, residuals, terms, vcov)
## ^^^^ MASS has a bit more; take it as example

##no longer: importFrom("MASS", psi.bisquare, psi.hampel, psi.huber)

## MASS has many rlm S3 methods; should we use some of them - for rnls() ?!
## we also currently use MASS::cov.rob(); but probably only temporarily

## Functions defined in this package
export(Sn, Qn, Qn.old,
       s_Sn, s_Qn, s_mad, s_IQR,

       summarizeRobWeights,
       wgt.himedian,

       h.alpha.n,
       covMcd,
       ltsReg,
       tolEllipsePlot,
       ## RENAME ?!? :
       covPlot, ltsPlot,
       ## NO! ddplot, distplot, chi2qqplot
       rrcov.control,##  << RENAME --- FIXME

       huberM,
       covOGK, covGK, hard.rejection, scaleTau2,
       psiFunc, huberPsi,
## Not yet:
##     hampelPsi,
##     tukeyPsi, # = biweight / bisquare
       tukeyChi, tukeyPsi1, # <- used by lmrob.*()

       lmrob, lmrob.fit,
       lmrob.fit.MM, lmrob..M..fit, lmrob..D..fit,
       lmrob.S, lmrob.lar, lmrob.M.S,
       lmrob.control,
       splitFrame,

       mc, # Mia Hubers's medcouple
       adjbox,
       adjboxStats,
       adjOutlyingness,

       glmrob,
       nlrob,
       glmrobMqle.control
       )


## S3 methods for ``our own'' S3 generics:
S3method(ltsReg, default)
S3method(ltsReg, formula)

S3method(mc, default)
S3method(adjbox, default)
S3method(adjbox, formula)


## Register all the methods for S3 generics elsewhere
## in case namespace is loaded but not currently attached.

S3method(anova, lmrob)
S3method(anova, glmrob)

S3method(model.matrix, lmrob)

S3method(formula, nlrob)
S3method(fitted, nlrob)
S3method(plot, lts)
S3method(plot, mcd)
S3method(plot, lmrob)
S3method(predict, lmrob)
S3method(predict, glmrob)
S3method(predict, nlrob)

S3method(print, glmrob)
S3method(print, lts)
S3method(print, mcd)
S3method(print, nlrob)
S3method(print, lmrob)
S3method(print, summary.glmrob)
S3method(print, summary.lmrob)
S3method(print, summary.nlrob)
S3method(print, summary.lts)

S3method(residuals, nlrob)
S3method(residuals, glmrob)

S3method(summary, glmrob)
S3method(summary, lmrob)
S3method(summary, lts)
S3method(summary, mcd)
S3method(summary, nlrob)

S3method(vcov, glmrob)
S3method(vcov, lmrob)
##not there: S3method(print, summary.mcd)

if(getRversion() < "2.13") {
    export(nobs)
    S3method(nobs, lm)
    S3method(nobs, glm)
    if(getRversion() < "2.12") {
	export(droplevels)
	S3method(droplevels, factor)
	S3method(droplevels, data.frame)
    }
}

## S4 Generics {only those defined in this package}:
export(
       chgDefaults
       )

exportClasses(
              "functionX",   # function(x, <tune_par>): VECTORIZED in 'x'
              "functionXal", # a functional: function of tuning par.s only
              "psi_func"     # containing  rho(), psi(), psi'(), ...
              )

exportMethods(
              chgDefaults
              )

