Kaydet (Commit) 7a67d7a7 authored tarafından Jochen Nitschke's avatar Jochen Nitschke Kaydeden (comit) Noel Grandin

use more thread safe static initializer in postgresql driver

Change-Id: Idb210207112994e1247c35e0dce1c6cd2f80f371
Reviewed-on: https://gerrit.libreoffice.org/53365Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst b4ba8dc9
...@@ -84,44 +84,34 @@ namespace pq_sdbc_driver ...@@ -84,44 +84,34 @@ namespace pq_sdbc_driver
{ {
static ::cppu::IPropertyArrayHelper & getResultSetPropertyArrayHelper() static ::cppu::IPropertyArrayHelper & getResultSetPropertyArrayHelper()
{ {
static ::cppu::IPropertyArrayHelper *pArrayHelper; // LEM TODO: this needs to be kept in sync with other, e.g. pq_statics.css:508
if( ! pArrayHelper ) // Should really share!
{ // At least use for the handles the #define'd values in .hxx file...
MutexGuard guard( Mutex::getGlobalMutex() ); static ::cppu::OPropertyArrayHelper arrayHelper(
if( ! pArrayHelper ) Sequence<Property>{
{ Property(
static Property aTable[] = "CursorName", 0,
{ ::cppu::UnoType<OUString>::get() , 0 ),
// LEM TODO: this needs to be kept in sync with other, e.g. pq_statics.css:508 Property(
// Should really share! "EscapeProcessing", 1,
// At least use for the handles the #define'd values in .hxx file... cppu::UnoType<bool>::get() , 0 ),
Property( Property(
"CursorName", 0, "FetchDirection", 2,
::cppu::UnoType<OUString>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"EscapeProcessing", 1, "FetchSize", 3,
cppu::UnoType<bool>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"FetchDirection", 2, "IsBookmarkable", 4,
::cppu::UnoType<sal_Int32>::get() , 0 ), cppu::UnoType<bool>::get() , 0 ),
Property( Property(
"FetchSize", 3, "ResultSetConcurrency", 5,
::cppu::UnoType<sal_Int32>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"IsBookmarkable", 4, "ResultSetType", 6,
cppu::UnoType<bool>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 )},
Property( true );
"ResultSetConcurrency", 5, static ::cppu::IPropertyArrayHelper *pArrayHelper = &arrayHelper;
::cppu::UnoType<sal_Int32>::get() , 0 ),
Property(
"ResultSetType", 6,
::cppu::UnoType<sal_Int32>::get() , 0 )
};
static_assert( SAL_N_ELEMENTS(aTable) == BASERESULTSET_SIZE, "wrong number of elements" );
static ::cppu::OPropertyArrayHelper arrayHelper( aTable, BASERESULTSET_SIZE, true );
pArrayHelper = &arrayHelper;
}
}
return *pArrayHelper; return *pArrayHelper;
} }
...@@ -176,20 +166,11 @@ Any BaseResultSet::queryInterface( const Type & rType ) ...@@ -176,20 +166,11 @@ Any BaseResultSet::queryInterface( const Type & rType )
Sequence<Type > BaseResultSet::getTypes() Sequence<Type > BaseResultSet::getTypes()
{ {
static Sequence< Type > *pCollection; static Sequence< Type > collection(
if( ! pCollection ) ::comphelper::concatSequences(
{ OPropertySetHelper::getTypes(),
MutexGuard guard( osl::Mutex::getGlobalMutex() ); BaseResultSet_BASE::getTypes()));
if( !pCollection ) return collection;
{
static Sequence< Type > collection(
::comphelper::concatSequences(
OPropertySetHelper::getTypes(),
BaseResultSet_BASE::getTypes()));
pCollection = &collection;
}
}
return *pCollection;
} }
Sequence< sal_Int8> BaseResultSet::getImplementationId() Sequence< sal_Int8> BaseResultSet::getImplementationId()
......
...@@ -39,8 +39,6 @@ ...@@ -39,8 +39,6 @@
#include <cppuhelper/typeprovider.hxx> #include <cppuhelper/typeprovider.hxx>
#include <cppuhelper/queryinterface.hxx> #include <cppuhelper/queryinterface.hxx>
using osl::MutexGuard;
using com::sun::star::uno::Sequence; using com::sun::star::uno::Sequence;
using com::sun::star::uno::Any; using com::sun::star::uno::Any;
...@@ -82,20 +80,12 @@ css::uno::Any FakedUpdateableResultSet::queryInterface( ...@@ -82,20 +80,12 @@ css::uno::Any FakedUpdateableResultSet::queryInterface(
css::uno::Sequence< css::uno::Type > FakedUpdateableResultSet::getTypes() css::uno::Sequence< css::uno::Type > FakedUpdateableResultSet::getTypes()
{ {
static cppu::OTypeCollection *pCollection; static cppu::OTypeCollection s_collection(
if( ! pCollection ) cppu::UnoType<XResultSetUpdate>::get(),
{ cppu::UnoType<XRowUpdate>::get(),
MutexGuard guard( osl::Mutex::getGlobalMutex() ); ResultSet::getTypes());
if( !pCollection )
{ return s_collection.getTypes();
static cppu::OTypeCollection collection(
cppu::UnoType<XResultSetUpdate>::get(),
cppu::UnoType<XRowUpdate>::get(),
ResultSet::getTypes());
pCollection = &collection;
}
}
return pCollection->getTypes();
} }
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
#include <connectivity/dbconversion.hxx> #include <connectivity/dbconversion.hxx>
using osl::Mutex;
using osl::MutexGuard; using osl::MutexGuard;
...@@ -90,47 +89,38 @@ namespace pq_sdbc_driver ...@@ -90,47 +89,38 @@ namespace pq_sdbc_driver
{ {
static ::cppu::IPropertyArrayHelper & getPreparedStatementPropertyArrayHelper() static ::cppu::IPropertyArrayHelper & getPreparedStatementPropertyArrayHelper()
{ {
static ::cppu::IPropertyArrayHelper *pArrayHelper; static ::cppu::OPropertyArrayHelper arrayHelper(
if( ! pArrayHelper ) Sequence<Property>{
{ Property(
MutexGuard guard( Mutex::getGlobalMutex() ); "CursorName", 0,
if( ! pArrayHelper ) ::cppu::UnoType<OUString>::get() , 0 ),
{ Property(
static Property aTable[] = "EscapeProcessing", 1,
{ cppu::UnoType<bool>::get() , 0 ),
Property( Property(
"CursorName", 0, "FetchDirection", 2,
::cppu::UnoType<OUString>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"EscapeProcessing", 1, "FetchSize", 3,
cppu::UnoType<bool>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"FetchDirection", 2, "MaxFieldSize", 4,
::cppu::UnoType<sal_Int32>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"FetchSize", 3, "MaxRows", 5,
::cppu::UnoType<sal_Int32>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"MaxFieldSize", 4, "QueryTimeOut", 6,
::cppu::UnoType<sal_Int32>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"MaxRows", 5, "ResultSetConcurrency", 7,
::cppu::UnoType<sal_Int32>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"QueryTimeOut", 6, "ResultSetType", 8,
::cppu::UnoType<sal_Int32>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 )},
Property( true );
"ResultSetConcurrency", 7, static ::cppu::IPropertyArrayHelper *pArrayHelper = &arrayHelper;
::cppu::UnoType<sal_Int32>::get() , 0 ),
Property(
"ResultSetType", 8,
::cppu::UnoType<sal_Int32>::get() , 0 )
};
static_assert( SAL_N_ELEMENTS(aTable) == PREPARED_STATEMENT_SIZE, "wrong number of elements" );
static ::cppu::OPropertyArrayHelper arrayHelper( aTable, PREPARED_STATEMENT_SIZE, true );
pArrayHelper = &arrayHelper;
}
}
return *pArrayHelper; return *pArrayHelper;
} }
...@@ -239,20 +229,12 @@ Any PreparedStatement::queryInterface( const Type & rType ) ...@@ -239,20 +229,12 @@ Any PreparedStatement::queryInterface( const Type & rType )
Sequence< Type > PreparedStatement::getTypes() Sequence< Type > PreparedStatement::getTypes()
{ {
static Sequence< Type > *pCollection; static Sequence< Type > collection(
if( ! pCollection ) ::comphelper::concatSequences(
{ OPropertySetHelper::getTypes(),
MutexGuard guard( osl::Mutex::getGlobalMutex() ); PreparedStatement_BASE::getTypes()));
if( !pCollection )
{ return collection;
static Sequence< Type > collection(
::comphelper::concatSequences(
OPropertySetHelper::getTypes(),
PreparedStatement_BASE::getTypes()));
pCollection = &collection;
}
}
return *pCollection;
} }
Sequence< sal_Int8> PreparedStatement::getImplementationId() Sequence< sal_Int8> PreparedStatement::getImplementationId()
......
...@@ -67,7 +67,6 @@ ...@@ -67,7 +67,6 @@
#include <string.h> #include <string.h>
using osl::Mutex;
using osl::MutexGuard; using osl::MutexGuard;
...@@ -108,47 +107,39 @@ namespace pq_sdbc_driver ...@@ -108,47 +107,39 @@ namespace pq_sdbc_driver
{ {
static ::cppu::IPropertyArrayHelper & getStatementPropertyArrayHelper() static ::cppu::IPropertyArrayHelper & getStatementPropertyArrayHelper()
{ {
static ::cppu::IPropertyArrayHelper *pArrayHelper; static ::cppu::OPropertyArrayHelper arrayHelper(
if( ! pArrayHelper ) Sequence<Property>{
{ Property(
MutexGuard guard( Mutex::getGlobalMutex() ); "CursorName", 0,
if( ! pArrayHelper ) ::cppu::UnoType<OUString>::get() , 0 ),
{ Property(
static Property aTable[] = "EscapeProcessing", 1,
{ cppu::UnoType<bool>::get() , 0 ),
Property( Property(
"CursorName", 0, "FetchDirection", 2,
::cppu::UnoType<OUString>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"EscapeProcessing", 1, "FetchSize", 3,
cppu::UnoType<bool>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"FetchDirection", 2, "MaxFieldSize", 4,
::cppu::UnoType<sal_Int32>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"FetchSize", 3, "MaxRows", 5,
::cppu::UnoType<sal_Int32>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"MaxFieldSize", 4, "QueryTimeOut", 6,
::cppu::UnoType<sal_Int32>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"MaxRows", 5, "ResultSetConcurrency", 7,
::cppu::UnoType<sal_Int32>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 ),
Property( Property(
"QueryTimeOut", 6, "ResultSetType", 8,
::cppu::UnoType<sal_Int32>::get() , 0 ), ::cppu::UnoType<sal_Int32>::get() , 0 )},
Property( true );
"ResultSetConcurrency", 7,
::cppu::UnoType<sal_Int32>::get() , 0 ), static ::cppu::IPropertyArrayHelper *pArrayHelper = &arrayHelper;
Property(
"ResultSetType", 8,
::cppu::UnoType<sal_Int32>::get() , 0 )
};
static_assert( SAL_N_ELEMENTS(aTable) == STATEMENT_SIZE, "wrong number of elements" );
static ::cppu::OPropertyArrayHelper arrayHelper( aTable, STATEMENT_SIZE, true );
pArrayHelper = &arrayHelper;
}
}
return *pArrayHelper; return *pArrayHelper;
} }
...@@ -194,20 +185,12 @@ Any Statement::queryInterface( const Type & rType ) ...@@ -194,20 +185,12 @@ Any Statement::queryInterface( const Type & rType )
Sequence< Type > Statement::getTypes() Sequence< Type > Statement::getTypes()
{ {
static Sequence< Type > *pCollection; static Sequence< Type > collection(
if( ! pCollection ) ::comphelper::concatSequences(
{ OPropertySetHelper::getTypes(),
MutexGuard guard( osl::Mutex::getGlobalMutex() ); Statement_BASE::getTypes()));
if( !pCollection )
{ return collection;
static Sequence< Type > collection(
::comphelper::concatSequences(
OPropertySetHelper::getTypes(),
Statement_BASE::getTypes()));
pCollection = &collection;
}
}
return *pCollection;
} }
Sequence< sal_Int8> Statement::getImplementationId() Sequence< sal_Int8> Statement::getImplementationId()
......
...@@ -147,20 +147,12 @@ css::uno::Any UpdateableResultSet::queryInterface( ...@@ -147,20 +147,12 @@ css::uno::Any UpdateableResultSet::queryInterface(
css::uno::Sequence< css::uno::Type > UpdateableResultSet::getTypes() css::uno::Sequence< css::uno::Type > UpdateableResultSet::getTypes()
{ {
static cppu::OTypeCollection *pCollection; static cppu::OTypeCollection collection(
if( ! pCollection ) cppu::UnoType<XResultSetUpdate>::get(),
{ cppu::UnoType<XRowUpdate>::get(),
MutexGuard guard( osl::Mutex::getGlobalMutex() ); SequenceResultSet::getTypes());
if( !pCollection )
{ return collection.getTypes();
static cppu::OTypeCollection collection(
cppu::UnoType<XResultSetUpdate>::get(),
cppu::UnoType<XRowUpdate>::get(),
SequenceResultSet::getTypes());
pCollection = &collection;
}
}
return pCollection->getTypes();
} }
......
...@@ -46,9 +46,6 @@ ...@@ -46,9 +46,6 @@
#include "pq_tools.hxx" #include "pq_tools.hxx"
#include "pq_statics.hxx" #include "pq_statics.hxx"
using osl::MutexGuard;
using osl::Mutex;
using com::sun::star::container::XNameAccess; using com::sun::star::container::XNameAccess;
using com::sun::star::uno::Reference; using com::sun::star::uno::Reference;
...@@ -103,19 +100,11 @@ Reference< XNameAccess > Index::getColumns( ) ...@@ -103,19 +100,11 @@ Reference< XNameAccess > Index::getColumns( )
Sequence<Type > Index::getTypes() Sequence<Type > Index::getTypes()
{ {
static cppu::OTypeCollection *pCollection; static cppu::OTypeCollection collection(
if( ! pCollection ) cppu::UnoType<css::sdbcx::XColumnsSupplier>::get(),
{ ReflectionBase::getTypes());
MutexGuard guard( osl::Mutex::getGlobalMutex() );
if( !pCollection ) return collection.getTypes();
{
static cppu::OTypeCollection collection(
cppu::UnoType<css::sdbcx::XColumnsSupplier>::get(),
ReflectionBase::getTypes());
pCollection = &collection;
}
}
return pCollection->getTypes();
} }
Sequence< sal_Int8> Index::getImplementationId() Sequence< sal_Int8> Index::getImplementationId()
...@@ -175,19 +164,11 @@ Reference< XNameAccess > IndexDescriptor::getColumns( ) ...@@ -175,19 +164,11 @@ Reference< XNameAccess > IndexDescriptor::getColumns( )
Sequence<Type > IndexDescriptor::getTypes() Sequence<Type > IndexDescriptor::getTypes()
{ {
static cppu::OTypeCollection *pCollection; static cppu::OTypeCollection collection(
if( ! pCollection ) cppu::UnoType<css::sdbcx::XColumnsSupplier>::get(),
{ ReflectionBase::getTypes());
MutexGuard guard( osl::Mutex::getGlobalMutex() );
if( !pCollection ) return collection.getTypes();
{
static cppu::OTypeCollection collection(
cppu::UnoType<css::sdbcx::XColumnsSupplier>::get(),
ReflectionBase::getTypes());
pCollection = &collection;
}
}
return pCollection->getTypes();
} }
Sequence< sal_Int8> IndexDescriptor::getImplementationId() Sequence< sal_Int8> IndexDescriptor::getImplementationId()
......
...@@ -46,9 +46,6 @@ ...@@ -46,9 +46,6 @@
#include "pq_tools.hxx" #include "pq_tools.hxx"
#include "pq_statics.hxx" #include "pq_statics.hxx"
using osl::MutexGuard;
using osl::Mutex;
using com::sun::star::container::XNameAccess; using com::sun::star::container::XNameAccess;
using com::sun::star::uno::Reference; using com::sun::star::uno::Reference;
...@@ -105,19 +102,11 @@ Reference< XNameAccess > Key::getColumns( ) ...@@ -105,19 +102,11 @@ Reference< XNameAccess > Key::getColumns( )
Sequence<Type > Key::getTypes() Sequence<Type > Key::getTypes()
{ {
static cppu::OTypeCollection *pCollection; static cppu::OTypeCollection collection(
if( ! pCollection ) cppu::UnoType<css::sdbcx::XColumnsSupplier>::get(),
{ ReflectionBase::getTypes());
MutexGuard guard( osl::Mutex::getGlobalMutex() );
if( !pCollection ) return collection.getTypes();
{
static cppu::OTypeCollection collection(
cppu::UnoType<css::sdbcx::XColumnsSupplier>::get(),
ReflectionBase::getTypes());
pCollection = &collection;
}
}
return pCollection->getTypes();
} }
Sequence< sal_Int8> Key::getImplementationId() Sequence< sal_Int8> Key::getImplementationId()
...@@ -172,19 +161,11 @@ Reference< XNameAccess > KeyDescriptor::getColumns( ) ...@@ -172,19 +161,11 @@ Reference< XNameAccess > KeyDescriptor::getColumns( )
Sequence<Type > KeyDescriptor::getTypes() Sequence<Type > KeyDescriptor::getTypes()
{ {
static cppu::OTypeCollection *pCollection; static cppu::OTypeCollection collection(
if( ! pCollection ) cppu::UnoType<css::sdbcx::XColumnsSupplier>::get(),
{ ReflectionBase::getTypes());
MutexGuard guard( osl::Mutex::getGlobalMutex() );
if( !pCollection ) return collection.getTypes();
{
static cppu::OTypeCollection collection(
cppu::UnoType<css::sdbcx::XColumnsSupplier>::get(),
ReflectionBase::getTypes());
pCollection = &collection;
}
}
return pCollection->getTypes();
} }
Sequence< sal_Int8> KeyDescriptor::getImplementationId() Sequence< sal_Int8> KeyDescriptor::getImplementationId()
......
...@@ -263,23 +263,15 @@ void Table::alterColumnByIndex( ...@@ -263,23 +263,15 @@ void Table::alterColumnByIndex(
Sequence<Type > Table::getTypes() Sequence<Type > Table::getTypes()
{ {
static cppu::OTypeCollection *pCollection; static cppu::OTypeCollection collection(
if( ! pCollection ) cppu::UnoType<css::sdbcx::XIndexesSupplier>::get(),
{ cppu::UnoType<css::sdbcx::XKeysSupplier>::get(),
MutexGuard guard( osl::Mutex::getGlobalMutex() ); cppu::UnoType<css::sdbcx::XColumnsSupplier>::get(),
if( !pCollection ) cppu::UnoType<css::sdbcx::XRename>::get(),
{ cppu::UnoType<css::sdbcx::XAlterTable>::get(),
static cppu::OTypeCollection collection( ReflectionBase::getTypes());
cppu::UnoType<css::sdbcx::XIndexesSupplier>::get(),
cppu::UnoType<css::sdbcx::XKeysSupplier>::get(), return collection.getTypes();
cppu::UnoType<css::sdbcx::XColumnsSupplier>::get(),
cppu::UnoType<css::sdbcx::XRename>::get(),
cppu::UnoType<css::sdbcx::XAlterTable>::get(),
ReflectionBase::getTypes());
pCollection = &collection;
}
}
return pCollection->getTypes();
} }
Sequence< sal_Int8> Table::getImplementationId() Sequence< sal_Int8> Table::getImplementationId()
...@@ -368,21 +360,13 @@ Reference< XIndexAccess > TableDescriptor::getKeys( ) ...@@ -368,21 +360,13 @@ Reference< XIndexAccess > TableDescriptor::getKeys( )
Sequence<Type > TableDescriptor::getTypes() Sequence<Type > TableDescriptor::getTypes()
{ {
static cppu::OTypeCollection *pCollection; static cppu::OTypeCollection collection(
if( ! pCollection ) cppu::UnoType<css::sdbcx::XIndexesSupplier>::get(),
{ cppu::UnoType<css::sdbcx::XKeysSupplier>::get(),
MutexGuard guard( osl::Mutex::getGlobalMutex() ); cppu::UnoType<css::sdbcx::XColumnsSupplier>::get(),
if( !pCollection ) ReflectionBase::getTypes());
{
static cppu::OTypeCollection collection( return collection.getTypes();
cppu::UnoType<css::sdbcx::XIndexesSupplier>::get(),
cppu::UnoType<css::sdbcx::XKeysSupplier>::get(),
cppu::UnoType<css::sdbcx::XColumnsSupplier>::get(),
ReflectionBase::getTypes());
pCollection = &collection;
}
}
return pCollection->getTypes();
} }
Sequence< sal_Int8> TableDescriptor::getImplementationId() Sequence< sal_Int8> TableDescriptor::getImplementationId()
......
...@@ -46,9 +46,6 @@ ...@@ -46,9 +46,6 @@
#include "pq_tools.hxx" #include "pq_tools.hxx"
#include "pq_statics.hxx" #include "pq_statics.hxx"
using osl::MutexGuard;
using osl::Mutex;
using com::sun::star::uno::Reference; using com::sun::star::uno::Reference;
using com::sun::star::uno::Sequence; using com::sun::star::uno::Sequence;
using com::sun::star::uno::Any; using com::sun::star::uno::Any;
...@@ -86,19 +83,11 @@ Reference< XPropertySet > User::createDataDescriptor( ) ...@@ -86,19 +83,11 @@ Reference< XPropertySet > User::createDataDescriptor( )
Sequence<Type > User::getTypes() Sequence<Type > User::getTypes()
{ {
static cppu::OTypeCollection *pCollection; static cppu::OTypeCollection collection(
if( ! pCollection ) cppu::UnoType<css::sdbcx::XUser>::get(),
{ ReflectionBase::getTypes());
MutexGuard guard( osl::Mutex::getGlobalMutex() );
if( !pCollection ) return collection.getTypes();
{
static cppu::OTypeCollection collection(
cppu::UnoType<css::sdbcx::XUser>::get(),
ReflectionBase::getTypes());
pCollection = &collection;
}
}
return pCollection->getTypes();
} }
Sequence< sal_Int8> User::getImplementationId() Sequence< sal_Int8> User::getImplementationId()
......
...@@ -48,7 +48,6 @@ ...@@ -48,7 +48,6 @@
#include "pq_tools.hxx" #include "pq_tools.hxx"
using osl::MutexGuard; using osl::MutexGuard;
using osl::Mutex;
using com::sun::star::uno::Reference; using com::sun::star::uno::Reference;
using com::sun::star::uno::Sequence; using com::sun::star::uno::Sequence;
...@@ -156,19 +155,11 @@ void View::rename( const OUString& newName ) ...@@ -156,19 +155,11 @@ void View::rename( const OUString& newName )
Sequence<Type > View::getTypes() Sequence<Type > View::getTypes()
{ {
static cppu::OTypeCollection *pCollection; static cppu::OTypeCollection collection(
if( ! pCollection ) cppu::UnoType<css::sdbcx::XRename>::get(),
{ ReflectionBase::getTypes());
MutexGuard guard( osl::Mutex::getGlobalMutex() );
if( !pCollection ) return collection.getTypes();
{
static cppu::OTypeCollection collection(
cppu::UnoType<css::sdbcx::XRename>::get(),
ReflectionBase::getTypes());
pCollection = &collection;
}
}
return pCollection->getTypes();
} }
Sequence< sal_Int8> View::getImplementationId() Sequence< sal_Int8> View::getImplementationId()
......
Markdown is supported
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