aboutsummaryrefslogtreecommitdiff
path: root/include/version_spec.h
blob: b8d32609974018fa2a19c3abd6185c461610e183 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
 * @file version_spec.h
 */
#ifndef SPM_VERSION_SPEC_H
#define SPM_VERSION_SPEC_H

#define VERSION_MAX 8
#define VERSION_BASE 10
#define VERSION_DELIM "."
#define VERSION_DELIM_LOCAL "+"
#define VERSION_LOCAL_MAX 255
#define VERSION_OPERATORS " ~!=<>"
#define VERSION_NOOP 1 << 0
#define VERSION_EQ 1 << 1
#define VERSION_NE 1 << 2
#define VERSION_GT 1 << 3
#define VERSION_LT 1 << 4
#define VERSION_COMPAT 1 << 5

struct Version {
    char *local;
    uint64_t asInt;
    uint32_t part[VERSION_MAX];
};

struct Version *version_init();
int version_read(struct Version **version, char *s);
void version_info(struct Version *version);

uint64_t version_from(const char *str);
unsigned int version_spec_from(const char *op);
ManifestPackage **find_by_spec(const Manifest *manifest, const char *name, const char *op, const char *version_str);
int pep440_match(const char *version);
struct PEP440 *pep440_version(const char *version);

#endif //SPM_VERSION_SPEC_H