// Copyright 2020 Siemens Digital Industries Software
// ==================================================
// Copyright 2011.
// Siemens Product Lifecycle Management Software Inc.
// All Rights Reserved.
// ==================================================
// Copyright 2020 Siemens Digital Industries Software
 
/** 
    @file
 
*/
#ifndef TC_AC_EQUIVALENCE_CRITERIA_INTERFACE_H
#define TC_AC_EQUIVALENCE_CRITERIA_INTERFACE_H

#include <string>
#include <set>
#include <vector>
#include <map>

#include <unidefs.h>

#include <fclasses/libfclasses_exports.h>
namespace Teamcenter
{       
    class EquivalenceService;

    class FCLASSES_API EquivalenceCriteria
    {    
    public:
        EquivalenceCriteria();

        virtual ~EquivalenceCriteria();

        virtual int getEquivalents( EquivalenceService* srv, 
                                    std::map<tag_t, std::set<tag_t> >& targetMatches, 
                                    std::map<tag_t, std::set<tag_t> > *srcMatches ) = 0;

        virtual bool isSupported( EquivalenceService* srv ) = 0;

        /** Returns the classname. */
        virtual std::string getName() const = 0;

        virtual bool needCompleteTargetExpansion( EquivalenceService* ) const = 0;
    };
}
#include <fclasses/libfclasses_undef.h>
#endif
