Use name hashes in depends to avoid strcmp calls
[pacman-ng.git] / lib / libalpm / deps.h
blobb720b3645830ee2e9020aa2736888cd6fb2fb48f
1 /*
2 * deps.h
4 * Copyright (c) 2006-2010 Pacman Development Team <pacman-dev@archlinux.org>
5 * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
6 * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
7 * Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #ifndef _ALPM_DEPS_H
23 #define _ALPM_DEPS_H
25 #include "db.h"
26 #include "sync.h"
27 #include "package.h"
28 #include "alpm.h"
30 /* Dependency */
31 struct __pmdepend_t {
32 char *name;
33 char *version;
34 long name_hash;
35 pmdepmod_t mod;
38 /* Missing dependency */
39 struct __pmdepmissing_t {
40 char *target;
41 pmdepend_t *depend;
42 char *causingpkg; /* this is used in case of remove dependency error only */
45 void _alpm_dep_free(pmdepend_t *dep);
46 pmdepend_t *_alpm_dep_dup(const pmdepend_t *dep);
47 pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdepend_t *dep,
48 const char *causinpkg);
49 void _alpm_depmiss_free(pmdepmissing_t *miss);
50 alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, int reverse);
51 void _alpm_recursedeps(pmdb_t *db, alpm_list_t *targs, int include_explicit);
52 pmpkg_t *_alpm_resolvedep(pmdepend_t *dep, alpm_list_t *dbs, alpm_list_t *excluding, int prompt);
53 int _alpm_resolvedeps(alpm_list_t *localpkgs, alpm_list_t *dbs_sync, pmpkg_t *pkg,
54 alpm_list_t *preferred, alpm_list_t **packages, alpm_list_t *remove,
55 alpm_list_t **data);
56 int _alpm_dep_edge(pmpkg_t *pkg1, pmpkg_t *pkg2);
57 pmdepend_t *_alpm_splitdep(const char *depstring);
58 pmpkg_t *_alpm_find_dep_satisfier(alpm_list_t *pkgs, pmdepend_t *dep);
59 int _alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep);
61 #endif /* _ALPM_DEPS_H */
63 /* vim: set ts=2 sw=2 noet: */