LIB_EXPORT rc_t CC VTableListSeededWritableColumns ( VTable *self, KNamelist **names, const KNamelist *seed ) { rc_t rc; if ( names == NULL ) rc = RC ( rcVDB, rcTable, rcListing, rcParam, rcNull ); else { * names = NULL; if ( self == NULL ) rc = RC ( rcVDB, rcTable, rcListing, rcSelf, rcNull ); else if ( seed == NULL ) rc = RC ( rcVDB, rcTable, rcListing, rcParam, rcNull ); else { BSTree cache; BSTreeInit ( & cache ); rc = 0; if ( ! self -> read_only ) { VCursor *curs; rc = VTableCreateCursorWriteInt ( self, & curs, kcmInsert, false ); if ( rc == 0 ) { /* let this private VCursor-function list the columns */ rc = VCursorListSeededWritableColumns ( curs, & cache, seed ); VCursorRelease ( curs ); } } if ( rc == 0 ) rc = make_column_namelist ( & cache, names ); BSTreeWhack ( & cache, VColumnRefWhack, NULL ); } } return rc; }
rc_t VCursorListWritableColumns ( VCursor *self, BSTree *columns ) { return VCursorListSeededWritableColumns ( self, columns, NULL ); }