## Namespace for package 'parallel'
useDynLib("parallel", .registration = TRUE, .fixes = "C_")

export(nextRNGStream, nextRNGSubStream, clusterSetRNGStream)

if(tools:::.OStype() == "unix") {
    export(mccollect, mcparallel, mc.reset.stream, mcaffinity)
}

export(clusterApply, clusterApplyLB, clusterCall, clusterEvalQ,
       clusterExport, clusterMap, clusterSplit, detectCores,
       getDefaultCluster,
       makeCluster, makeForkCluster, makePSOCKcluster, mcMap,
       mclapply, mcmapply, parApply, parCapply, parLapply,
       parLapplyLB, parRapply, parSapply, parSapplyLB, pvec,
       setDefaultCluster, splitIndices, stopCluster)

S3method(print, SOCKcluster)
S3method(print, SOCKnode)
S3method(print, SOCK0node)
S3method("[", cluster)
S3method(closeNode, SOCKnode)
S3method(closeNode, SOCK0node)
S3method(closeNode, default)
S3method(recvData, SOCKnode)
S3method(recvData, SOCK0node)
S3method(recvOneData, SOCKcluster)
S3method(sendData, SOCKnode)
S3method(sendData, SOCK0node)
S3method(stopCluster, default)

## To support snow clusters
S3method(closeNode, NWSnode)
S3method(recvData, MPInode)
S3method(recvData, NWSnode)
S3method(recvOneData, MPIcluster)
S3method(recvOneData, NWScluster)
S3method(sendData, MPInode)
S3method(sendData, NWSnode)
S3method(stopCluster, MPIcluster)
S3method(stopCluster, NWScluster)
S3method(stopCluster, spawnedMPIcluster)
