diff options
-rw-r--r-- | connectivity/source/parse/sqliterator.cxx | 20 | ||||
-rw-r--r-- | include/connectivity/sqliterator.hxx | 41 |
2 files changed, 35 insertions, 26 deletions
diff --git a/connectivity/source/parse/sqliterator.cxx b/connectivity/source/parse/sqliterator.cxx index bb2906c0b683..c9572ea3d66e 100644 --- a/connectivity/source/parse/sqliterator.cxx +++ b/connectivity/source/parse/sqliterator.cxx @@ -68,13 +68,13 @@ namespace connectivity std::shared_ptr< OSQLTables > m_pSubTables; // all tables from sub queries not the tables from the select tables std::shared_ptr< QueryNameSet > m_pForbiddenQueryNames; - sal_uInt32 m_nIncludeMask; + TraversalParts m_nIncludeMask; bool m_bIsCaseSensitive; OSQLParseTreeIteratorImpl( const Reference< XConnection >& _rxConnection, const Reference< XNameAccess >& _rxTables ) :m_xConnection( _rxConnection ) - ,m_nIncludeMask( OSQLParseTreeIterator::All ) + ,m_nIncludeMask( TraversalParts::All ) ,m_bIsCaseSensitive( true ) { OSL_PRECOND( m_xConnection.is(), "OSQLParseTreeIteratorImpl::OSQLParseTreeIteratorImpl: invalid connection!" ); @@ -304,7 +304,7 @@ namespace void OSQLParseTreeIterator::impl_getQueryParameterColumns( const OSQLTable& _rQuery ) { - if ( ( m_pImpl->m_nIncludeMask & Parameters ) != Parameters ) + if ( !( m_pImpl->m_nIncludeMask & TraversalParts::Parameters ) ) // parameters not to be included in the traversal return; @@ -336,7 +336,7 @@ void OSQLParseTreeIterator::impl_getQueryParameterColumns( const OSQLTable& _rQu break; OSQLParseTreeIterator aSubQueryIterator( *this, m_rParser, pSubQueryNode.get() ); - aSubQueryIterator.traverseSome( Parameters | SelectColumns ); + aSubQueryIterator.traverseSome( TraversalParts::Parameters | TraversalParts::SelectColumns ); // SelectColumns might also contain parameters // #i77635# - 2007-07-23 / frank.schoenheit@sun.com pSubQueryParameterColumns = aSubQueryIterator.getParameters(); @@ -429,7 +429,7 @@ OSQLTable OSQLParseTreeIterator::impl_locateRecordSource( const OUString& _rComp void OSQLParseTreeIterator::traverseOneTableName( OSQLTables& _rTables,const OSQLParseNode * pTableName, const OUString & rTableRange ) { - if ( ( m_pImpl->m_nIncludeMask & TableNames ) != TableNames ) + if ( !( m_pImpl->m_nIncludeMask & TraversalParts::TableNames ) ) // tables should not be included in the traversal return; @@ -916,7 +916,7 @@ void OSQLParseTreeIterator::traverseCreateColumns(const OSQLParseNode* pSelectNo bool OSQLParseTreeIterator::traverseSelectColumnNames(const OSQLParseNode* pSelectNode) { - if ( ( m_pImpl->m_nIncludeMask & SelectColumns ) != SelectColumns ) + if ( !( m_pImpl->m_nIncludeMask & TraversalParts::SelectColumns ) ) return true; if (!pSelectNode || m_eStatementType != OSQLStatementType::Select || m_pImpl->m_pTables->empty()) @@ -1383,7 +1383,7 @@ void OSQLParseTreeIterator::traverseParameter(const OSQLParseNode* _pParseNode if ( !SQL_ISRULE( _pParseNode, parameter ) ) return; - if ( ( m_pImpl->m_nIncludeMask & Parameters ) != Parameters ) + if ( !( m_pImpl->m_nIncludeMask & TraversalParts::Parameters ) ) // parameters not to be included in the traversal return; @@ -1540,7 +1540,7 @@ void OSQLParseTreeIterator::traverseOnePredicate( } -void OSQLParseTreeIterator::traverseSome( sal_uInt32 _nIncludeMask ) +void OSQLParseTreeIterator::traverseSome( TraversalParts _nIncludeMask ) { impl_traverse( _nIncludeMask ); } @@ -1548,11 +1548,11 @@ void OSQLParseTreeIterator::traverseSome( sal_uInt32 _nIncludeMask ) void OSQLParseTreeIterator::traverseAll() { - impl_traverse( All ); + impl_traverse( TraversalParts::All ); } -void OSQLParseTreeIterator::impl_traverse( sal_uInt32 _nIncludeMask ) +void OSQLParseTreeIterator::impl_traverse( TraversalParts _nIncludeMask ) { impl_resetErrors(); m_pImpl->m_nIncludeMask = _nIncludeMask; diff --git a/include/connectivity/sqliterator.hxx b/include/connectivity/sqliterator.hxx index 7c4ce67d29ce..6afd1c4f4d66 100644 --- a/include/connectivity/sqliterator.hxx +++ b/include/connectivity/sqliterator.hxx @@ -33,6 +33,29 @@ #include <map> #include <memory> #include <vector> +#include <o3tl/typed_flags_set.hxx> + +namespace connectivity +{ + enum class TraversalParts + { + Parameters = 0x0001, + TableNames = 0x0002, + SelectColumns = 0x0006, // note that this includes TableNames. No SelectColumns without TableNames + + // Those are not implemented currently + // GroupColumns = 0x0008, + // OrderColumns = 0x0010, + // SelectColumns = 0x0020, + // CreateColumns = 0x0040, + + All = 0xFFFF + }; +} +namespace o3tl +{ + template<> struct typed_flags<connectivity::TraversalParts> : is_typed_flags<connectivity::TraversalParts, 0xffff> {}; +} namespace connectivity { @@ -185,20 +208,6 @@ namespace connectivity */ void traverseAll(); - enum TraversalParts - { - Parameters = 0x0001, - TableNames = 0x0002, - SelectColumns = 0x0006, // note that this includes TableNames. No SelectColumns without TableNames - - // Those are not implemented currently - // GroupColumns = 0x0008, - // OrderColumns = 0x0010, - // SelectColumns = 0x0020, - // CreateColumns = 0x0040, - - All = 0xFFFF - }; /** traverses selected parts of the statement tree, and fills our data with the information obtained during traversal @@ -206,7 +215,7 @@ namespace connectivity set of TraversalParts bits, specifying which information is to be collected. Note TraversalParts is currently not */ - void traverseSome( sal_uInt32 _nIncludeMask ); + void traverseSome( TraversalParts _nIncludeMask ); // The TableRangeMap contains all tables associated with the range name found first. const OSQLTables& getTables() const; @@ -322,7 +331,7 @@ namespace connectivity /** implementation for both traverseAll and traverseSome */ - void impl_traverse( sal_uInt32 _nIncludeMask ); + void impl_traverse( TraversalParts _nIncludeMask ); /** retrieves the parameter columns of the given query */ |