/* Copyright 2015, 2016, Michele Santullo * This file is part of "dindexer". * * "dindexer" is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * "dindexer" is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with "dindexer". If not, see . */ #ifndef id4DDE1979258D40A2973E2FC2AC3DF854 #define id4DDE1979258D40A2973E2FC2AC3DF854 #include #include #include namespace dinlib { class ReadlineWrapper { public: using MatchesCallback = std::function(const std::string&)>; explicit ReadlineWrapper ( MatchesCallback parMatchesCallback ); ~ReadlineWrapper ( void ) noexcept; std::string read ( const std::string& parMessage ) const; const std::vector& matches ( const std::string& parPrefix ) const; private: mutable std::string m_last_prefix; mutable std::vector m_last_matches; MatchesCallback m_fetch_matches; }; } //namespace dinlib #endif