00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _terimber_mstaccess_h_
00029 #define _terimber_mstaccess_h_
00030
00031
00032 #include "allinc.h"
00033
00035
00038 class cluster_client
00039 {
00040 public:
00042 virtual ~cluster_client()
00043 {
00044 }
00045
00047 virtual
00048 size_t
00049 size() const = 0;
00050
00055 virtual
00056 double
00057 distance( size_t from,
00058 size_t to
00059 ) const = 0;
00060
00062 virtual
00063 void
00064 notify( const char* msg
00065 ) const = 0;
00066 };
00067
00070 class cluster_engine
00071 {
00072 public:
00074 virtual
00075 ~cluster_engine() {}
00079 virtual
00080 void
00081 do_clustering( const cluster_client* client,
00082 double max_vertex_distance,
00083 double max_cluster_distance,
00084 double avg_cluster_distance
00085 ) = 0;
00087 virtual
00088 size_t
00089 get_clusters_count() const = 0;
00091 virtual
00092 size_t
00093 get_cluster_size(size_t cluster_index
00094 ) const = 0;
00096 virtual
00097 size_t
00098 get_cluster_object(size_t cluster_index,
00099 size_t object_index
00100 ) const = 0;
00101 };
00102
00105 class cluster_engine_factory
00106 {
00107 public:
00109 static
00110 cluster_engine*
00111 get_cluster_engine();
00112 };
00113
00114 #endif // _terimber_mstaccess_h_