[glom] Add and use find_exists().
- From: Murray Cumming <murrayc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glom] Add and use find_exists().
- Date: Tue, 5 Jan 2016 19:30:40 +0000 (UTC)
commit 792cc2ea1b8f712a0641fb758014d1062fb32e07
Author: Murray Cumming <murrayc murrayc com>
Date: Tue Jan 5 11:56:03 2016 +0100
Add and use find_exists().
To replace lengthy use of
std::find(container.begin(), container.end(), element) != container.end()).
It looks like something like this will be in the standard C++ library
at some point, but I don't want to wait.
glom/appwindow.cc | 3 +-
glom/bakery/appwindow_withdoc.cc | 3 +-
glom/box_reports.cc | 3 +-
glom/libglom/algorithms_utils.h | 44 +++++++++
glom/libglom/connectionpool_backends/sqlite.cc | 53 ++++++------
glom/libglom/data_structure/field.cc | 4 +-
glom/libglom/db_utils.cc | 96 ++++++++++----------
glom/libglom/document/document.cc | 5 +-
glom/libglom/filelist.am | 1 +
glom/libglom/privs.cc | 12 +--
glom/mode_data/box_data.cc | 1 -
glom/mode_data/box_data_details.cc | 4 +-
glom/mode_design/iso_codes.cc | 3 +-
.../mode_design/print_layouts/box_print_layouts.cc | 3 +-
glom/utility_widgets/flowtable.cc | 13 +--
glom/utility_widgets/imageglom.cc | 13 +--
tests/test_document_load.cc | 5 +-
tests/test_document_load_translations.cc | 5 +-
tests/test_selfhosting_new_empty_then_users.cc | 5 +-
.../test_selfhosting_new_from_example_operator.cc | 6 +-
20 files changed, 157 insertions(+), 125 deletions(-)
---
diff --git a/glom/appwindow.cc b/glom/appwindow.cc
index f0d2c40..eaf570b 100644
--- a/glom/appwindow.cc
+++ b/glom/appwindow.cc
@@ -33,6 +33,7 @@
#include <glom/utils_ui.h>
#include <glom/glade_utils.h>
+#include <libglom/algorithms_utils.h>
#include <libglom/db_utils.h>
#include <libglom/privs.h>
#include <glom/python_embed/python_ui_callbacks.h>
@@ -1234,7 +1235,7 @@ void AppWindow::update_table_sensitive_ui()
bool sensitive = has_table;
const bool is_developer_item =
- (std::find(m_listDeveloperActions.begin(), m_listDeveloperActions.end(), action) !=
m_listDeveloperActions.end());
+ (Utils::find_exists(m_listDeveloperActions, action));
if(is_developer_item)
sensitive = sensitive && (userlevel == AppState::userlevels::DEVELOPER);
diff --git a/glom/bakery/appwindow_withdoc.cc b/glom/bakery/appwindow_withdoc.cc
index 6643627..2d6d6d8 100644
--- a/glom/bakery/appwindow_withdoc.cc
+++ b/glom/bakery/appwindow_withdoc.cc
@@ -19,6 +19,7 @@
#include "config.h"
#include <glom/bakery/appwindow_withdoc.h>
#include <glom/bakery/dialog_offersave.h>
+#include <libglom/algorithms_utils.h>
#include <libglom/utils.h>
#include <giomm/file.h>
#include <algorithm>
@@ -46,7 +47,7 @@ AppWindow_WithDoc::~AppWindow_WithDoc()
//static
void AppWindow_WithDoc::add_mime_type(const Glib::ustring& mime_type)
{
- if( std::find(m_mime_types.begin(), m_mime_types.end(), mime_type) == m_mime_types.end() )
+ if( !Glom::Utils::find_exists(m_mime_types, mime_type) )
m_mime_types.push_back(mime_type);
}
diff --git a/glom/box_reports.cc b/glom/box_reports.cc
index 719db7b..2b5ba8a 100644
--- a/glom/box_reports.cc
+++ b/glom/box_reports.cc
@@ -20,6 +20,7 @@
#include <glom/box_reports.h>
#include <glom/appwindow.h>
+#include <libglom/algorithms_utils.h>
#include <libglom/utils.h> //For bold_message()).
#include <gtkmm/alignment.h>
#include <gtkmm/dialog.h>
@@ -194,7 +195,7 @@ void Box_Reports::save_to_document()
{
const auto report_name = m_AddDel.get_value(item, m_colReportName);
- if(!report_name.empty() && std::find(listReports.begin(), listReports.end(), report_name) ==
listReports.end())
+ if(!report_name.empty() && !Utils::find_exists(listReports, report_name))
{
auto report = std::make_shared<Report>();
report->set_name(report_name);
diff --git a/glom/libglom/algorithms_utils.h b/glom/libglom/algorithms_utils.h
new file mode 100644
index 0000000..9b16cdd
--- /dev/null
+++ b/glom/libglom/algorithms_utils.h
@@ -0,0 +1,44 @@
+/* Glom
+ *
+ * Copyright (C) 2015 Murray Cumming
+ *
+ * This program 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 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 this program; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ */
+
+#ifndef GLOM_ALGORITHMS_UTILS_H
+#define GLOM_ALGORITHMS_UTILS_H
+
+#include <algorithm>
+
+namespace Glom
+{
+
+namespace Utils
+{
+
+template<typename T_container, typename T_element>
+bool
+find_exists(const T_container& container, const T_element& element)
+{
+ const auto end = std::end(container);
+ return std::find(std::begin(container), end, element) != end;
+}
+
+} //namespace Utils
+
+} //namespace Glom
+
+#endif //GLOM_ALGORITHMS_UTILS_H
diff --git a/glom/libglom/connectionpool_backends/sqlite.cc b/glom/libglom/connectionpool_backends/sqlite.cc
index 10200ba..9629bc1 100644
--- a/glom/libglom/connectionpool_backends/sqlite.cc
+++ b/glom/libglom/connectionpool_backends/sqlite.cc
@@ -18,9 +18,11 @@
* Boston, MA 02110-1301 USA.
*/
+#include <libglom/algorithms_utils.h>
#include <libglom/libglom_config.h>
#include <libglom/connectionpool_backends/sqlite.h>
#include <libglom/utils.h>
+#include <libglom/algorithms_utils.h>
#include <libglom/db_utils.h>
#include <giomm/file.h>
#include <libgdamm/metastore.h>
@@ -205,7 +207,7 @@ bool Sqlite::recreate_table(const Glib::RefPtr<Gnome::Gda::Connection>& connecti
GdaMetaTableColumn* column = GDA_META_TABLE_COLUMN(item->data);
// Don't add if field was removed
- if(std::find(fields_removed.begin(), fields_removed.end(), column->column_name) != fields_removed.end())
+ if(Utils::find_exists(fields_removed, column->column_name))
continue;
#if 0
{
@@ -300,33 +302,32 @@ bool Sqlite::recreate_table(const Glib::RefPtr<Gnome::Gda::Connection>& connecti
{
// Add new fields to the table. Fields that have changed have already
// been handled above.
- auto removed_iter = std::find(fields_removed.begin(), fields_removed.end(), field->get_name());
- if(removed_iter == fields_removed.end())
- {
- add_column_to_server_operation(operation, field, i++);
+ if(Utils::find_exists(fields_removed, field->get_name()))
+ continue;
- if(!trans_fields.empty())
- trans_fields += ',';
- const auto default_value = field->get_default_value();
- if(default_value.get_value_type() != G_TYPE_NONE && !default_value.is_null())
- trans_fields += field->sql(default_value, connection);
- else
+ add_column_to_server_operation(operation, field, i++);
+
+ if(!trans_fields.empty())
+ trans_fields += ',';
+ const auto default_value = field->get_default_value();
+ if(default_value.get_value_type() != G_TYPE_NONE && !default_value.is_null())
+ trans_fields += field->sql(default_value, connection);
+ else
+ {
+ switch(field->get_glom_type())
{
- switch(field->get_glom_type())
- {
- case Field::glom_field_type::NUMERIC:
- trans_fields += '0';
- break;
- case Field::glom_field_type::BOOLEAN:
- trans_fields += '0';
- break;
- case Field::glom_field_type::TEXT:
- trans_fields += "''";
- break;
- default:
- trans_fields += "NULL";
- break;
- }
+ case Field::glom_field_type::NUMERIC:
+ trans_fields += '0';
+ break;
+ case Field::glom_field_type::BOOLEAN:
+ trans_fields += '0';
+ break;
+ case Field::glom_field_type::TEXT:
+ trans_fields += "''";
+ break;
+ default:
+ trans_fields += "NULL";
+ break;
}
}
}
diff --git a/glom/libglom/data_structure/field.cc b/glom/libglom/data_structure/field.cc
index db558c3..124f10c 100644
--- a/glom/libglom/data_structure/field.cc
+++ b/glom/libglom/data_structure/field.cc
@@ -18,6 +18,7 @@
* Boston, MA 02110-1301 USA.
*/
+#include <libglom/algorithms_utils.h>
#include <libglom/data_structure/field.h>
#include <libglom/connectionpool.h>
#include <libglom/data_structure/glomconversions.h>
@@ -736,8 +737,7 @@ bool Field::get_conversion_possible(glom_field_type field_type_src, glom_field_t
if(iterFind != m_map_conversions.end())
{
const auto list_conversions = iterFind->second;
- auto iterConversionFind = std::find(list_conversions.begin(), list_conversions.end(), field_type_dest);
- if(iterConversionFind != list_conversions.end())
+ if(Utils::find_exists(list_conversions, field_type_dest))
return true; //Success: conversion found.
}
diff --git a/glom/libglom/db_utils.cc b/glom/libglom/db_utils.cc
index 498e375..bbaeef3 100644
--- a/glom/libglom/db_utils.cc
+++ b/glom/libglom/db_utils.cc
@@ -18,6 +18,7 @@
* Boston, MA 02110-1301 USA.
*/
+#include <libglom/algorithms_utils.h>
#include <libglom/db_utils.h>
#include <libglom/connectionpool.h>
#include <libglom/data_structure/glomconversions.h>
@@ -587,55 +588,56 @@ bool add_standard_groups(Document* document)
if(gda_connection->supports_feature(Gnome::Gda::CONNECTION_FEATURE_USERS))
{
const auto vecGroups = Glom::Privs::get_database_groups();
- type_vec_strings::const_iterator iterFind = std::find(vecGroups.begin(), vecGroups.end(), devgroup);
- if(iterFind == vecGroups.end())
+ if(Utils::find_exists(vecGroups, devgroup)) {
+ //The group already exists.
+ return true;
+ }
+
+ //TODO: Escape and quote the user and group names here?
+ //The "SUPERUSER" here has no effect because SUPERUSER is not "inherited" to member users.
+ //But let's keep it to make the purpose of this group obvious.
+ bool test = query_execute_string(
+ DbUtils::build_query_create_group(GLOM_STANDARD_GROUP_NAME_DEVELOPER, true /* superuser */));
+ if(!test)
{
- //TODO: Escape and quote the user and group names here?
- //The "SUPERUSER" here has no effect because SUPERUSER is not "inherited" to member users.
- //But let's keep it to make the purpose of this group obvious.
- bool test = query_execute_string(
- DbUtils::build_query_create_group(GLOM_STANDARD_GROUP_NAME_DEVELOPER, true /* superuser */));
- if(!test)
- {
- std::cerr << G_STRFUNC << ": CREATE GROUP failed when adding the developer group." << std::endl;
- return false;
- }
+ std::cerr << G_STRFUNC << ": CREATE GROUP failed when adding the developer group." << std::endl;
+ return false;
+ }
- //Make sure the current user is in the developer group.
- //(If he is capable of creating these groups then he is obviously a developer, and has developer
rights on the postgres server.)
- const auto current_user = ConnectionPool::get_instance()->get_user();
- const auto strQuery = build_query_add_user_to_group(GLOM_STANDARD_GROUP_NAME_DEVELOPER, current_user);
- test = query_execute_string(strQuery);
- if(!test)
- {
- std::cerr << G_STRFUNC << ": ALTER GROUP failed when adding the user to the developer group." <<
std::endl;
- return false;
- }
+ //Make sure the current user is in the developer group.
+ //(If he is capable of creating these groups then he is obviously a developer, and has developer rights
on the postgres server.)
+ const auto current_user = ConnectionPool::get_instance()->get_user();
+ const auto strQuery = build_query_add_user_to_group(GLOM_STANDARD_GROUP_NAME_DEVELOPER, current_user);
+ test = query_execute_string(strQuery);
+ if(!test)
+ {
+ std::cerr << G_STRFUNC << ": ALTER GROUP failed when adding the user to the developer group." <<
std::endl;
+ return false;
+ }
- //std::cout << "DEBUG: Added user " << current_user << " to glom developer group on postgres server."
<< std::endl;
+ //std::cout << "DEBUG: Added user " << current_user << " to glom developer group on postgres server." <<
std::endl;
- Privileges priv_devs;
- priv_devs.m_view = true;
- priv_devs.m_edit = true;
- priv_devs.m_create = true;
- priv_devs.m_delete = true;
+ Privileges priv_devs;
+ priv_devs.m_view = true;
+ priv_devs.m_edit = true;
+ priv_devs.m_create = true;
+ priv_devs.m_delete = true;
- for(const auto& table_info : document->get_tables(true /* including system prefs */))
+ for(const auto& table_info : document->get_tables(true /* including system prefs */))
+ {
+ if(table_info)
{
- if(table_info)
- {
- const auto table_name = table_info->get_name();
- if(get_table_exists_in_database(table_name)) //Maybe the table has not been created yet.
- Glom::Privs::set_table_privileges(devgroup, table_name, priv_devs, true /* developer privileges
*/);
- }
+ const auto table_name = table_info->get_name();
+ if(get_table_exists_in_database(table_name)) //Maybe the table has not been created yet.
+ Glom::Privs::set_table_privileges(devgroup, table_name, priv_devs, true /* developer privileges
*/);
}
-
- //Make sure that it is in the database too:
- GroupInfo group_info;
- group_info.set_name(GLOM_STANDARD_GROUP_NAME_DEVELOPER);
- group_info.m_developer = true;
- document->set_group(group_info);
}
+
+ //Make sure that it is in the database too:
+ GroupInfo group_info;
+ group_info.set_name(GLOM_STANDARD_GROUP_NAME_DEVELOPER);
+ group_info.m_developer = true;
+ document->set_group(group_info);
}
else
{
@@ -668,8 +670,7 @@ bool add_groups_from_document(const Document* document)
//std::cout << G_STRFUNC << ": DEBUG: group=" << name << std::endl;
//See if the group exists in the database:
- type_vec_strings::const_iterator iterFind = std::find(database_groups.begin(), database_groups.end(),
name);
- if(!name.empty() && iterFind == database_groups.end())
+ if(!name.empty() && !Utils::find_exists(database_groups, name))
{
if(!add_group(document, name, group.m_developer))
{
@@ -710,8 +711,7 @@ bool set_table_privileges_groups_from_document(const Document* document)
const auto group_name = group_info.get_name();
//See if the group exists in the database:
- type_vec_strings::const_iterator iterFind = std::find(database_groups.begin(), database_groups.end(),
group_name);
- if(!group_name.empty() && iterFind == database_groups.end())
+ if(!group_name.empty() && !Utils::find_exists(database_groups, group_name))
{
std::cerr << G_STRFUNC << ": group does not exist in the database. group name=" << group_name <<
std::endl;
result = false;
@@ -1143,11 +1143,9 @@ bool get_table_exists_in_database(const Glib::ustring& table_name)
//TODO_Performance
const auto tables = get_table_names_from_database();
- type_vec_strings::const_iterator iterFind = std::find(tables.begin(), tables.end(), table_name);
- return (iterFind != tables.end());
+ return Utils::find_exists(tables, table_name);
}
-
bool create_table_with_default_fields(Document* document, const Glib::ustring& table_name)
{
if(table_name.empty())
@@ -2198,7 +2196,7 @@ bool add_group(const Document* document, const Glib::ustring& group, bool superu
//Let them edit the autoincrements too:
//Do not fail if the autoincrements table does not yet exist, because this can happen during restoring of
a backup.
- if(std::find(table_list.begin(), table_list.end(), GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME) ==
table_list.end())
+ if(!Utils::find_exists(table_list, GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME))
return true;
if(!Privs::set_table_privileges(group, GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME, priv))
diff --git a/glom/libglom/document/document.cc b/glom/libglom/document/document.cc
index 8a2d3fd..c9f6207 100644
--- a/glom/libglom/document/document.cc
+++ b/glom/libglom/document/document.cc
@@ -20,6 +20,7 @@
#include <libglom/document/document.h>
#include <libglom/xml_utils.h>
+#include <libglom/algorithms_utils.h>
#include <libglom/utils.h>
//#include <libglom/data_structure/glomconversions.h>
#include <libglom/data_structure/layout/report_parts/layoutitem_summary.h>
@@ -2476,8 +2477,8 @@ void Document::load_after_translations(const xmlpp::Element* element, const std:
item->set_title(translation, locale);
//Remember any new translation locales in our cached list:
- if(std::find(m_translation_available_locales.begin(),
- m_translation_available_locales.end(), locale) == m_translation_available_locales.end())
+ //TODO: Use a set instead?
+ if(!Utils::find_exists(m_translation_available_locales, locale))
{
m_translation_available_locales.push_back(locale);
}
diff --git a/glom/libglom/filelist.am b/glom/libglom/filelist.am
index 120fc3e..b3a9828 100644
--- a/glom/libglom/filelist.am
+++ b/glom/libglom/filelist.am
@@ -19,6 +19,7 @@
libglom_toplevel_headers = \
glom/libglom/appstate.h \
+ glom/libglom/algorithms_utils.h \
glom/libglom/init.h \
glom/libglom/libglom_config.h \
glom/libglom/sharedptr.h \
diff --git a/glom/libglom/privs.cc b/glom/libglom/privs.cc
index 55a9257..323d416 100644
--- a/glom/libglom/privs.cc
+++ b/glom/libglom/privs.cc
@@ -19,6 +19,7 @@
*/
#include "privs.h"
+#include <libglom/algorithms_utils.h>
#include <libglom/standard_table_prefs_fields.h>
#include <libglom/db_utils.h>
#include <libglom/utils.h>
@@ -64,8 +65,7 @@ bool Privs::get_default_developer_user_exists(Document::HostingMode hosting_mode
const auto default_user = get_default_developer_user_name(default_password, hosting_mode);
const auto users = get_database_users();
- type_vec_strings::const_iterator iterFind = std::find(users.begin(), users.end(), default_user);
- if(iterFind != users.end())
+ if(Utils::find_exists(users, default_user))
return true; //We assume that the password is what it should be and that it has developer rights.
return false; //The default user is not there.
@@ -415,8 +415,7 @@ Privs::type_vec_strings Privs::get_groups_of_user(const Glib::ustring& user)
bool Privs::get_user_is_in_group(const Glib::ustring& user, const Glib::ustring& group)
{
const auto users = get_database_users(group);
- type_vec_strings::const_iterator iterFind = std::find(users.begin(), users.end(), user);
- return (iterFind != users.end());
+ return Utils::find_exists(users, user);
}
bool Privs::on_privs_privileges_cache_timeout(const Glib::ustring& table_name)
@@ -467,9 +466,8 @@ Privileges Privs::get_current_privs(const Glib::ustring& table_name)
//Is the user in the special developers group?
/*
- type_vec_strings developers = get_database_users(GLOM_STANDARD_GROUP_NAME_DEVELOPER);
- type_vec_strings::const_iterator iterFind = std::find(developers.begin(), developers.end(), current_user);
- if(iterFind != developers.end())
+ const auto developers = get_database_users(GLOM_STANDARD_GROUP_NAME_DEVELOPER);
+ if(Utils::find_exists(developers, current_user))
{
result.m_developer = true;
}
diff --git a/glom/mode_data/box_data.cc b/glom/mode_data/box_data.cc
index 5d1ec24..b962c9c 100644
--- a/glom/mode_data/box_data.cc
+++ b/glom/mode_data/box_data.cc
@@ -29,7 +29,6 @@
#include <glom/python_embed/glom_python.h>
#include <glom/python_embed/python_ui_callbacks.h>
#include <glom/appwindow.h>
-#include <algorithm> //For std::find()
#include <libglom/libglom_config.h>
#include <iostream>
#include <glibmm/i18n.h>
diff --git a/glom/mode_data/box_data_details.cc b/glom/mode_data/box_data_details.cc
index 74f79ab..b119e20 100644
--- a/glom/mode_data/box_data_details.cc
+++ b/glom/mode_data/box_data_details.cc
@@ -21,6 +21,7 @@
#include "config.h"
#include <glom/mode_data/box_data_details.h>
#include <glom/frame_glom.h> //For show_ok_dialog().
+#include <libglom/algorithms_utils.h>
#include <libglom/data_structure/field.h>
#include <libglom/data_structure/relationship.h>
#include <libglom/data_structure/glomconversions.h>
@@ -515,8 +516,7 @@ void Box_Data_Details::recalculate_fields_for_related_records(const Glib::ustrin
{
//Is this field triggered by this relationship?
const auto triggered_by = field->get_calculation_relationships();
- Field::type_list_strings::const_iterator iterFind = std::find(triggered_by.begin(), triggered_by.end(),
relationship_name);
- if(iterFind != triggered_by.end()) //If it was found
+ if(Utils::find_exists(triggered_by, relationship_name))
{
if(field)
{
diff --git a/glom/mode_design/iso_codes.cc b/glom/mode_design/iso_codes.cc
index cf3724f..a91e43d 100644
--- a/glom/mode_design/iso_codes.cc
+++ b/glom/mode_design/iso_codes.cc
@@ -23,6 +23,7 @@
#include <glom/mode_design/iso_codes.h>
#include <libxml++/libxml++.h>
//#include <libglom/document/document.h>
+#include <libglom/algorithms_utils.h>
#include <libglom/utils.h>
#include <glibmm/fileutils.h>
#include <glibmm/i18n.h>
@@ -138,7 +139,7 @@ Glib::ustring get_locale_name(const Glib::ustring& locale_id)
//Add the non-specific locales:
for(const auto& id : list_ids_simple)
{
- if(std::find(list_ids.begin(), list_ids.end(), id) == list_ids.end())
+ if(!Utils::find_exists(list_ids, id))
list_ids.push_back(id);
}
diff --git a/glom/mode_design/print_layouts/box_print_layouts.cc
b/glom/mode_design/print_layouts/box_print_layouts.cc
index 4cb3919..ef05b8f 100644
--- a/glom/mode_design/print_layouts/box_print_layouts.cc
+++ b/glom/mode_design/print_layouts/box_print_layouts.cc
@@ -22,6 +22,7 @@
#include <glom/appwindow.h>
#include <gtkmm/alignment.h>
#include <gtkmm/messagedialog.h>
+#include <libglom/algorithms_utils.h>
#include <libglom/utils.h> //For bold_message()).
#include <glibmm/i18n.h>
@@ -182,7 +183,7 @@ void Box_Print_Layouts::save_to_document()
{
const auto name = m_AddDel.get_value(row, m_colName);
- if(!name.empty() && std::find(listItems.begin(), listItems.end(), name) == listItems.end())
+ if(!name.empty() && !Utils::find_exists(listItems, name))
{
auto item = std::make_shared<PrintLayout>();
item->set_name(name);
diff --git a/glom/utility_widgets/flowtable.cc b/glom/utility_widgets/flowtable.cc
index eaff72b..6a79a55 100644
--- a/glom/utility_widgets/flowtable.cc
+++ b/glom/utility_widgets/flowtable.cc
@@ -20,6 +20,7 @@
#include "flowtable.h"
#include "layoutwidgetbase.h"
+#include <libglom/algorithms_utils.h>
#include <iostream>
#include <gtkmm/eventbox.h>
#include <gdkmm/window.h>
@@ -48,9 +49,7 @@ FlowTable::~FlowTable()
const Gtk::Box* FlowTable::get_parent_hbox(const Gtk::Widget* first) const
{
- const type_const_list_widgets::const_iterator iter_find =
- std::find(m_list_first_widgets.begin(), m_list_first_widgets.end(), first);
- if(iter_find == m_list_first_widgets.end())
+ if(!Utils::find_exists(m_list_first_widgets, first))
{
std::cerr << G_STRFUNC << ": first was not a first widget. first=" << first << std::endl;
return nullptr; //It has no Box parent because it is not even a first widget.
@@ -66,9 +65,7 @@ const Gtk::Box* FlowTable::get_parent_hbox(const Gtk::Widget* first) const
if(box_children.empty())
continue;
- const auto iter_find_box =
- std::find(box_children.begin(), box_children.end(), first);
- if(iter_find_box != box_children.end())
+ if(Utils::find_exists(box_children, first))
return hbox;
}
@@ -216,9 +213,7 @@ bool FlowTable::get_column_for_first_widget(const Gtk::Widget& first, guint& col
const Gtk::Widget* child = nullptr;
//Check that it is really a child widget:
- const type_const_list_widgets::const_iterator iter_find =
- std::find(m_list_first_widgets.begin(), m_list_first_widgets.end(), &first);
- if(iter_find == m_list_first_widgets.end())
+ if(!Utils::find_exists(m_list_first_widgets, &first))
return false; //It is not a first widget.
child = &first;
diff --git a/glom/utility_widgets/imageglom.cc b/glom/utility_widgets/imageglom.cc
index 347139f..bf1a3d2 100644
--- a/glom/utility_widgets/imageglom.cc
+++ b/glom/utility_widgets/imageglom.cc
@@ -23,6 +23,7 @@
#include <glom/appwindow.h>
#include <glom/utils_ui.h>
#include <glom/glade_utils.h>
+#include <libglom/algorithms_utils.h>
#include <libglom/data_structure/glomconversions.h>
#include <glom/utility_widgets/dialog_image_load_progress.h>
#include <glom/utility_widgets/dialog_image_save_progress.h>
@@ -327,11 +328,7 @@ void ImageGlom::show_image_data()
//std::cout << "mime_type=" << mime_type << std::endl;
fill_evince_supported_mime_types();
- const auto iterFind =
- std::find(m_evince_supported_mime_types.begin(),
- m_evince_supported_mime_types.end(),
- mime_type);
- if(iterFind != m_evince_supported_mime_types.end())
+ if(Utils::find_exists(m_evince_supported_mime_types, mime_type))
{
use_evince = true;
}
@@ -401,11 +398,7 @@ void ImageGlom::show_image_data()
bool use_gdkpixbuf = false;
fill_gdkpixbuf_supported_mime_types();
- const auto iter_find_mime_type =
- std::find(m_gdkpixbuf_supported_mime_types.begin(),
- m_gdkpixbuf_supported_mime_types.end(),
- mime_type);
- if(iter_find_mime_type != m_gdkpixbuf_supported_mime_types.end())
+ if(Utils::find_exists(m_gdkpixbuf_supported_mime_types, mime_type))
{
use_gdkpixbuf = true;
}
diff --git a/tests/test_document_load.cc b/tests/test_document_load.cc
index b01390f..3d4727f 100644
--- a/tests/test_document_load.cc
+++ b/tests/test_document_load.cc
@@ -19,6 +19,7 @@
*/
#include "tests/test_utils.h"
+#include <libglom/algorithms_utils.h>
#include <libglom/document/document.h>
#include <libglom/init.h>
#include <libglom/db_utils.h>
@@ -31,9 +32,7 @@
template<typename T_Container, typename T_Value>
bool contains(const T_Container& container, const T_Value& name)
{
- typename T_Container::const_iterator iter =
- std::find(container.begin(), container.end(), name);
- return iter != container.end();
+ return Glom::Utils::find_exists(container, name);
}
template<typename T_Container>
diff --git a/tests/test_document_load_translations.cc b/tests/test_document_load_translations.cc
index 7187915..6fe3e40 100644
--- a/tests/test_document_load_translations.cc
+++ b/tests/test_document_load_translations.cc
@@ -21,6 +21,7 @@
#include "config.h"
#include <libglom/document/document.h>
+#include <libglom/algorithms_utils.h>
#include <libglom/init.h>
#include <libglom/db_utils.h>
#include <giomm/file.h>
@@ -33,9 +34,7 @@
template<typename T_Container, typename T_Value>
bool contains(const T_Container& container, const T_Value& name)
{
- typename T_Container::const_iterator iter =
- std::find(container.begin(), container.end(), name);
- return iter != container.end();
+ return Glom::Utils::find_exists(container, name);
}
template<typename T_Container>
diff --git a/tests/test_selfhosting_new_empty_then_users.cc b/tests/test_selfhosting_new_empty_then_users.cc
index 97199bf..12c33a3 100644
--- a/tests/test_selfhosting_new_empty_then_users.cc
+++ b/tests/test_selfhosting_new_empty_then_users.cc
@@ -19,6 +19,7 @@
*/
#include "tests/test_selfhosting_utils.h"
+#include <libglom/algorithms_utils.h>
#include <libglom/init.h>
#include <libglom/utils.h>
#include <libglom/db_utils.h>
@@ -31,9 +32,7 @@
template<typename T_Container, typename T_Value>
bool contains(const T_Container& container, const T_Value& name)
{
- typename T_Container::const_iterator iter =
- std::find(container.begin(), container.end(), name);
- return iter != container.end();
+ return Glom::Utils::find_exists(container, name);
}
static bool test_add_group(const Glom::Document& document, const Glib::ustring& group)
diff --git a/tests/test_selfhosting_new_from_example_operator.cc
b/tests/test_selfhosting_new_from_example_operator.cc
index 5d0e856..05a3ed3 100644
--- a/tests/test_selfhosting_new_from_example_operator.cc
+++ b/tests/test_selfhosting_new_from_example_operator.cc
@@ -19,6 +19,8 @@
*/
#include "tests/test_selfhosting_utils.h"
+#include <libglom/algorithms_utils.h>
+#include <libglom/db_utils.h>
#include <libglom/init.h>
#include <libglom/utils.h>
#include <libglom/db_utils.h>
@@ -31,9 +33,7 @@
template<typename T_Container, typename T_Value>
bool contains(const T_Container& container, const T_Value& name)
{
- typename T_Container::const_iterator iter =
- std::find(container.begin(), container.end(), name);
- return iter != container.end();
+ return Glom::Utils::find_exists(container, name);
}
static bool test(Glom::Document::HostingMode hosting_mode)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]