/* 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; }
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; }