static rc_t CC sort_size_then_rel_path (const KDirectory * d, struct Vector * v) { VectorReorder (v, sort_cmp, (void*)d); return 0; }
static void matcher_match_column( p_mcol col, const VSchema *schema, const KConfig *cfg ) { uint32_t pair_count = VectorLength( &(col->pairs) ); col->type_cast = NULL; if ( col->excluded ) return; /* call VTypedeclCommonAncestor for every type-pair */ VectorForEach ( &(col->pairs), false, matcher_measure_dist_cb, (void*)schema ); /* if we have more than one pair left... */ if ( pair_count > 1 ) { /* enter the lossy-ness into the src-types... */ VectorForEach ( &(col->src_types), false, matcher_enter_type_score_cb, (void*)cfg ); /* reorder the remaining pair's by: compatibility, lossy-ness, distance, default, order */ VectorReorder ( &(col->pairs), matcher_match_cb, NULL ); } /* pick the winner = first item in the vector */ if ( pair_count > 0 ) { col->type_cast = (p_mpair)VectorFirst ( &(col->pairs) ); /* if the winner is not a compatible pair, we have no cast ! */ if ( col->type_cast->compatible != 0 ) col->type_cast = NULL; } }
/* RemoteRepositories * retrieve all remote repositories in a Vector */ LIB_EXPORT rc_t CC KRepositoryMgrRemoteRepositories ( const KRepositoryMgr *self, KRepositoryVector *remote_repositories ) { rc_t rc; if ( remote_repositories == NULL ) rc = RC ( rcKFG, rcMgr, rcAccessing, rcParam, rcNull ); else { VectorInit ( remote_repositories, 0, 8 ); if ( self == NULL ) rc = RC ( rcKFG, rcMgr, rcAccessing, rcSelf, rcNull ); else { const KConfig *kfg = KRepositoryMgrGetROKConfig ( self ); const KConfigNode *remote; rc = KConfigOpenNodeRead ( kfg, & remote, "/repository/remote" ); if ( rc == 0 ) { rc = KRepositoryMgrCategoryRepositories ( remote, krepRemoteCategory, remote_repositories ); KConfigNodeRelease ( remote ); if ( rc == 0 ) VectorReorder ( remote_repositories, KRepositorySort, NULL ); } if ( rc != 0 ) KRepositoryVectorWhack ( remote_repositories ); } } return rc; }
LIB_EXPORT void CC VNamelistReorder ( VNamelist *self, bool case_insensitive ) { if ( self != NULL ) { VectorReorder ( & self -> name_vector, case_insensitive ? vect_string_cmp_case : vect_string_cmp, NULL ); } }
/* UserRepositories * retrieve all user repositories in a Vector */ LIB_EXPORT rc_t CC KRepositoryMgrUserRepositories ( const KRepositoryMgr *self, KRepositoryVector *user_repositories ) { rc_t rc; if ( user_repositories == NULL ) rc = RC ( rcKFG, rcMgr, rcAccessing, rcParam, rcNull ); else { VectorInit ( user_repositories, 0, 8 ); if ( self == NULL ) rc = RC ( rcKFG, rcMgr, rcAccessing, rcSelf, rcNull ); else { const KConfig *kfg = KRepositoryMgrGetROKConfig ( self ); const KConfigNode *user; rc = KConfigOpenNodeRead ( kfg, & user, "/repository/user" ); if ( rc == 0 ) { rc = KRepositoryMgrCategoryRepositories ( user, krepUserCategory, user_repositories ); KConfigNodeRelease ( user ); if ( rc == 0 ) VectorReorder ( user_repositories, KRepositorySort, NULL ); } if ( rc != 0 ) KRepositoryVectorWhack ( user_repositories ); } } return rc; }