useDynLib(RcppAlgos, .registration = TRUE)
import(gmp, methods)

S3method("[[", "Combo")
S3method("[[", "ComboApply")
S3method("[[", "ComboRes")
S3method("[[", "Partitions")
S3method("[[", "ComboGroups")
S3method("[[", "Cartesian")

S3method(comboGeneral, default)
S3method(comboGeneral, integer)
S3method(comboGeneral, numeric)
S3method(comboGeneral, logical)
S3method(comboGeneral, factor)
S3method(comboGeneral, table)
S3method(comboGeneral, list)

S3method(comboSample, default)
S3method(comboSample, integer)
S3method(comboSample, numeric)
S3method(comboSample, logical)
S3method(comboSample, factor)
S3method(comboSample, table)
S3method(comboSample, list)

S3method(comboIter, default)
S3method(comboIter, integer)
S3method(comboIter, numeric)
S3method(comboIter, logical)
S3method(comboIter, factor)
S3method(comboIter, table)
S3method(comboIter, list)

S3method(comboCount, default)
S3method(comboCount, table)
S3method(comboCount, list)

S3method(permuteGeneral, default)
S3method(permuteGeneral, integer)
S3method(permuteGeneral, numeric)
S3method(permuteGeneral, logical)
S3method(permuteGeneral, factor)
S3method(permuteGeneral, table)
S3method(permuteGeneral, list)

S3method(permuteSample, default)
S3method(permuteSample, integer)
S3method(permuteSample, numeric)
S3method(permuteSample, logical)
S3method(permuteSample, factor)
S3method(permuteSample, table)
S3method(permuteSample, list)

S3method(permuteIter, default)
S3method(permuteIter, integer)
S3method(permuteIter, numeric)
S3method(permuteIter, logical)
S3method(permuteIter, factor)
S3method(permuteIter, table)
S3method(permuteIter, list)

S3method(permuteCount, default)
S3method(permuteCount, table)
S3method(permuteCount, list)

S3method(partitionsGeneral, default)
S3method(partitionsGeneral, table)
S3method(partitionsSample, default)
S3method(partitionsSample, table)
S3method(partitionsIter, default)
S3method(partitionsIter, table)
S3method(partitionsCount, default)
S3method(partitionsCount, table)

S3method(compositionsGeneral, default)
S3method(compositionsGeneral, table)
S3method(compositionsSample, default)
S3method(compositionsSample, table)
S3method(compositionsIter, default)
S3method(compositionsIter, table)
S3method(compositionsCount, default)
S3method(compositionsCount, table)

export(
  comboGrid,
  expandGrid,
  comboGroups,
  comboGeneral,
  permuteGeneral,
  partitionsGeneral,
  compositionsGeneral,
  comboCount,
  permuteCount,
  partitionsCount,
  expandGridCount,
  comboGroupsCount,
  compositionsCount,
  comboSample,
  permuteSample,
  partitionsSample,
  expandGridSample,
  comboGroupsSample,
  compositionsSample,
  comboRank,
  permuteRank,
  partitionsRank,
  compositionsRank,
  comboIter,
  permuteIter,
  partitionsIter,
  expandGridIter,
  compositionsIter,
  comboGroupsIter,
  primeSieve,
  eulerPhiSieve,
  primeFactorizeSieve,
  numDivisorSieve,
  divisorsSieve,
  primeFactorize,
  divisorsRcpp,
  isPrimeRcpp,
  primeCount,
  stdThreadMax
)
