Iterator C++ Sequence Methods

The iterator C++ Sequence methods and operator are used to iterate or return the count of the object's sequence elements.

The iterator operation can be one of the following:

bool next(T& val) also T operator++() Extract the next sequence value (may return &McoSql::Null value if it encounters a null in the sequence)
void reset() Reset the iterator position to the first element in the sequence; this iterator must be a "root", i.e. it does not depend on other sequences such as the result of a search or a sequence field iteration
uint8 count() const Return the count of elements in the object's materialized sequence.

Example

Following is an example code snippet demonstrating different types of sequence iteration, note the use of next() and operator ++:

         
    {
 
        mco_trans_h trans;
        mco_date day;
        mco_cursor_t quote_cursor;
        Quote quote;
        MCO_RET rc;
     
        rc = mco_trans_start(db, MCO_READ_ONLY, MCO_TRANS_FOREGROUND, &trans);
        if ( MCO_S_OK == rc )
        {
 
            /* Iterate through all Quote objects */
            Quote::by_sym::cursor(trans, &quote_cursor);
            for (rc = mco_cursor_first(trans, &quote_cursor); 
                rc != MCO_S_CURSOR_END; 
                rc = mco_cursor_next(trans, &quote_cursor)) 
            {
                /* Get current object */
                quote.from_cursor(trans, &quote_cursor);
             
                /* Initialize iterators */
                Sequence<uint4> day_iterator = quote.day_iterator();
                Sequence<float> high_iterator = quote.high_iterator();
                Sequence< Char<15> > day_str_iterator = quote.day_str_iterator();
 
                /* Iterate sequence fields */
                while (day_iterator.next(day)) 
                {
                    Char<MAX_SYMBOL_LEN> symbol = quote.symbol;
                    Char<15> day_str = ++day_str_iterator;
                    printf("%s[%u(%s)]: %f\n", (char*)symbol, day, (char*)day_str, ++high_iterator);
                }
            }
            mco_trans_commit(trans);
        }
    }