Пример #1
0
/* ListDatatypes
 *  returns list of typedecls for named column
 *
 *  "col" [ IN ] - column name
 *
 *  "dflt_idx" [ OUT, NULL OKAY ] - returns the zero-based index
 *  into "typedecls" of the default datatype for the named column
 *
 *  "typedecls" [ OUT ] - list of datatypes available for named column
 *
 *  availability: v2.1
 */
LIB_EXPORT rc_t CC VTableListWritableDatatypes ( VTable *self,
    const char *col, KNamelist **typedecls )
{
    rc_t rc;
    
    if ( typedecls == NULL )
        rc = RC ( rcVDB, rcTable, rcListing, rcParam, rcNull );
    else
    {
        if ( self == NULL )
            rc = RC ( rcVDB, rcTable, rcListing, rcSelf, rcNull );
        else if ( col == NULL )
            rc = RC ( rcVDB, rcSchema, rcListing, rcName, rcNull );
        else if ( col [ 0 ] == 0 )
            rc = RC ( rcVDB, rcSchema, rcListing, rcName, rcEmpty );
        else
        {
            if ( ! self -> write_col_cache_valid )
                rc = list_writable_columns ( self );

            if ( self -> write_col_cache_valid )
            {
                uint32_t dummy;
                return make_column_typelist ( & self -> write_col_cache, col, & dummy, typedecls );
            }
        }

        * typedecls = NULL;
    }

    return rc;
}
Пример #2
0
LIB_EXPORT rc_t CC VTableListReadableDatatypes ( const VTable *self,
    const char *col, uint32_t *dflt_idx, KNamelist **typedecls )
{
    rc_t rc;

    uint32_t dummy;
    if ( dflt_idx == NULL )
        dflt_idx = & dummy;

    * dflt_idx = 0;

    if ( typedecls == NULL )
        rc = RC ( rcVDB, rcTable, rcListing, rcParam, rcNull );
    else
    {
        if ( self == NULL )
            rc = RC ( rcVDB, rcTable, rcListing, rcSelf, rcNull );
        else if ( col == NULL )
            rc = RC ( rcVDB, rcTable, rcListing, rcName, rcNull );
        else if ( col [ 0 ] == 0 )
            rc = RC ( rcVDB, rcTable, rcListing, rcName, rcEmpty );
        else
        {
            if ( ! self -> read_col_cache_valid )
                rc = list_readable_columns ( self );

            if ( self -> read_col_cache_valid )
                return make_column_typelist ( & self -> read_col_cache, col, dflt_idx, typedecls );
        }

        * typedecls = NULL;
    }

    return rc;
}