useDynLib(GenomicRanges)

import(methods)

import(BiocGenerics)

import(IRanges)

exportClasses(
    Constraint, ConstraintORNULL,
    Seqinfo,
    GenomicRanges, GenomicRangesORmissing, GRanges, GRangesList,
    GappedAlignments, GappedAlignmentPairs,
    SummarizedExperiment, GenomicRangesORGRangesList,
    GenomicRangesList, SimpleGenomicRangesList
)

export(
    validCigar, cigarOpTable,
    cigarToQWidth, cigarToWidth, cigarQNarrow, cigarNarrow,
    cigarToIRanges, cigarToIRangesListByAlignment, cigarToIRangesListByRName,
    queryLoc2refLoc, queryLocs2refLocs,
    splitCigar, cigarToRleList, cigarToCigarTable, summarizeCigarTable,

    constraint, "constraint<-",
    checkConstraint,

    seqinfo, "seqinfo<-",
    seqnames, "seqnames<-",
    seqlevels, "seqlevels<-",
    seqlengths, "seqlengths<-",
    isCircular, "isCircular<-",
    genome, "genome<-",
    Seqinfo,

    GRanges, GRangesList, GenomicRangesList,
    makeGRangesListFromFeatureFragments,
    compare,
    rname, "rname<-", cigar, qwidth, grglist, granges, grg, rglist, qnarrow,
    GappedAlignments, readGappedAlignments,
    first, last, left, right, isProperPair,
    GappedAlignmentPairs, readGappedAlignmentPairs,

    SummarizedExperiment,
    assays, "assays<-", assay, "assay<-", rowData, "rowData<-",
    colData, "colData<-", exptData, "exptData<-",

    flipQuery,
    selectEncodingWithCompatibleStrand,
    isCompatibleWithSplicing,
    isCompatibleWithSkippedExons, extractSkippedExonRanks,

    countGenomicOverlaps,

    keepSeqlevels, renameSeqlevels,

    summarizeOverlaps,
    Union, IntersectionNotEmpty, IntersectionStrict
)

exportMethods(
    length,
    names, "names<-",
    #constraint, "constraint<-",
    checkConstraint,
    seqinfo, "seqinfo<-",
    seqnames, "seqnames<-",
    seqlevels, "seqlevels<-",
    seqlengths, "seqlengths<-",
    isCircular, "isCircular<-",
    genome, "genome<-",
    strand, "strand<-",
    score,
    merge,
    coerce, as.data.frame, unlist,
    ranges, elementMetadata,
    "ranges<-", "elementMetadata<-",
    start, end, width, "start<-", "end<-", "width<-",
    "[", "[<-", c, seqselect, "seqselect<-", "$", "$<-", "[[", "[[<-",
    split, window,
    flank, resize, shift,
    disjoin, disjointBins, gaps, range, reduce, isDisjoint, map,
    distance,
    duplicated, unique, order, sort, rank, "==", "<=", ">=", "<", ">",
    coverage,
    union, intersect, setdiff,
    punion, pintersect, psetdiff, pgap,
    findOverlaps, countOverlaps, match, "%in%",
    encodeOverlaps, isCompatibleWithSplicing,
    isCompatibleWithSkippedExons, extractSkippedExonRanks,
    show,
    rname, "rname<-", cigar, qwidth, grglist, granges, rglist, ngap,
    qnarrow,
    first, last, left, right, isProperPair,
    dimnames, "dimnames<-", precede, follow,
    countGenomicOverlaps,
    keepSeqlevels, renameSeqlevels,
    summarizeOverlaps 
)

