Skip to content

1024--/voreterator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Ворециратор - итератор вореционных c-v-слов

Проверка и запуск примера:

    make && ./example

Простой пример. Итерируем питуха, пока не закончится буфер:

    // #include "voreterator.hpp"
    char buf[10] = "pitux";
    voreterator<2, 1> v(buf, 9);

    for (auto str : v)
      std::cout << str << std::endl;

Пример посложнее. Склоняем питуха по 22 падежам с артиклями:

    char buf[10] = "vo pitux";
    voreterator<1, 1> case_(buf, 2, 2); // итератор артикля
    voreterator<2, 1> word (buf+3, 6);  // итератор слова

    for (auto str : case_) {
      std::cout << str << std::endl;
      ++word;
    }

Пример превращения случайной последовательности в слово:

    char buf[10] = "peetuux";         // на входе  1-2-слово
    voreterator<2, 1> word (buf, 9); // требуем   2-1-слово
    std::cout << *word << std::endl;  // peftuvx - 2-1-слово

Интерпейс:

  template <int consonant_limit=2, int vowel_limit=1>
    в параметрах шаблона задаются максимально допустимые
    длины последовательностей согласных/гласных

  voreterator (char * str, int max_length)
    создать ворециратор над буфером str максимальным размером max_length
  
  voreterator (char * str, int max_length, int vorefix_length)
    создать ворециратор над буфером str максимальным размером max_length,
    начать с вореционирования vorefix_length символов
    
    например, имеется строка zzy10, надо получить zzz10, aaaa10, ..., zzzzz10
    значит vorefix_length=3, max_length=7
  
  voreterator& operator = (const voreterator& rhs)
    стандартная питушня
  
  bool operator == (const voreterator& rhs) const
  bool operator != (const voreterator& rhs) const
    сравнивают указатель на строку и флаг завершения генереций
  
  const char * operator * () const
    строка (== str из коньструктора)
  
  voreterator& operator ++ ()
    генерация нового слова
  
  operator bool () const
    флаг завершения генереций (взводится, если max_length кончилась)
  
  voreterator begin() const
    копия себя для форычей
  
  voreterator end() const
    ворециратор над той же строкой, но со взведённым флагом завершения

Коньтракт:

  * Поведение не определено, если аргументы конструктора питушарские
  * Поведение не определено, если итерировать завершённый ворециратор
  * Гарантирован багор, если итерировать ворециратор end()

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors