示例#1
0
LIB_EXPORT rc_t CC TableReaderRefSeq_MakePath(const TableReaderRefSeq** cself, const VDBManager* vmgr,
                                              const char* path, uint32_t options, size_t cache)
{
    rc_t rc = 0;
    const VTable* tbl = NULL;

    if( vmgr == NULL || path == NULL ) {
        rc = RC(rcAlign, rcType, rcConstructing, rcParam, rcNull);
    } else if( (rc = VDBManagerOpenTableRead(vmgr, &tbl, NULL, "%s", path)) == 0 ) {
        rc = TableReaderRefSeq_MakeTable(cself, vmgr, tbl, options, cache);
        VTableRelease(tbl);
    }
    if( rc == 0 ) {
        /* ALIGN_DBG("table %s opened 0x%p", path, *cself); */
    } else {
        ALIGN_DBGERRP("table for %s", rc, path);
    }
    return rc;
}
示例#2
0
static rc_t RefSeq_RefSeq_odd_open(RefSeq *const super, RefSeqMgr const *const mgr)
{
    struct RefSeq_RefSeq *const self = &super->u.refSeq;
    VTable const *tbl;
    rc_t rc = VDBManagerOpenTableRead(mgr->vmgr, &tbl, NULL, "ncbi-acc:%s?vdb-ctx=refseq", self->name);
    
    if (tbl) {
        char scheme[1024];
        
        get_tbl_schema_info(tbl, sizeof(scheme), scheme);
        if (strcmp(scheme, "NCBI:refseq:tbl:reference") == 0) {
            rc = TableReaderRefSeq_MakeTable(&self->reader, mgr->vmgr, tbl,
                                             mgr->reader_options, mgr->cache);
        }
        else {
            rc = RC(rcAlign, rcTable, rcOpening, rcType, rcInvalid);
        }
        VTableRelease(tbl);
    }
    return rc;
}