Skip to content
Snippets Groups Projects
Commit 850037db authored by edgrif's avatar edgrif
Browse files

add function to return a list of features with same name from a feature set.

parent 69324c7f
No related branches found
No related tags found
No related merge requests found
......@@ -25,9 +25,9 @@
* Description: Data structures describing a sequence feature.
*
* HISTORY:
* Last edited: Nov 18 16:11 2009 (edgrif)
* Last edited: Dec 14 10:23 2009 (edgrif)
* Created: Fri Jun 11 08:37:19 2004 (edgrif)
* CVS info: $Id: zmapFeature.h,v 1.166 2009-11-18 16:27:10 edgrif Exp $
* CVS info: $Id: zmapFeature.h,v 1.167 2009-12-16 10:54:35 edgrif Exp $
*-------------------------------------------------------------------
*/
#ifndef ZMAP_FEATURE_H
......@@ -748,7 +748,7 @@ void zMapFeatureSetDestroy(ZMapFeatureSet feature_set, gboolean free_data) ;
void zMapFeatureSetStyle(ZMapFeatureSet feature_set, ZMapFeatureTypeStyle style) ;
char *zMapFeatureSetGetName(ZMapFeatureSet feature_set) ;
GList *zMapFeatureSetGetRangeFeatures(ZMapFeatureSet feature_set, int start, int end) ;
GList *zMapFeatureSetGetNamedFeatures(ZMapFeatureSet feature_set, GQuark original_id) ;
/* *********************
......
......@@ -27,9 +27,9 @@
*
* Exported functions: See zmapView_P.h
* HISTORY:
* Last edited: Sep 10 16:11 2009 (edgrif)
* Last edited: Dec 14 11:20 2009 (edgrif)
* Created: Fri Jul 16 13:05:58 2004 (edgrif)
* CVS info: $Id: zmapFeature.c,v 1.118 2009-09-24 12:43:23 edgrif Exp $
* CVS info: $Id: zmapFeature.c,v 1.119 2009-12-16 10:54:35 edgrif Exp $
*-------------------------------------------------------------------
*/
......@@ -123,6 +123,7 @@ typedef struct _HackForForcingStyleModeStruct
typedef struct
{
GQuark original_id ;
int start, end ;
GList *feature_list ;
} FindFeaturesRangeStruct, *FindFeaturesRange ;
......@@ -172,7 +173,7 @@ static void addFeatureModeCB(gpointer key, gpointer data, gpointer user_data) ;
static void logMemCalls(gboolean alloc, ZMapFeatureAny feature_any) ;
static void findFeaturesRangeCB(gpointer key, gpointer value, gpointer user_data) ;
static void findFeaturesNameCB(gpointer key, gpointer value, gpointer user_data) ;
static gboolean merge_debug_G = FALSE;
......@@ -1117,6 +1118,8 @@ GList *zMapFeatureSetGetRangeFeatures(ZMapFeatureSet feature_set, int start, int
g_hash_table_foreach(feature_set->features, findFeaturesRangeCB, &find_data) ;
feature_list = find_data.feature_list ;
return feature_list ;
}
......@@ -1133,6 +1136,37 @@ static void findFeaturesRangeCB(gpointer key, gpointer value, gpointer user_data
}
GList *zMapFeatureSetGetNamedFeatures(ZMapFeatureSet feature_set, GQuark original_id)
{
GList *feature_list = NULL ;
FindFeaturesRangeStruct find_data = {0} ;
find_data.original_id = original_id ;
find_data.feature_list = NULL ;
g_hash_table_foreach(feature_set->features, findFeaturesNameCB, &find_data) ;
feature_list = find_data.feature_list ;
return feature_list ;
}
/* A GHFunc() to add a feature to a list if it within a given range */
static void findFeaturesNameCB(gpointer key, gpointer value, gpointer user_data)
{
FindFeaturesRange find_data = (FindFeaturesRange)user_data ;
ZMapFeature feature = (ZMapFeature)value ;
if (feature->original_id == find_data->original_id)
find_data->feature_list = g_list_append(find_data->feature_list, feature) ;
return ;
}
void zMapFeatureSetDestroy(ZMapFeatureSet feature_set, gboolean free_data)
{
gboolean result ;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment