~eda-qa/dhlib/main

« back to all changes in this revision

Viewing changes to restricted/wordlib/src/trie.h

  • Committer: edA-qa mort-ora-y
  • Date: 2010-04-03 10:34:57 UTC
  • Revision ID: eda-qa@disemia.com-20100403103457-ro7xslj1ct0wpnm1
adding common button base

Show diffs side-by-side

added added

removed removed

Lines of Context:
168
168
        /**
169
169
         * Packs the representation into a single paired vector
170
170
         */
171
 
        std::vector<_uint8> packToVector() const
 
171
        std::vector<uint8_t> packToVector() const
172
172
        {
173
173
                assert(nodeSize < 0xFFFFu );    //for packing limit
174
174
                
175
175
                nodeDesc.clear();
176
176
                
177
 
                std::vector<_uint8> ret;
 
177
                std::vector<uint8_t> ret;
178
178
                packToVector( baseNode, ret );
179
179
                
180
180
                return ret;
241
241
         *              2. do like tail optimization and have internal fragments with continuations, drawback
242
242
         *              that I don't have an easy algorithm for this now
243
243
         */
244
 
        unsigned packToVector( const MyTrieNode& node, std::vector<_uint8>& out ) const
 
244
        unsigned packToVector( const MyTrieNode& node, std::vector<uint8_t>& out ) const
245
245
        {
246
246
                //figure out if this node already exists
247
247
                if( nodeDesc.find( &node ) != nodeDesc.end() )
256
256
                
257
257
                //create header, 1 bit for terminate, 4 bits for rank
258
258
                //remainder for length (next byte)
259
 
                _uint8 header = node.terminal ? 1 : 0;
 
259
                uint8_t header = node.terminal ? 1 : 0;
260
260
                assert( node.rank < (1<<4) );
261
261
                header |= node.rank << 4;
262
262
                out.at(at++) = header;
288
288
        }
289
289
};
290
290
 
291
 
void packedWalkSub( void (*callback)( const unsigned* str ), const _uint8* packed, 
 
291
void packedWalkSub( void (*callback)( const unsigned* str ), const uint8_t* packed, 
292
292
        unsigned boff, unsigned buf[], unsigned at )
293
293
{
294
 
        const _uint8* p = packed + boff;
 
294
        const uint8_t* p = packed + boff;
295
295
        unsigned header = *p++;
296
296
        
297
297
        bool terminal = header & 1 == 1;
315
315
        }
316
316
}
317
317
 
318
 
void packedWalk( void (*callback)( const unsigned* str ), const _uint8* packed )
 
318
void packedWalk( void (*callback)( const unsigned* str ), const uint8_t* packed )
319
319
{
320
320
        unsigned buf[1000];     //more than enough for intended use
321
321
        packedWalkSub( callback, packed, 0, buf, 0 );