namespace wakeup
{
+/* Utility function for checking if an element exists in a container */
+template<class C, class T>
+static auto contains(const C& v, const T& x) -> decltype(end(v), true)
+{
+ return end(v) != find(begin(v), end(v), x);
+}
+
CWakeupEngineManager::CWakeupEngineManager()
{
}
void CWakeupEngineManager::set_selected_wakeup_info(wakeup_event_info wakeup_info)
{
for (const auto& info : mEngineInfo) {
- auto iter = find(
- info.assistant_list.begin(),
- info.assistant_list.end(),
- string{wakeup_info.wakeup_appid});
- if (iter != info.assistant_list.end()) {
+ string appid = string{wakeup_info.wakeup_appid};
+ bool found = contains(info.assistant_list, appid);
+
+ if (found) {
mSelectedEngine = &info;
MWR_LOGD("Selected : %s", info.engine_name.c_str());
}
void CWakeupEngineManager::engine_add_wakeup_word(string appid, string wakeup_word, string language)
{
for (const auto& info : mEngineInfo) {
- auto iter = find(
- info.assistant_list.begin(),
- info.assistant_list.end(),
- appid);
- if (iter != info.assistant_list.end()) {
+ bool found = contains(info.assistant_list, appid);
+ if (found) {
if (info.interface.add_wakeup_word) {
info.interface.add_wakeup_word(appid.c_str(), wakeup_word.c_str(), language.c_str());
}
void CWakeupEngineManager::engine_set_assistant_specific_command(string appid, string command)
{
for (const auto& info : mEngineInfo) {
- auto iter = find(
- info.assistant_list.begin(),
- info.assistant_list.end(),
- appid);
- if (iter != info.assistant_list.end()) {
+ bool found = contains(info.assistant_list, appid);
+ if (found) {
if (info.interface.set_assistant_specific_command) {
info.interface.set_assistant_specific_command(appid.c_str(), command.c_str());
}