static rc_t RefNameMake ( RefName **objp, const VTable *tbl, const VCursor *native_curs ) { rc_t rc; /* create the object */ RefName *obj = malloc ( sizeof * obj ); if ( obj == NULL ) { rc = RC ( rcXF, rcFunction, rcConstructing, rcMemory, rcExhausted ); } else { obj->curs=NULL; /* open the reference cursor */ rc = AlignRefTableCursor(tbl, native_curs, &obj->curs, NULL); if(rc == 0){ /* add columns to cursor */ rc = VCursorAddColumn(obj->curs, &obj->name_idx, "(utf8)REF_NAME"); if( GetRCObject(rc) == rcColumn && GetRCState(rc) == rcNotFound ) { rc = VCursorAddColumn(obj->curs, &obj->name_idx, "(utf8)NAME"); } if(GetRCState(rc) == rcExists){ rc = 0; } if( rc == 0 ) { *objp = obj; return 0; } VCursorRelease ( obj -> curs ); } free ( obj ); } return rc; }
static rc_t RefPosMake ( RefPos **objp, const VTable *tbl, const VCursor *native_curs ) { rc_t rc; /* create the object */ RefPos *obj = malloc ( sizeof * obj ); if ( obj == NULL ) { rc = RC ( rcXF, rcFunction, rcConstructing, rcMemory, rcExhausted ); } else { obj->curs=NULL; BSTreeInit(&obj->tr_range); /* open the reference table cursor*/ if( (rc = AlignRefTableCursor(tbl, native_curs, &obj->curs, NULL)) == 0 ) { uint32_t itmp; if( (rc = VCursorAddColumn(obj->curs, &itmp, "(U32)MAX_SEQ_LEN")) == 0 || GetRCState(rc) == rcExists) { const void *base; uint32_t row_len; rc = VCursorCellDataDirect(obj->curs, 1, itmp, NULL, &base, NULL, &row_len); if(rc == 0) { assert(row_len == 1); memcpy(&obj->max_seq_len, base, 4); } } if( GetRCObject(rc) == rcColumn && GetRCState(rc) == rcNotFound ) { /*** no MAX_SEQ_LEN means that REF_POS==REF_START **/ VCursorRelease(obj->curs); obj->curs = NULL; obj->max_seq_len = 0; obj->name_range_idx = 0; obj->name_idx = 0; rc = 0; } else if( rc == 0 ) { /* add columns to cursor */ rc = VCursorAddColumn(obj->curs, &obj->name_idx, "(utf8)NAME"); if(rc == 0 || GetRCState(rc) == rcExists) rc = VCursorAddColumn(obj->curs, &obj->name_range_idx, "NAME_RANGE"); if(GetRCState(rc) == rcExists) rc = 0; } } if( rc == 0 ) { *objp = obj; } else { VCursorRelease(obj->curs); free(obj); } } return rc; }
static rc_t LocalRefIDMake ( LocalRefID **objp, const VTable *tbl, const VCursor *native_curs) { rc_t rc; /* create the object */ LocalRefID *obj = malloc ( sizeof * obj ); if ( obj == NULL ) { rc = RC( rcXF, rcFunction, rcConstructing, rcMemory, rcExhausted ); } else { const VCursor *curs=NULL; /* open the reference table cursor*/ rc = AlignRefTableCursor( tbl, native_curs, &curs, NULL ); if ( rc == 0 ) { uint32_t itmp; rc = VCursorAddColumn( curs, &itmp, "(U32)MAX_SEQ_LEN" ); if ( rc == 0 || GetRCState( rc ) == rcExists ) { const void *base; uint32_t row_len; rc = VCursorCellDataDirect( curs, 1, itmp, NULL, &base, NULL, &row_len ); if ( rc == 0 ) { assert( row_len == 1 ); memmove( &obj->max_seq_len, base, 4 ); } } if ( ( GetRCObject( rc ) == ( enum RCObject )rcColumn ) && ( GetRCState( rc ) == rcNotFound ) ) { obj->max_seq_len = 0; rc = 0; } VCursorRelease( curs ); if ( rc == 0 ) { *objp = obj; return 0; } } free ( obj ); } return rc; }
static rc_t RefSeqIDMake ( RefSeqID **objp, const VTable *tbl, const VCursor *native_curs ) { rc_t rc; /* create the object */ RefSeqID *obj = malloc ( sizeof * obj ); if ( obj == NULL ) { rc = RC( rcXF, rcFunction, rcConstructing, rcMemory, rcExhausted ); } else { obj->curs=NULL; SUB_DEBUG( ( "SUB.Make in 'align_ref_seq_id.c'\n" ) ); /* open the reference cursor */ rc = AlignRefTableCursor( tbl, native_curs, &obj->curs, NULL ); if ( rc == 0 ) { /* add columns to cursor */ rc = VCursorAddColumn( obj->curs, &obj->seqID_idx, "SEQ_ID" ); if ( GetRCObject( rc ) == ( enum RCObject ) rcColumn && GetRCState( rc ) == rcNotFound ) { rc = VCursorAddColumn( obj->curs, &obj->seqID_idx, "REF_SEQ_ID" ); } if ( GetRCState( rc ) == rcExists ) { rc = 0; } if ( rc == 0 ) { *objp = obj; return 0; } VCursorRelease ( obj -> curs ); } free ( obj ); } return rc; }