Skip to content
Snippets Groups Projects
Config.hpp 2.17 KiB
Newer Older
Franck Dary's avatar
Franck Dary committed
#ifndef CONFIG__H
#define CONFIG__H

Franck Dary's avatar
Franck Dary committed
#include <string>
#include <vector>
#include <boost/circular_buffer.hpp>
Franck Dary's avatar
Franck Dary committed
#include "util.hpp"
Franck Dary's avatar
Franck Dary committed

class Config
{
Franck Dary's avatar
Franck Dary committed

  static constexpr const char * EOSColName = "EOS";
  static constexpr const char * EOSSymbol1 = "1";
  static constexpr const char * EOSSymbol0 = "0";
  static constexpr int nbHypothesesMax = 1;

Franck Dary's avatar
Franck Dary committed
  private :

Franck Dary's avatar
Franck Dary committed
  using String = boost::flyweight<std::string>;
  using Utf8String = boost::flyweight<util::utf8string>;
  using ValueIterator = std::vector<String>::iterator;
  using ConstValueIterator = std::vector<String>::const_iterator;
Franck Dary's avatar
Franck Dary committed

Franck Dary's avatar
Franck Dary committed
  std::vector<String> lines;
  std::size_t wordIndex{0};
  std::size_t characterIndex{0};
  String state{"NONE"};
  boost::circular_buffer<String> history{10};
Franck Dary's avatar
Franck Dary committed

  virtual std::size_t getNbColumns() const = 0;
  virtual std::size_t getColIndex(const std::string & colName) const = 0;
  virtual std::size_t getFirstLineIndex() const = 0;
  virtual const std::string & getColName(int colIndex) const = 0;
Franck Dary's avatar
Franck Dary committed

Franck Dary's avatar
Franck Dary committed

  std::size_t getIndexOfLine(int lineIndex) const;
  std::size_t getIndexOfCol(int colIndex) const;
  std::size_t getNbLines() const;
  void addLines(unsigned int nbLines);
  void resizeLines(unsigned int nbLines);
  String & get(int colIndex, int lineIndex, int hypothesisIndex);
Franck Dary's avatar
Franck Dary committed
  const String & getConst(int colIndex, int lineIndex, int hypothesisIndex) const;
  String & getLastNotEmpty(int colIndex, int lineIndex);
Franck Dary's avatar
Franck Dary committed
  const String & getLastNotEmptyConst(int colIndex, int lineIndex) const;
  ValueIterator getIterator(int colIndex, int lineIndex, int hypothesisIndex);
  ConstValueIterator getConstIterator(int colIndex, int lineIndex, int hypothesisIndex) const;
Franck Dary's avatar
Franck Dary committed

Franck Dary's avatar
Franck Dary committed
  public :

Franck Dary's avatar
Franck Dary committed
  void print(FILE * dest) const;
  String & get(const std::string & colName, int lineIndex, int hypothesisIndex);
  const String & getConst(const std::string & colName, int lineIndex, int hypothesisIndex) const;
  String & getLastNotEmpty(const std::string & colName, int lineIndex);
  const String & getLastNotEmptyConst(const std::string & colName, int lineIndex) const;
  void addToHistory(const String & transition);
Franck Dary's avatar
Franck Dary committed
};

#endif