#ifndef ADJECTIVE_QUERY_H_05E590FD #define ADJECTIVE_QUERY_H_05E590FD namespace verbly { class adjective_query { public: adjective_query(const data& _data); adjective_query& limit(int _limit); adjective_query& random(); adjective_query& except(const adjective& _word); adjective_query& rhymes_with(const word& _word); adjective_query& has_pronunciation(); adjective_query& requires_comparative_form(); adjective_query& requires_superlative_form(); adjective_query& position(adjective::positioning pos); adjective_query& is_variant(); adjective_query& variant_of(filter _f); adjective_query& has_antonyms(); adjective_query& antonym_of(filter _f); adjective_query& has_synonyms(); adjective_query& synonym_of(filter _f); adjective_query& is_generalization(); adjective_query& generalization_of(filter _f); adjective_query& is_specification(); adjective_query& specification_of(filter _f); adjective_query& is_pertainymic(); adjective_query& pertainym_of(filter _f); adjective_query& is_mannernymic(); adjective_query& anti_mannernym_of(filter _f); /* adjective_query& derived_from(const word& _w); adjective_query& not_derived_from(const word& _w);*/ std::list run() const; const static int unlimited = -1; protected: const data& _data; int _limit = unlimited; bool _random = false; std::list _rhymes; std::list _except; bool _has_prn = false; bool _requires_comparative_form = false; bool _requires_superlative_form = false; adjective::positioning _position = adjective::positioning::undefined; bool _is_variant = false; filter _variant_of; bool _is_antonymic = false; filter _antonym_of; bool _is_synonymic = false; filter _synonym_of; bool _is_generalization = false; filter _generalization_of; bool _is_specification = false; filter _specification_of; bool _is_pertainymic = false; filter _pertainym_of; bool _is_mannernymic = false; filter _anti_mannernym_of; /* std::list _derived_from_adjective; std::list _not_derived_from_adjective; std::list _derived_from_adverb; std::list _not_derived_from_adverb; std::list _derived_from_noun; std::list _not_derived_from_noun;*/ }; }; #endif /* end of include guard: ADJECTIVE_QUERY_H_05E590FD */