Esempio n. 1
0
QList<QVariantList> TcDataAccess::fetchAllList(const QString &sql,
            const QVariantList &bind /* = QVariantList() */)
{
    _prepareExec(sql, bind);

    QList<QVariantList> result;
    QVariantList row;
    QSqlRecord rec;
    while (_query->next())
    {
        rec = _query->record();
        if (result.isEmpty())
        {
            for (int i = 0; i < rec.count(); i++)
            {
                row << _case(rec.fieldName(i));
            }
            result << row;
            row.clear();
        }
        for (int i = 0; i < rec.count(); i++)
        {
            row << _trim(rec.value(i));
        }
        result << row;
        row.clear();
    }
    return result;
}
Esempio n. 2
0
QVariantMap TcDataAccess::fetchRow(const QString &sql,
            const QVariantList &bind /* = QVariantList() */)
{
    _prepareExec(sql, bind);

    QVariantMap row;
    if (_query->next())
    {
        QSqlRecord rec = _query->record();
        for (int i = rec.count() - 1; i > -1; i--)
        {
            row[_case(rec.fieldName(i))] = _trim(rec.value(i));
        }
    }
    return row;
}
Esempio n. 3
0
QList<QVariantMap> TcDataAccess::fetchAll(const QString &sql,
            const QVariantList &bind /* = QVariantList() */)
{
    _prepareExec(sql, bind);

    QList<QVariantMap> result;
    QVariantMap row;
    while (_query->next())
    {
        QSqlRecord rec = _query->record();
        for (int i = rec.count() - 1; i > -1; i--)
        {
            row[_case(rec.fieldName(i))] = _trim(rec.value(i));
        }
        result << row;
        row.clear();
    }
    return result;
}
Esempio n. 4
0
/*
    The routine parses input string. It is expected it is a unsigned integer with optional unit.
    Units are: "b" for bytes, "kb" or just "k" for kilobytes, "mb" or "m" for megabytes, ..., "yb"
    or "y" for yottabytes. :-) Unit name is case-insensitive. The routine returns 0 if everything is
    ok, or error code: -1 in case of overflow, -2 in case of unknown unit. *size is set to parsed
    value. In case of overflow *size is set to KMP_SIZE_T_MAX, in case of unknown unit *size is set
    to zero.
*/
void
__kmp_str_to_size(         // R: Error code.
    char const *   str,    // I: String of characters, unsigned number and unit ("b", "kb", etc).
    size_t *       out,    // O: Parsed number.
    size_t         dfactor, // I: The factor if none of the letters specified.
    char const * * error   // O: Null if everything is ok, error message otherwise.
) {

    size_t value    = 0;
    size_t factor   = 0;
    int    overflow = 0;
    int    bad_unit = 0;
    int    i        = 0;
    int    digit;


    KMP_DEBUG_ASSERT( str != NULL );

    // Skip spaces.
    while ( str[ i ] == ' ' || str[ i ] == '\t') {
        ++ i;
    }; // while

    // Parse number.
    if ( str[ i ] < '0' || str[ i ] > '9' ) {
        * error = KMP_I18N_STR( NotANumber );
        return;
    }; // if
    do {
        digit = str[ i ] - '0';
        overflow = overflow || ( value > ( KMP_SIZE_T_MAX - digit ) / 10 );
        value = ( value * 10 ) + digit;
        ++ i;
    } while ( str[ i ] >= '0' && str[ i ] <= '9' );

    // Skip spaces.
    while ( str[ i ] == ' ' || str[ i ] == '\t' ) {
        ++ i;
    }; // while

    // Parse unit.
    #define _case( ch, exp )                            \
        case ch :                                       \
        case ch - ( 'a' - 'A' ) : {                     \
            size_t shift = (exp) * 10;                  \
            ++ i;                                       \
            if ( shift < sizeof( size_t ) * 8 ) {       \
                factor = (size_t)( 1 ) << shift;        \
            } else {                                    \
                overflow = 1;                           \
            };                                          \
        } break;
    switch ( str[ i ] ) {
        _case( 'k', 1 ); // Kilo
        _case( 'm', 2 ); // Mega
        _case( 'g', 3 ); // Giga
        _case( 't', 4 ); // Tera
        _case( 'p', 5 ); // Peta
        _case( 'e', 6 ); // Exa
        _case( 'z', 7 ); // Zetta
        _case( 'y', 8 ); // Yotta
        // Oops. No more units...
    }; // switch
    #undef _case
    if ( str[ i ] == 'b' || str[ i ] == 'B' ) {    // Skip optional "b".
	if ( factor == 0 ) {
	    factor = 1;
	}
        ++ i;
    }; // if
    if ( ! ( str[ i ] == ' ' || str[ i ] == '\t' || str[ i ] == 0 ) ) { // Bad unit
        * error = KMP_I18N_STR( BadUnit );
        return;
    }; // if

    if ( factor == 0 ) {
	factor = dfactor;
    }

    // Apply factor.
    overflow = overflow || ( value > ( KMP_SIZE_T_MAX / factor ) );
    value *= factor;

    // Skip spaces.
    while ( str[ i ] == ' ' || str[ i ] == '\t' ) {
        ++ i;
    }; // while

    if ( str[ i ] != 0 ) {
        * error = KMP_I18N_STR( IllegalCharacters );
        return;
    }; // if

    if ( overflow ) {
        * error = KMP_I18N_STR( ValueTooLarge );
        * out = KMP_SIZE_T_MAX;
        return;
    }; // if

    * error = NULL;
    * out = value;

} // __kmp_str_to_size