useDynLib(simFrame)

# import packages
import(Rcpp)
import(lattice)
import(parallel)
import(methods)

# import specific functions from packages
importFrom(stats, aggregate)
importFrom(stats4, plot, summary)
importFrom(utils, head, tail)

# S3 functions
export(
    brewer,
#    clusterAssign,
    ContControl,
    DARContControl,
    DCARContControl,
    DataControl,
    inclusionProb,
    midzuno,
    NAControl,
    runSim,
    SampleControl, 
    SampleSetup,
    SimControl,
#    SimResult, 
    SimResults,
    SummarySampleSetup, 
    TwoStageControl,
    simSample,
    Strata,
    srs,
    tille,
    ups
)

# S4 classes
exportClasses(
    BasicVector,
    ContControl,
    DARContControl,
    DCARContControl,
    DataControl,
    NAControl,
    NumericMatrix,
    OptBasicVector,
    OptCall,
    OptCharacter,
    OptContControl,
    OptDataControl,
    OptNAControl,
    OptNumeric,
    OptSampleControl,
    SampleControl,
    SampleSetup,
    SimControl,
#    SimResult,
    SimResults,
    Strata,
    SummarySampleSetup,
    TwoStageControl,
    VirtualContControl,
    VirtualDataControl,
    VirtualNAControl,
    VirtualSampleControl
)

# accessor methods for slots
exportMethods(
    getAdd,
    getAux,
    setAux,
    getCall,
    getCollect,
    setCollect,
    getColnames,
    setColnames,
    getContControl,
    setContControl,
    getControl,
    getDataControl,
    getDesign,
    setDesign,
    getDistribution,
    setDistribution,
    getDots,
    setDots,
    getEpsilon,
    setEpsilon,
    getGrouping,
    setGrouping,
    getFun,
    setFun,
    getIndices,
    getIntoContamination,
    setIntoContamination,
    getK,
    setK,
    getLegend,
    getNAControl,
    setNAControl,
    getNArate,
    setNArate,
    getNr,
    getNrep,
    getProb,
    setProb,
    getSAE,
    setSAE,
    getSampleControl,
    getSeed,
    getSize,
    setSize,
    getSplit,
    getTarget,
    setTarget,
    getValues
)

# S4 generics
exportMethods(
    aggregate,
    clusterSetup,
    clusterRunSimulation,
    contaminate,
    draw,
    generate,
    getStrataLegend,
    getStrataSplit,
    getStrataTable,
    getStratumSizes,
    getStratumValues,
    head,
    plot,
    runSimulation,
    setNA,
    setup,
    show,
    simApply,
    simBwplot,
    simDensityplot,
    simSapply,
    simXyplot,
    stratify,
    summary,
    tail
)
