useDynLib(CNEr, .registration = TRUE)
import(BiocGenerics)
### -----------------------------------------------------------------
### Import S4 classes defined in other packages
###
importClassesFrom(methods, ANY, character, integer, missing)
importClassesFrom(S4Vectors, List, characterORNULL, DataFrame)
importClassesFrom(GenomicRanges, GRanges)
importClassesFrom(Biostrings, DNAStringSet)

### -----------------------------------------------------------------
### Import S4 methods defined in other packages
###
importMethodsFrom(rtracklayer, import.bed)
importMethodsFrom(GenomeInfoDb, seqnames, seqlengths, seqinfo, as.data.frame)
importMethodsFrom(GenomicRanges, reduce, "strand<-", strand, start, end,
                                 findOverlaps, coverage, grglist)
importMethodsFrom(XVector, subseq)
importMethodsFrom(DBI, dbGetQuery, dbConnect, dbDisconnect, dbWriteTable)
importMethodsFrom(methods, initialize, show)
importMethodsFrom(Biostrings, mismatchSummary)
importMethodsFrom(S4Vectors, Rle, isConstant, runmean, elementNROWS, first,
                  showAsCell, extractROWS, mcols, "mcols<-")
importMethodsFrom(IRanges, slice, ranges)
importMethodsFrom(GenomicAlignments, last)

### -----------------------------------------------------------------
### Import ordinary functions, variables in other packages
###
importFrom(GenomeInfoDb, Seqinfo)
importFrom(GenomicRanges, GRanges)
importFrom(GenomicAlignments, explodeCigarOps, CIGAR_OPS, explodeCigarOpLengths)
importFrom(Biostrings, DNAStringSet, DNA_BASES, fasta.seqlengths)
importFrom(RSQLite, SQLite)
importFrom(methods, is, new)
importFrom(rtracklayer, TwoBitFile)
importFrom(readr, read_tsv)
importFrom(IRanges, IRanges)
importFrom(S4Vectors, .Call2, queryHits, subjectHits, DataFrame,
           normalizeSingleBracketSubscript, normalizeDoubleBracketSubscript,
           isTRUEorFALSE, isSingleString)
importFrom(tools, file_ext)
importFrom(parallel, mcmapply)
importFrom(utils, download.file, read.table, write.table)
importFrom("stats", "setNames")

### -----------------------------------------------------------------
### Export S4 classes defined in CNEr
###
exportClasses(Axt,
              CNE,
              GRangePairs)

### -----------------------------------------------------------------
### Export S4 methods for generics not defined in CNEr
###
exportMethods(
  "[", 
  c,
  
  ## AllClasses.r
  length,
  score,
  nchar,
  names, seqnames, "names<-", strand,
  
  ## GRangePairs-class.R
  first, last, grglist, seqinfo,

  ## Axt-methods.R
  mismatchSummary
)

### -----------------------------------------------------------------
### Export non-generic functions
###

export(
  ## utils.r
  reverseCigar,
  binFromCoordRange,
  binRangesFromCoordRange,
  binRestrictionString,
  readCNERangesFromSQLite,
  #queryAnnotationSQLite,
  fetchChromSizes,

  ## AllClasses.r
  Axt,
  CNE,
  GRangePairs,

  # io.r
  readBed,
  readAxt,
  axtInfo,
  writeAxt,

  ## ceScan.r
  ceScan, 
  cneMerge,
  blatCNE,
  ceScanOneStep,

  ## makeGeneDbFromUCSC.r
  #supportedUCSCtables,
  #queryrefGene, queryknownGene, queryensGene,
  #makeGeneDbFromUCSC,

  ## DB.R
  queryCNEData,
  
  ## WholeGenomeAlignment.R
  lastz,
  lavToPsl,
  scoringMatrix,
  axtChain,
  chainMergeSort,
  chainPreNet,
  chainNetSyntenic,
  netToAxt,
  lastal,

  ## GRB.R
  makeGRBs,
  
  ## AssemblyStats.R
  N50, N90

)

### -----------------------------------------------------------------
### Export S4 generics defined in CNEr + export corresponding methods
###

exportMethods(
  ## AllClasses.r
  targetRanges, queryRanges,
  targetSeqs, querySeqs,
  symCount,
  subAxt,
  assembly1, assembly2,
  CNE1, CNE2,
  thresholds,
  CNEMerged, CNERepeatsFiltered,
  
  ## utils.r
  saveCNEToSQLite,

  ## plot.r
  CNEDensity
)