Dictionary.hpp 1.13 KB
/* 
 * File:   Dictionary.hpp
 * Author: lennyn
 *
 * Created on August 8, 2014, 3:15 PM
 */

#ifndef DICTIONARY_HPP
#define	DICTIONARY_HPP

#include <string>
#include <vector>
#include <map>
#include <set>
#include "IdResolverImpl.hpp"
#include "fsa/fsa.hpp"
#include "segrules/segrules.hpp"
#include "const.hpp"
#include "deserialization/InterpsGroupsReader.hpp"

namespace morfeusz {
    
    typedef FSA<InterpsGroupsReader> FSAType;

    struct Dictionary {
        Dictionary(const unsigned char* ptr, MorfeuszProcessorType processorType);
        
        Dictionary();
        
        bool isCompatibleWith(const Dictionary& other) const;
        
        static Dictionary* getEmpty();
        
        FSAType* fsa;
        std::string id;
        std::string copyright;
        IdResolverImpl idResolver;
        std::vector<uint32_t> separatorsList;
        std::map<SegrulesOptions, SegrulesFSA*> segrulesFSAsMap;
        SegrulesOptions defaultSegrulesOptions;
        SegrulesFSA* defaultSegrulesFSA;
        std::set<std::string> availableAgglOptions;
        std::set<std::string> availablePraetOptions;
    };
}

#endif	/* DICTIONARY_HPP */