#include <exception>
#include <iostream>
#include <iterator>
#include <string>
#include <sstream>
#include <vector>
#include "classifiers.h"
#include <memory>
using std::cout;
using std::string;
using std::vector;
class CombinedClassifier {
public:
CombinedClassifier(const string& fast_string, const string& main_string) {
fast_class = std::make_unique<FastClassifier>(fast_string);
main_s = main_string;
main_class = nullptr;
}
double classify(const string& s) {
try {
return fast_class -> classify(s);
}
catch (TooHardObjectException()) {
if (main_class == nullptr) {
main_class = std::make_unique<MainClassifier>(main_s);
}
return main_class -> classify(s);
}
}
private:
string main_s;
std::unique_ptr<FastClassifier> fast_class;
std::unique_ptr<MainClassifier> main_class;
};