void gt_select_stream_set_drophandler(GtSelectStream *fs, GtSelectNodeFunc fp, void *data) { gt_assert(fs && fp != NULL); GtSelectVisitor *fv; fv = gt_node_visitor_cast(gt_select_visitor_class(), fs->select_visitor); gt_select_visitor_set_drophandler(fv, fp, data); }
GtNodeVisitor* gt_select_visitor_new(GtStr *seqid, GtStr *source, const GtRange *contain_range, const GtRange *overlap_range, GtStrand strand, GtStrand targetstrand, bool has_CDS, unsigned long max_gene_length, unsigned long max_gene_num, double min_gene_score, double max_gene_score, double min_average_splice_site_prob, unsigned long feature_num) { GtNodeVisitor *nv = gt_node_visitor_create(gt_select_visitor_class()); GtSelectVisitor *select_visitor = select_visitor_cast(nv); select_visitor->node_buffer = gt_queue_new(); select_visitor->seqid = gt_str_ref(seqid); select_visitor->source = gt_str_ref(source); if (contain_range) select_visitor->contain_range = *contain_range; else { select_visitor->contain_range.start = GT_UNDEF_ULONG; select_visitor->contain_range.end = GT_UNDEF_ULONG; } if (overlap_range) select_visitor->overlap_range = *overlap_range; else { select_visitor->overlap_range.start = GT_UNDEF_ULONG; select_visitor->overlap_range.end = GT_UNDEF_ULONG; } select_visitor->strand = strand; select_visitor->targetstrand = targetstrand; select_visitor->has_CDS = has_CDS; select_visitor->max_gene_length = max_gene_length; select_visitor->gene_num = 0; select_visitor->max_gene_num = max_gene_num; select_visitor->min_gene_score = min_gene_score; select_visitor->max_gene_score = max_gene_score; select_visitor->min_average_splice_site_prob = min_average_splice_site_prob; select_visitor->feature_num = feature_num; return nv; }