|
@@ -39,7 +39,7 @@ namespace Framework
|
|
delete parent;
|
|
delete parent;
|
|
}
|
|
}
|
|
|
|
|
|
- TrieIteratorData &operator=( TrieIteratorData &data )
|
|
|
|
|
|
+ TrieIteratorData &operator=( const TrieIteratorData &data )
|
|
{
|
|
{
|
|
map = data.map;
|
|
map = data.map;
|
|
TrieIteratorData *tmp = parent;
|
|
TrieIteratorData *tmp = parent;
|
|
@@ -73,29 +73,37 @@ namespace Framework
|
|
|
|
|
|
TrieIterator next()
|
|
TrieIterator next()
|
|
{
|
|
{
|
|
- Trie<T> *n = 0;
|
|
|
|
- for( int i = 0; i < 256; i++ )
|
|
|
|
|
|
+ for( unsigned char i = 0; true; i++ )
|
|
{
|
|
{
|
|
if( data.map->z( i ) )
|
|
if( data.map->z( i ) )
|
|
return TrieIterator( TrieIteratorData<T>( data.map->z( i )->map, data ) );
|
|
return TrieIterator( TrieIteratorData<T>( data.map->z( i )->map, data ) );
|
|
|
|
+ if( i == 255 )
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
if( !data.parent || !data.parent->map )
|
|
if( !data.parent || !data.parent->map )
|
|
return TrieIterator( TrieIteratorData<T>( 0, TrieIteratorData<T>() ) );
|
|
return TrieIterator( TrieIteratorData<T>( 0, TrieIteratorData<T>() ) );
|
|
TrieIteratorData<T> d = data;
|
|
TrieIteratorData<T> d = data;
|
|
do
|
|
do
|
|
{
|
|
{
|
|
- for( int i = 0; i < 256; i++ )
|
|
|
|
|
|
+ for( unsigned char i = 0; true; i++ )
|
|
{
|
|
{
|
|
if( d.parent->map->z( i ) && d.parent->map->z( i )->map == d.map )
|
|
if( d.parent->map->z( i ) && d.parent->map->z( i )->map == d.map )
|
|
{
|
|
{
|
|
- for( int j = i + 1; j < 256; j++ )
|
|
|
|
|
|
+ if( i < 256 )
|
|
{
|
|
{
|
|
- if( d.parent->map->z( j ) )
|
|
|
|
- return TrieIterator( TrieIteratorData<T>( d.parent->map->z( j )->map, *d.parent ) );
|
|
|
|
|
|
+ for( unsigned char j = (unsigned char)( i + 1 ); true; j++ )
|
|
|
|
+ {
|
|
|
|
+ if( d.parent->map->z( j ) )
|
|
|
|
+ return TrieIterator( TrieIteratorData<T>( d.parent->map->z( j )->map, *d.parent ) );
|
|
|
|
+ if( j == 255 )
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
d = *d.parent;
|
|
d = *d.parent;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
+ if( i == 255 )
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
} while( d.parent && d.parent->map );
|
|
} while( d.parent && d.parent->map );
|
|
return TrieIterator( TrieIteratorData<T>( 0, TrieIteratorData<T>() ) );
|
|
return TrieIterator( TrieIteratorData<T>( 0, TrieIteratorData<T>() ) );
|
|
@@ -103,15 +111,15 @@ namespace Framework
|
|
|
|
|
|
TrieIterator< T > &operator++() //! prefix
|
|
TrieIterator< T > &operator++() //! prefix
|
|
{
|
|
{
|
|
- TrieIterator< T > temp( *this );
|
|
|
|
- *this = next();
|
|
|
|
- return temp;
|
|
|
|
|
|
+ data = next().data;
|
|
|
|
+ return *this;
|
|
}
|
|
}
|
|
|
|
|
|
- TrieIterator< T > &operator++( int ) //! postfix
|
|
|
|
|
|
+ TrieIterator< T > operator++( int ) //! postfix
|
|
{
|
|
{
|
|
- *this = next();
|
|
|
|
- return *this;
|
|
|
|
|
|
+ TrieIterator< T > temp( *this );
|
|
|
|
+ data = next().data;
|
|
|
|
+ return temp;
|
|
}
|
|
}
|
|
|
|
|
|
operator bool()
|
|
operator bool()
|