useDynLib(Biostrings)

import(methods)
importFrom(utils, "head", "tail")
import(IRanges)


### ==========================================================================
### BASIC CONTAINERS
### --------------------------------------------------------------------------
###   IUPAC_CODE_MAP.R
###   AMINO_ACID_CODE.R
###   GENETIC_CODE.R
###   XStringCodec-class.R
###   XString-class.R
###   XStringSet-class.R
###   XStringViews-class.R
###   XStringViews-constructors.R
###   MaskedXString-class.R

exportClasses(
    XString, BString, DNAString, RNAString, AAString,
    XStringSet, BStringSet, DNAStringSet, RNAStringSet, AAStringSet,
    XStringViews,
    MaskedXString, MaskedBString, MaskedDNAString, MaskedRNAString, MaskedAAString
)

export(
    ## IUPAC_CODE_MAP.R + AMINO_ACID_CODE.R + GENETIC_CODE.R:
    IUPAC_CODE_MAP, mergeIUPACLetters,
    AMINO_ACID_CODE, GENETIC_CODE,
    RNA_GENETIC_CODE,

    ## XStringCodec-class.R:
    DNA_BASES, RNA_BASES, DNA_ALPHABET, RNA_ALPHABET, AA_ALPHABET,

    ## XString-class.R:
    BString, DNAString, RNAString, AAString, alphabet,

    ## XStringSet-class.R:
    BStringSet, DNAStringSet, RNAStringSet, AAStringSet,

    ## XStringViews-constructors.R:
    adjacentViews, XStringViews,

    ## Old stuff (Defunct or Deprecated):
    BStringViews
)

exportMethods(
    initialize, length,
    alphabet,
    names, "[", "[[", rep, append,
    show,
    "==", "!=", duplicated, order, sort,
    coerce, as.character, as.matrix, as.list, toString, toComplex,
    nchar,
    width, narrow, reduce, gaps
)


### ==========================================================================
### UTILITIES
### --------------------------------------------------------------------------
###   readFASTA.R
###   XStringSet-io.R
###   letter.R
###   subXString.R
###   alphabetFrequency.R
###   chartr.R
###   reverse.R
###   translate.R
###   toComplex.R
###   replaceLetterAt.R
###   injectHardMask.R

export(
    ## readFASTA.R:
    fasta.info, readFASTA, writeFASTA,

    ## XStringSet-io.R:
    FASTArecordsToCharacter, CharacterToFASTArecords,
    FASTArecordsToXStringViews, XStringSetToFASTArecords,
    read.XStringViews,
    read.BStringSet, read.DNAStringSet, read.RNAStringSet, read.AAStringSet,
    write.XStringSet, write.XStringViews,

    ## letter.R:
    letter,

    ## subXString.R:
    substr, substring,

    ## alphabetFrequency.R:
    alphabetFrequency, hasOnlyBaseLetters, uniqueLetters,
    strrev, mkAllStrings,
    oligonucleotideFrequency,
    dinucleotideFrequency, trinucleotideFrequency,
    oligonucleotideTransitions,

    ## chartr.R:
    chartr,

    ## reverse.R:
    complement, reverseComplement,

    ## translate.R:
    transcribe, cDNA, dna2rna, rna2dna,
    codons, translate,

    ## toComplex.R:
    toComplex,

    ## replaceLetterAt.R:
    replaceLetterAt, .inplaceReplaceLetterAt,

    ## injectHardMask.R:
    injectHardMask,

    ## Old stuff (Defunct or Deprecated):
    FASTArecordsToBStringViews, read.BStringViews, write.BStringViews,
    subXString, subBString,
    replaceLetterAtLoc
)

exportMethods(
    initialize, length, names, "[", "[[", rep,
    show,
    "==", "!=", duplicated, order, sort,
    coerce, as.character, as.matrix, as.list, toString, toComplex,
    nchar,

    ## Methods for objects implementing an IRanges-like interface
    start, width, end, narrow, reduce, gaps,

    ## XString, XStringViews and MaskedXString objects
    XString, subseq,
    Views, XStringViews,
    unmasked, masks, "masks<-", maskedwidth, maskedratio,

    ## Utilities
    letter,
    substr, substring,
    alphabetFrequency, hasOnlyBaseLetters, uniqueLetters,
    oligonucleotideFrequency,
    chartr,
    reverse, complement, reverseComplement,
    codons, translate,
    replaceLetterAt,
    maskMotif,
    injectHardMask,

    ## Old stuff (Defunct or Deprecated):
    as.complex
)


### ==========================================================================
### STRING MATCHING
### --------------------------------------------------------------------------
###   SparseList-class.R
###   Dups-class.R
###   MIndex-class.R
###   match-utils.R
###   matchPattern.R
###   matchPattern.BOC.R
###   matchPattern.BOC2.R
###   matchLRPatterns.R
###   matchProbePair.R
###   matchPWM.R
###   findPalindromes.R
###   PDict-class.R
###   matchPDict.R

