1 /**
2  * @file
3  * @brief Contains version information
4 **/
5 
6 #pragma once
7 
8 #define CRAWL "Dungeon Crawl Stone Soup"
9 
10 enum rel_type
11 {
12     VER_ALPHA,
13     VER_BETA,
14     VER_FINAL,
15 };
16 
17 namespace Version
18 {
19     /// The major version string.
20     /**
21      * This version is just the major release number, e.g. '0.10' for
22      * all of 0.10-a0, 0.10, and 0.10.1 (assuming this last is even
23      * released).
24      */
25     extern const char* Major;
26 
27     /// The short version string.
28     /**
29      * This version will generally match the last version tag. For instance,
30      * if the last tag of Crawl before this build was '0.1.2', you'd see
31      * '0.1.2'. This version number does not include some rather important
32      * extra information useful for getting the exact revision (the Git commit
33      * hash and the number of revisions since the tag). For that extra information,
34      * use Version::Long instead.
35      */
36     extern const char* Short;
37 
38     /// The long version string.
39     /**
40      * This string contains detailed version information about the CrissCross
41      * build in use. The string will always start with the Git tag that this
42      * build descended from. If this build is not an exact match for a given
43      * tag, this string will also include the number of commits since the tag
44      * and the Git commit id (the SHA-1 hash).
45      */
46     extern const char* Long;
47 
48     /// The release type.
49     /**
50      * Indicates whether it's a devel or a stable version.
51      */
52     extern const rel_type ReleaseType;
53 
54     void record(string prev);
55     string history();
56     size_t history_size();
57 }
58 
59 extern const char* compilation_info;
60