Author: mlschroe Date: Sat Nov 17 20:43:47 2007 New Revision: 7860 URL: http://svn.opensuse.org/viewcvs/zypp?rev=7860&view=rev Log: - some more cleanup Modified: trunk/sat-solver/src/pool.c trunk/sat-solver/src/pool.h trunk/sat-solver/src/repo.c trunk/sat-solver/src/repo.h trunk/sat-solver/src/solver.c trunk/sat-solver/testsuite/deptestomatic.c trunk/sat-solver/testsuite/gimmick.c trunk/sat-solver/testsuite/yps.c Modified: trunk/sat-solver/src/pool.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/pool.c?rev=7860&r1=7859&r2=7860&view=diff ============================================================================== --- trunk/sat-solver/src/pool.c (original) +++ trunk/sat-solver/src/pool.c Sat Nov 17 20:43:47 2007 @@ -107,7 +107,7 @@ pool_freewhatprovides(pool); pool_freeidhashes(pool); - pool_freeallrepos(pool, 1); + repo_freeallrepos(pool, 1); xfree(pool->id2arch); xfree(pool->solvables); xfree(pool->ss.stringspace); @@ -263,14 +263,14 @@ /* - * pool_prepare() + * pool_createwhatprovides() * * create hashes over complete pool to ease lookups * */ void -pool_prepare(Pool *pool) +pool_createwhatprovides(Pool *pool) { int i, num, np, extra; Offset off; @@ -452,8 +452,8 @@ { case REL_AND: case REL_WITH: - pp = GET_PROVIDESP(name, p); - pp2 = GET_PROVIDESP(evr, p); + pp = pool_whatprovides(pool, name); + pp2 = pool_whatprovides(pool, evr); while ((p = *pp++) != 0) { for (pp3 = pp2; *pp3;) @@ -465,10 +465,10 @@ } break; case REL_OR: - pp = GET_PROVIDESP(name, p); + pp = pool_whatprovides(pool, name); while ((p = *pp++) != 0) queue_push(&plist, p); - pp = GET_PROVIDESP(evr, p); + pp = pool_whatprovides(pool, evr); while ((p = *pp++) != 0) queue_pushunique(&plist, p); break; Modified: trunk/sat-solver/src/pool.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/pool.h?rev=7860&r1=7859&r2=7860&view=diff ============================================================================== --- trunk/sat-solver/src/pool.h (original) +++ trunk/sat-solver/src/pool.h Sat Nov 17 20:43:47 2007 @@ -111,20 +111,6 @@ //----------------------------------------------- -// whatprovides -// "foo" -> Id -> lookup in table, returns offset into whatprovidesdata where array of Ids providing 'foo' are located, 0-terminated - - -#define GET_PROVIDESP(d, v) (ISRELDEP(d) ? \ - (v = GETRELID(pool, d), pool->whatprovides[v] ? \ - pool->whatprovidesdata + pool->whatprovides[v] : \ - pool_addrelproviders(pool, d) \ - ) : \ - (pool->whatprovidesdata + pool->whatprovides[d])) - -/* loop over all providers of d */ -#define FOR_PROVIDES(v, vp, d) \ - for (vp = GET_PROVIDESP(d, v) ; (v = *vp++) != ID_NULL; ) /* mark dependencies with relation by setting bit31 */ @@ -167,12 +153,10 @@ /** * Prepares a pool for solving */ -extern void pool_prepare(Pool *pool); +extern void pool_createwhatprovides(Pool *pool); extern void pool_freewhatprovides(Pool *pool); extern Id pool_queuetowhatprovides(Pool *pool, Queue *q); -extern Id *pool_addrelproviders(Pool *pool, Id d); - static inline int pool_installable(Pool *pool, Solvable *s) { if (!s->arch || s->arch == ARCH_SRC || s->arch == ARCH_NOSRC) @@ -182,6 +166,24 @@ return 1; } +extern Id *pool_addrelproviders(Pool *pool, Id d); + +static inline Id *pool_whatprovides(Pool *pool, Id d) +{ + Id v; + if (!ISRELDEP(d)) + return pool->whatprovidesdata + pool->whatprovides[d]; + v = GETRELID(pool, d); + if (pool->whatprovides[v]) + return pool->whatprovidesdata + pool->whatprovides[v]; + return pool_addrelproviders(pool, d); +} + +/* loop over all providers of d */ +#define FOR_PROVIDES(v, vp, d) \ + for (vp = pool_whatprovides(pool, d) ; (v = *vp++) != 0; ) + + #ifdef __cplusplus } #endif Modified: trunk/sat-solver/src/repo.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/repo.c?rev=7860&r1=7859&r2=7860&view=diff ============================================================================== --- trunk/sat-solver/src/repo.c (original) +++ trunk/sat-solver/src/repo.c Sat Nov 17 20:43:47 2007 @@ -286,7 +286,7 @@ } void -pool_freeallrepos(Pool *pool, int reuseids) +repo_freeallrepos(Pool *pool, int reuseids) { int i; Modified: trunk/sat-solver/src/repo.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/repo.h?rev=7860&r1=7859&r2=7860&view=diff ============================================================================== --- trunk/sat-solver/src/repo.h (original) +++ trunk/sat-solver/src/repo.h Sat Nov 17 20:43:47 2007 @@ -34,14 +34,13 @@ extern Repo *repo_create(Pool *pool, const char *name); extern void repo_free(Repo *repo, int reuseids); +extern void repo_freeallrepos(Pool *pool, int reuseids); extern Offset repo_addid(Repo *repo, Offset olddeps, Id id); extern Offset repo_addid_dep(Repo *repo, Offset olddeps, Id id, int isreq); extern Offset repo_reserve_ids(Repo *repo, Offset olddeps, int num); extern Offset repo_fix_legacy(Repo *repo, Offset provides, Offset supplements); -extern void pool_freeallrepos(Pool *pool, int reuseids); - static inline const char *repo_name(const Repo *repo) { return repo->name; Modified: trunk/sat-solver/src/solver.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/solver.c?rev=7860&r1=7859&r2=7860&view=diff ============================================================================== --- trunk/sat-solver/src/solver.c (original) +++ trunk/sat-solver/src/solver.c Sat Nov 17 20:43:47 2007 @@ -953,7 +953,7 @@ if (req == SOLVABLE_PREREQMARKER) /* skip the marker */ continue; - dp = GET_PROVIDESP(req, p); /* get providers of req; p is a dummy only */ + dp = pool_whatprovides(pool, req); if (*dp == SYSTEMSOLVABLE) /* always installed */ continue; @@ -2886,7 +2886,7 @@ { if (req == SOLVABLE_PREREQMARKER) continue; - dp = GET_PROVIDESP(req, p); + dp = pool_whatprovides(pool, req); if (*dp) continue; printf("package %s-%s.%s requires %s, but no package provides it\n", id2str(pool, s->name), id2str(pool, s->evr), id2str(pool, s->arch), dep2str(pool, req)); @@ -2950,7 +2950,7 @@ { if (req == SOLVABLE_PREREQMARKER) continue; - dp = GET_PROVIDESP(req, p); + dp = pool_whatprovides(pool, req); if (d == 0) { if (*dp == r->w2 && dp[1] == 0) Modified: trunk/sat-solver/testsuite/deptestomatic.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/testsuite/deptestomatic.c?rev=7860&r1=7859&r2=7860&view=diff ============================================================================== --- trunk/sat-solver/testsuite/deptestomatic.c (original) +++ trunk/sat-solver/testsuite/deptestomatic.c Sat Nov 17 20:43:47 2007 @@ -1204,7 +1204,7 @@ else pool_setarch( pd->pool, "i686" ); - pool_prepare( pd->pool ); + pool_createwhatprovides( pd->pool ); if (redcarpet) pool->promoteepoch = 1; Modified: trunk/sat-solver/testsuite/gimmick.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/testsuite/gimmick.c?rev=7860&r1=7859&r2=7860&view=diff ============================================================================== --- trunk/sat-solver/testsuite/gimmick.c (original) +++ trunk/sat-solver/testsuite/gimmick.c Sat Nov 17 20:43:47 2007 @@ -41,7 +41,7 @@ else id = rel2id(pool, str2id(pool, argv[1], 1), str2id(pool, argv[2], 1), atoi(argv[3]), 1); - pool_prepare(pool); + pool_createwhatprovides(pool); printf("%s:\n", dep2str(pool, id)); FOR_PROVIDES(p, pp, id) Modified: trunk/sat-solver/testsuite/yps.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/testsuite/yps.c?rev=7860&r1=7859&r2=7860&view=diff ============================================================================== --- trunk/sat-solver/testsuite/yps.c (original) +++ trunk/sat-solver/testsuite/yps.c Sat Nov 17 20:43:47 2007 @@ -182,7 +182,7 @@ queue_push(&job, id); } - pool_prepare(pool); + pool_createwhatprovides(pool); pool->promoteepoch = 0; -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org