exportClasses(
    #SparseList,
    Dups,
    MIndex, ByPos_MIndex,
    BOC_SubjectString, BOC2_SubjectString,
    PreprocessedTB, Twobit, ACtree, ACtree2,
    PDict3Parts, PDict, TB_PDict, MTB_PDict
)

export(
    ## MIndex-class.R
    startIndex, endIndex, countIndex,
    extractAllMatches,

    ## match-utils.R
    neditStartingAt, neditEndingAt, neditAt,
    isMatchingStartingAt, isMatchingEndingAt, isMatchingAt,
    mismatch, nmatch, nmismatch,

    ## matchPattern.R
    gregexpr2, matchPattern, countPattern, vmatchPattern, vcountPattern,

    ## maskMotif.R
    maskMotif, mask,

    ## matchLRPatterns.R
    matchLRPatterns,

    ## matchProbePair.R
    matchProbePair,

    ## matchPWM.R
    maxWeights, maxScore,
    PWMscore, matchPWM, countPWM,

    ## findPalindromes.R
    findPalindromes, findComplementedPalindromes,
    palindromeArmLength, complementedPalindromeArmLength,
    palindromeLeftArm, complementedPalindromeLeftArm,
    palindromeRightArm, complementedPalindromeRightArm,

    ## PDict-class.R + matchPDict.R
    tb, tb.width, patternFrequency, PDict,
    matchPDict, countPDict, whichPDict, vmatchPDict, vcountPDict,
 
    ## Old stuff (Defunct or Deprecated):
    nmismatchStartingAt, nmismatchEndingAt, isMatching,
    matchDNAPattern
)

exportMethods(
    ls,
    length, names, "names<-", show, "[[",
    startIndex, endIndex, countIndex, unlist,
    neditStartingAt, neditEndingAt,
    isMatchingStartingAt, isMatchingEndingAt,
    mismatch, nmatch, nmismatch,
    coverage,
    matchPattern, countPattern, vcountPattern,
    matchLRPatterns,
    matchProbePair,
    findPalindromes, findComplementedPalindromes,
    palindromeArmLength, complementedPalindromeArmLength,
    palindromeLeftArm, complementedPalindromeLeftArm,
    palindromeRightArm, complementedPalindromeRightArm,

    head, tb, tb.width, tail, patternFrequency, PDict,
    matchPDict, countPDict, whichPDict, vcountPDict
)


### ==========================================================================
### STRING ALIGNMENT
### --------------------------------------------------------------------------
###   XStringPartialMatches-class.R
###   XStringQuality-class.R
###   QualityScaledXStringSet.R
###   InDel-class.R
###   AlignedXStringSet-class.R
###   PairwiseAlignedFixedSubject-class.R
###   align-utils.R
###   pmatchPattern.R
###   pairwiseAlignment.R
###   stringDist.R
###   needwunsQS.R

exportClasses(
    XStringPartialMatches,
    XStringQuality, PhredQuality, SolexaQuality,
    QualityScaledXStringSet,
    QualityScaledBStringSet, QualityScaledDNAStringSet,
    QualityScaledRNAStringSet, QualityScaledAAStringSet,
    InDel,
    AlignedXStringSet, QualityAlignedXStringSet,
    PairwiseAlignedFixedSubject, PairwiseAlignedFixedSubjectSummary
)

export(
    ## XStringPartialMatches-class.R:
    subpatterns, pattern,

    ## XStringQuality-class.R:
    PhredQuality, SolexaQuality,

    ## QualityScaledXStringSet.R:
    quality,
    QualityScaledBStringSet, QualityScaledDNAStringSet,
    QualityScaledRNAStringSet, QualityScaledAAStringSet,

    ## InDel-class.R:
    insertion, deletion,

    ## AlignedXStringSet-class.R:
    unaligned, aligned, indel, nindel,

    ## PairwiseAlignedFixedSubject-class.R:
    type, score, pid,

    ## align-utils.R:
    mismatchTable, mismatchSummary,
    compareStrings, consensusMatrix, consensusString,

    ## pmatchPattern.R:
    lcprefix, lcsuffix, pmatchPattern, lcsubstr,

    ## pairwiseAlignment.R:
    nucleotideSubstitutionMatrix,
    errorSubstitutionMatrices,
    qualitySubstitutionMatrices,
    pairwiseAlignment,

    ## stringDist.R:
    stringDist,

    ## Old stuff (Defunct or Deprecated):
    consmat, alignScore, needwunsQS
)

exportMethods(
    initialize, length, "[", rep,
    coerce, as.integer, as.numeric, as.character, as.matrix, toString,
    show, summary,
    start, end, width,
    Views,
    subpatterns, pattern,
    quality,
    insertion, deletion,
    unaligned, aligned, indel, nindel,
    type, score, pid,
    mismatch, nmatch, nmismatch,
    mismatchTable, mismatchSummary, coverage,
    compareStrings, consensusMatrix, consensusString,
    lcprefix, lcsuffix, pmatchPattern, lcsubstr,
    pairwiseAlignment, stringDist,

    ## Old stuff (Defunct or Deprecated):
    consmat, needwunsQS
)

