view common/Matcher.h @ 30:8bed05455706

* Make classical code build
author Chris Cannam
date Tue, 16 Mar 2010 17:36:28 +0000
parents 7d8a6167febb
children 84d6acb6b3ba
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

#ifndef _CLASSICAL_DATA_MATCHER_H_
#define _CLASSICAL_DATA_MATCHER_H_

#include <dataquay/Uri.h>

#include <QHash>

namespace ClassicalData {

class Composer;
class NamedEntity;

class Guess
{
public:
    Guess(float c, NamedEntity *e) : m_confidence(c), m_entity(e) { }

    float confidence() const { return m_confidence; }
    void setConfidence(float c) { m_confidence = c; }
    
    NamedEntity *entity() { return m_entity; }
    void setEntity(NamedEntity *e) { m_entity = e; }

    bool operator<(const Guess &g) const {
        return (confidence() > g.confidence());
    }
    
private:
    float m_confidence;
    NamedEntity *m_entity;
};

typedef QList<Guess> GuessList;

class Matcher
{
public:
    // Results are guaranteed to be returned in order from most to
    // least confident
    virtual GuessList match(QString text, int maxResults) const = 0;
};

class ComposerTypingQuickMatcher : public Matcher
{
public:
    ComposerTypingQuickMatcher(QList<Composer *> cl);
    virtual GuessList match(QString text, int maxResults) const;

private:
    QHash<Dataquay::Uri, Composer *> m_composers;
};

class ComposerTypingThoroughMatcher : public Matcher
{
public:
    ComposerTypingThoroughMatcher(QList<Composer *> cl);
    virtual GuessList match(QString text, int maxResults) const;

private:
    QHash<Dataquay::Uri, Composer *> m_composers;
};

}

Q_DECLARE_METATYPE(ClassicalData::Guess*);

#endif