Commit 16bc9123 authored by Murray Cumming's avatar Murray Cumming
Browse files

ConnectionPool: Use std::shared_ptr<> for m_field_types.

parent 077dfc3a
......@@ -112,7 +112,6 @@ ConnectionPool::ConnectionPool()
m_dialog_epc_progress(nullptr),
m_sharedconnection_refcount(0),
m_ready_to_connect(false),
m_pFieldTypes(nullptr),
m_show_debug_output(false),
m_auto_server_shutdown(true),
m_fake_connection(false)
......@@ -121,8 +120,6 @@ ConnectionPool::ConnectionPool()
ConnectionPool::~ConnectionPool()
{
delete m_pFieldTypes;
m_pFieldTypes = nullptr;
}
//static
......@@ -372,8 +369,8 @@ std::shared_ptr<SharedConnection> ConnectionPool::connect()
// Connection succeeded
// Create the fieldtypes member if it has not already been done:
if(!m_pFieldTypes)
m_pFieldTypes = new FieldTypes(m_refGdaConnection);
if(!m_field_types)
m_field_types = std::make_shared<FieldTypes>(m_refGdaConnection);
#ifndef G_OS_WIN32
//Let other clients discover this server via avahi:
......@@ -504,13 +501,13 @@ Glib::ustring ConnectionPool::get_database() const
return m_database;
}
const FieldTypes* ConnectionPool::get_field_types() const
std::shared_ptr<const FieldTypes> ConnectionPool::get_field_types() const
{
//TODO: Investigate this:
//if(!m_pFieldTypes)
// std::cerr << G_STRFUNC << ": m_pFieldTypes is null but this should never happen." << std::endl;
//if(!m_field_types)
// std::cerr << G_STRFUNC << ": m_field_types is null but this should never happen." << std::endl;
return m_pFieldTypes;
return m_field_types;
}
Gnome::Gda::SqlOperatorType ConnectionPool::get_string_find_operator() const
......@@ -532,8 +529,7 @@ void ConnectionPool::invalidate_connection()
m_refGdaConnection.reset();
m_sharedconnection_refcount = 0;
delete m_pFieldTypes;
m_pFieldTypes = nullptr;
m_field_types.reset();
}
void ConnectionPool::on_sharedconnection_finished()
......
......@@ -197,7 +197,7 @@ public:
Glib::ustring get_password() const;
Glib::ustring get_database() const;
const FieldTypes* get_field_types() const;
std::shared_ptr<const FieldTypes> get_field_types() const;
Gnome::Gda::SqlOperatorType get_string_find_operator() const;
typedef Backend::InitErrors InitErrors;
......@@ -342,7 +342,7 @@ private:
bool m_ready_to_connect;
Glib::ustring m_user, m_password, m_database;
FieldTypes* m_pFieldTypes;
std::shared_ptr<FieldTypes> m_field_types;
bool m_show_debug_output, m_auto_server_shutdown;
bool m_fake_connection;
......
......@@ -132,7 +132,7 @@ Glib::RefPtr<const Gnome::Gda::Column> Field::get_field_info() const
return m_field_info;
}
static const FieldTypes* get_field_types()
static std::shared_ptr<const FieldTypes> get_field_types()
{
auto connection_pool = ConnectionPool::get_instance();
if(!connection_pool)
......@@ -161,12 +161,12 @@ void Field::set_field_info(const Glib::RefPtr<Gnome::Gda::Column>& fieldinfo)
{
cur_type = get_gda_type_for_glom_type(glom_type);
const auto pFieldTypes = get_field_types();
const auto field_types = get_field_types();
if(pFieldTypes)
if(field_types)
{
while(cur_type != new_type && cur_type != G_TYPE_NONE)
cur_type = pFieldTypes->get_fallback_type_for_gdavaluetype(cur_type);
cur_type = field_types->get_fallback_type_for_gdavaluetype(cur_type);
}
}
......@@ -188,13 +188,13 @@ void Field::set_field_info(const Glib::RefPtr<Gnome::Gda::Column>& fieldinfo)
GType Field::get_gda_data_type_with_fallback(const Gnome::Gda::Value& value)
{
auto cur_type = get_gda_type_for_glom_type(get_glom_type());
const auto pFieldTypes = get_field_types();
const auto field_types = get_field_types();
// Take into account that value might be one of the fallback types
if(pFieldTypes)
if(field_types)
{
while(cur_type != value.get_value_type() && cur_type != G_TYPE_NONE)
cur_type = pFieldTypes->get_fallback_type_for_gdavaluetype(cur_type);
cur_type = field_types->get_fallback_type_for_gdavaluetype(cur_type);
}
return cur_type;
......@@ -538,11 +538,11 @@ Glib::ustring Field::get_sql_type() const
auto pConnectionPool = ConnectionPool::get_instance();
if(pConnectionPool)
{
const auto pFieldTypes = pConnectionPool->get_field_types();
if(pFieldTypes)
const auto field_types = pConnectionPool->get_field_types();
if(field_types)
{
const auto fieldType = m_field_info->get_g_type();
strType = pFieldTypes->get_string_name_for_gdavaluetype(fieldType);
strType = field_types->get_string_name_for_gdavaluetype(fieldType);
}
else
{
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment