00001 /* 00002 * Copyright (c) 2004 CSIRO ICT Centre 00003 * 00004 * $Id: Refine.h 587 2004-12-03 15:06:33Z nch $ 00005 */ 00006 00007 /* 00008 * Refine defines the interface that every refine step must implement. 00009 * 00010 * Refine classes test candidate pairs previously matched by a filter 00011 * for a more discriminating matching test. Two ObjectPairConsumers 00012 * are required to report those that do match and those that dont. 00013 * 00014 * Subclasses need to implement the refine method. 00015 * 00016 * The getName method returns the name of the refine class. 00017 */ 00018 00019 #ifndef REFINE_DEFINED 00020 #define REFINE_DEFINED 00021 00022 #include "String.h" 00023 00024 class Object; 00025 class ObjectPairConsumer; 00026 00027 00028 class Refine 00029 { 00030 public: 00031 Refine(ObjectPairConsumer * mPPCons, ObjectPairConsumer * uPPCons); 00032 virtual ~Refine() {} 00033 virtual String const & getName() const=0; 00034 virtual bool refine(Object const * a, Object const * b)=0; 00035 virtual void finished(); 00036 00037 protected: 00038 ObjectPairConsumer * matchedObjectPairConsumer; 00039 ObjectPairConsumer * unmatchedObjectPairConsumer; 00040 00041 virtual bool reportMatch(Object const * a, Object const * b); 00042 virtual void reportNoMatch(Object const * a, Object const * b); 00043 00044 private: 00045 Refine(); 00046 Refine(Refine const &); 00047 Refine & operator=(Refine const &); 00048 }; 00049 00050 00051 #endif // ifndef REFINE_DEFINED