summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--connectivity/source/parse/sqliterator.cxx20
-rw-r--r--include/connectivity/sqliterator.hxx41
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
*/