useDynLib(stream)

import(rJava)
import(MASS)

export(
	# DSC_MOA
	DSC_DenStream,
	DSC_CluStream,
	DSC_ClusTree,
	DSC_Kmeans,
	DSC_KmeansW,
	DSC_DBSCAN,
	DSC_Hierarchical,
	DSC_BIRCH,
	DSC_Sample,
	DSC_Static,
	
	# DSC_R
	DSC_tNN,
#	DSC_tNN_fast,
	
	# DSD
	DSD_RandomRBFGeneratorEvents,
	DSD_GaussianStatic,
	DSD_GaussianMoving,
	DSD_UniformNoise,
	DSD_ReadStream,
	DSD_Wrapper,
	DSD_Target,
	DSD_mlbenchGenerator,
	DSD_mlbenchData,
	DSD_BarsAndGaussians,
	
	# DSD
	get_points,
	write_stream,
	reset_stream,
	close_stream,
	scale_stream,
	
	# DSC
	cluster,
	recluster,
	get_centers,
	get_weights,
	get_assignment,
	get_copy,
	nclusters,
#	merge_DSC,
	prune_clusters,
	microToMacro,	
	
	evaluate,
	evaluate_cluster,
	
	animate_cluster,
	animate_data
      )

### DSD Methods
S3method(print, DSD)
S3method(print, DSD_Wrapper)
S3method(plot, DSD)
S3method(write_stream, DSD)

S3method(get_points, DSD_GaussianStatic)
##S3method(get_points, DSD_GaussianMoving)
S3method(get_points, DSD_mlbenchGenerator)
S3method(get_points, DSD_BarsAndGaussians)
S3method(get_points, DSD_MOA)
S3method(get_points, DSD_ReadStream)
S3method(get_points, DSD_Target)
S3method(get_points, DSD_Wrapper)

S3method(reset_stream, DSD)
S3method(reset_stream, DSD_Wrapper)
S3method(reset_stream, DSD_ReadStream)

### DSC Methods
S3method(plot, DSC)
S3method(plot, DSC_tNN)
#S3method(plot, DSC_tNN_fast)
S3method(print, DSC)
S3method(get_assignment, DSC)
S3method(nclusters, DSC)

S3method(get_centers, DSC_Macro)
S3method(get_centers, DSC_Micro)

S3method(get_weights, DSC_Micro)
S3method(get_weights, DSC_Macro)

S3method(recluster, DSC_Macro)

S3method(microToMacro, DSC_Hierarchical)
S3method(microToMacro, DSC_Kmeans)
S3method(microToMacro, DSC_KmeansW)
S3method(microToMacro, DSC_DBSCAN)
S3method(microToMacro, DSC_tNN)
#S3method(microToMacro, DSC_tNN_fast)

S3method(get_copy, DSC_R)
S3method(get_copy, DSC_MOA)

### other
S3method(print, stream_eval)
