User: hr Date: 06/06/19 19:34:58 Modified: /dba/dbaccess/source/core/api/ FilteredContainer.cxx
Log: INTEGRATION: CWS warnings01 (1.6.48); FILE MERGED 2006/03/24 15:35:45 fs 1.6.48.1: #i57457# warning-free code (unxlngi6/.pro + unxsoli4.pro) File Changes: Directory: /dba/dbaccess/source/core/api/ ========================================= File [changed]: FilteredContainer.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/core/api/FilteredContainer.cxx?r1=1.6&r2=1.7 Delta lines: +23 -26 --------------------- --- FilteredContainer.cxx 8 Sep 2005 09:57:48 -0000 1.6 +++ FilteredContainer.cxx 20 Jun 2006 02:34:56 -0000 1.7 @@ -65,20 +65,6 @@ using namespace ::connectivity::sdbcx; //------------------------------------------------------------------------------ - /** compare two strings - */ - extern int - #if defined( WNT ) - __cdecl - #endif - #if defined( ICC ) && defined( OS2 ) - _Optlink - #endif - NameCompare( const void* pFirst, const void* pSecond) - { - return reinterpret_cast< const ::rtl::OUString* >(pFirst)->compareTo(*reinterpret_cast< const ::rtl::OUString* >(pSecond)); - } - //------------------------------------------------------------------------------ /** creates a vector of WildCards and reduce the _rTableFilter of the length of WildsCards */ sal_Int32 createWildCardVector(Sequence< ::rtl::OUString >& _rTableFilter, ::std::vector< WildCard >& _rOut) @@ -119,10 +105,10 @@ IRefreshListener* _pRefreshListener, IWarningsContainer* _pWarningsContainer) :OCollection(_rParent,_bCase,_rMutex,::std::vector< ::rtl::OUString>()) - ,m_bConstructed(sal_False) - ,m_xConnection(_xCon) ,m_pWarningsContainer(_pWarningsContainer) ,m_pRefreshListener(_pRefreshListener) + ,m_xConnection(_xCon) + ,m_bConstructed(sal_False) { } @@ -154,8 +140,9 @@ { Sequence< ::rtl::OUString > aTableFilter = _rTableFilter; Sequence< ::rtl::OUString > aTableTypeFilter = _rTableTypeFilter; + // build sorted versions of the filter sequences, so the visibility decision is faster - qsort(aTableFilter.getArray(), nTableFilterLen, sizeof(::rtl::OUString), NameCompare); + ::std::sort( aTableFilter.getArray(), aTableFilter.getArray() + nTableFilterLen ); // as we want to modify nTableFilterLen, remember this @@ -208,7 +195,7 @@ sal_Int32 nTableFilterLen = aTableFilter.getLength(); if (nTableFilterLen) - qsort(aTableFilter.getArray(), nTableFilterLen, sizeof(::rtl::OUString), NameCompare); + ::std::sort( aTableFilter.getArray(), aTableFilter.getArray() + nTableFilterLen ); sal_Bool bNoTableFilters = ((nTableFilterLen == 1) && _rTableFilter[0].equalsAsciiL("%", 1)); // as we want to modify nTableFilterLen, remember this @@ -253,8 +240,16 @@ // that case, which is sufficient here composeTableName(m_xMetaData, sCatalog, sSchema, sName, sComposedName, sal_False,::dbtools::eInDataManipulation); + + const ::rtl::OUString* tableFilter = aTableFilter.getConstArray(); + const ::rtl::OUString* tableFilterEnd = aTableFilter.getConstArray() + nTableFilterLen; + bool composedNameInFilter = ::std::find( tableFilter, tableFilterEnd, sComposedName ) != tableFilterEnd; + bFilterMatch = bNoTableFilters - || ((nTableFilterLen != 0) && (NULL != bsearch(&sComposedName, aTableFilter.getConstArray(), nTableFilterLen, sizeof(::rtl::OUString), NameCompare))); + || ( ( nTableFilterLen != 0 ) + && composedNameInFilter + ); + // the table is allowed to "pass" if we had no filters at all or any of the non-wildcard filters matches if (!bFilterMatch && aWCSearch.size()) @@ -318,12 +313,14 @@ // ------------------------------------------------------------------------- sal_Bool OFilteredContainer::isNameValid( const ::rtl::OUString& _rName, const Sequence< ::rtl::OUString >& _rTableFilter, - const Sequence< ::rtl::OUString >& _rTableTypeFilter, + const Sequence< ::rtl::OUString >& /*_rTableTypeFilter*/, const ::std::vector< WildCard >& _rWCSearch) const { sal_Int32 nTableFilterLen = _rTableFilter.getLength(); - sal_Bool bFilterMatch = (NULL != bsearch(&_rName, _rTableFilter.getConstArray(), nTableFilterLen, sizeof(::rtl::OUString), NameCompare)); + const ::rtl::OUString* tableFilter = _rTableFilter.getConstArray(); + const ::rtl::OUString* tableFilterEnd = _rTableFilter.getConstArray() + nTableFilterLen; + bool bFilterMatch = ::std::find( tableFilter, tableFilterEnd, _rName ) != tableFilterEnd; // the table is allowed to "pass" if we had no filters at all or any of the non-wildcard filters matches if (!bFilterMatch && !_rWCSearch.empty()) { // or if one of the wildcrad expression matches --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
