Signed-off-by: Steven Noonan <steven@uplinklabs.net>
NCYUW5C4IA6JQMFGJQUZNB2GBLKG6ROI7I3ZKO5O5DIQSQNXLNDAC FPEDPMNC2PK2N636TO46VYNGQGGBSBSDEFOPV7M26I25LK4XMPEAC LCXMLLOYRE6UWNTREC62EVW3DQHXX7DCY7ZFCDPT4FZBOEVZBYEQC 2AQN6I4JEKVYBDBN4DZKOLGBTDCDPZ4XAQLI67FXCFVD6MX4SHTQC 7JMN4TTOB7J56UAHT47USGLXARDHDEB7SYIHA5QTGMDX3AZ6ZCSQC KWVLKKCTRMUXMAD4LWXJFQKJGBGCEPZY6LUFC3ENOCZUCYMXDD7QC 2EBEWIV4YHXXAFR4GG2GMZJ2K77NK762HNQ77CZLHI3LDVGX7RJAC JI6X5RSEBSQXO2M5LDL7DI45TLY7ZLG2BWNXWMTIU2JGAW3AJGZQC 36BFWYZWCQGMAMK4EF2R5C66RA2EBLTX3MJW3QDEKN64C3BJQX7AC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC IAAPG4VMQN6O4CZYNR5QA7MXWVII5USVV2HRX2MDAF2GLDGRUZGAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC PNVQYVU2PFWPYY5TAAW3IUYHRRHALTKRNH2GPWZWUUAOWJ2R4M2QC 467AWA4ZIVLXCJAAYRP5EZUF2YEM6QPRSLYIUBQ65GQ4DXQYX3UAC N7J2IWU7B34XIUYWHJF2RTRAXXAQLVVZLWWHFWN4FC5PLNFFEWCAC RISMOCQM6BKK4XSIRKYLOBB2UPDYJNDAL6OGIIR5GGNZQAK5YSZAC JMGFP3NPBN3IMFWC2T42UERZBAU3SPCTJ4SOJ5WL6WRUNB6BPKIQC 7OEQPUSDZ3CTUQYZLALUI7PHZOUBL2TTOKRJBCVEYTL5J2LQUNRQC L3DRKFURVDCV3EJKGG6GVVQX3D5MZPICTVOKNOD3LGM2PECBA7PQC 77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC UN7KHEPBHUUULGFWVZA7CGO2URKGTU5EKNRCZQFNBCZFFYWZTXIQC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC IXO5VNCDYDYI46Y5QWNJMD7TURKYO526CJA4TIMH5PDDAYHMK5YQC 25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC 3SQQ4MM6YO4I37CQ6GIBIX6BXAEVHNVNHPVMR3PPBBNO454D6XWQC PBTLQZHBQK5TAIO7SNSCKSHOQQ65CFFI55OTTETV7FG2FCJOXKHQC MADTICUXDKQB7EKTXG7J2OIJGUM7A437FRWIBRA3BIVEKXEXHO6AC AM7QPHDAWNXHLUEVUHVRHG2RO2DOIEFFU4GV3DCIROW6O5HW7H4AC KSFNXBKBU4XJLJMHLVG73ZFW5CGN2D7UN32OUFHCXMHFOWF7C6TAC IHV7JHD4E67NEGLZEO3FPQGJPJF3IAV6QV5A63FPG4SU2VRFV47QC K2GMFKXUWN5R3KCW6OYVXHN47MIQZKEEIOSAU6LFFKBNKF6JBVWAC JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC 2D77G7XIIDVS2RUE33YH2NAPSXNLXKXXN3RP2TKPLWRXTEAVSZ3QC IPPPBA4G2LODBP3EJIYGUAAOMHKLNBXHBD7KVX2JVDTA4DETHO4AC ACZYEIX7WMPIIODKCATBCUE626AJ4ZGGBOMVC6BGXM27EQU2RECAC COLMJH3UIQFF4R5AV642OJK4HHGUIIPLNP5WGKLWWYNJV7ZGPI7AC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC 4O3VTUJT5T7NBNF3Q45XO2WHS6TCJXVLH6CKX4K36WUBDRT5F6KAC 7KWDC7XFNMBLSUO2HISIROBINZBX5T67LJEEXTAORXW2YZ7VWFGAC 5UC5TI7B6NWGIGN74QRBZKDBYUMHLM2ZO5ATXEZ6TZOGOLF3JX5QC GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC GL5T36G3A2LUTTYSL7ZQVUYONUCXL5DK36532FM6XRAQCLYDWW2QC AUXHSGS4EFOPZ6TVZYWNVOUDO7NYKUKE3HBKGQQWTALSVFOE3HAAC NEECVIIAOBP72T6O44DWAA6HFSDY3KSWYCFMKAEMDMVOI7XASD7QC TOKBONNNPTP2CIEHMMR4QAJZTXYETS55OGGDA6FY6NIMNDYMWJDAC DUN7EE7M7EH27OMYTBAAN2KIPQH4T375WLDSV2M3C7V54C4QOVXAC TAVHZJPVNJBZR7CUURAOYNDZPNVQ3AGHTXDEP5K4JGYETBLQJDRQC 7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC 4XGOVPFCU6KZIYHKWCHUTZY6G5S326DKBG3UREPR34Q4TSDD3TAAC FUEEIUKGHHFPIRZCN3N753GONWAZTWQ2ZWR53IBJAAZ6FZUNGOMAC PVWTSJSXXLI7SBNQZHV4VVB725I3LGYAKFKR3KPYYOLPOCJNGY2QC Y56C5OMUQ5XF2G6DKDV4R5MED44UOIUPTBBQVWQBUHYIXYA5MOZAC OIAQU4VDTZ3EHBNC7FZIOW2QEQLTDHZ7O46XW2YWM6JRVBC66UPQC CKY7MRFWMNHXIPJD5ZUAJN5T2YHUIEAYBNYYV5GN74LBZJRDJMEQC HQ5FYPDFIQNNDMKDSGWAAXYIVIRK42B4OBA2LESP2OA5SPKSTLVQC IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC ZF6STV5NEMEP5O5S6QO52R2CS5JEAGUQA5OKSBI2BIWF3OLZP4CQC 5UVDIVD4NSXA52U4QMQIVST3GSZJ2A2YZK3RUEXKPM43YVQ7LI5AC PKXXBHS3LWLPZI2QVRX22MSQ4R2626IXRSNHFFYHXYTLJJQU54LQC /* Crawl versioning:* Crawl uses three numbers to determine the version:* Version, which changes when the dev team makes enormous overhauls* to the game (which may cause savefiles from previous versions to* temporarily stop working, for example)* Release, which changes when siginficant new features have been* added to the game.* Mod, which changes with every publicly released version that* contains nothing more than bug fixes, cosmetic changes,* internal cleanup, etc.** Further, any source or binary uploaded anywhere that is _not_ of* release quality should be labelled as such:* alpha for potentially unstable dev versions, or* beta for feature-complete and mostly balanced versions** several alphas or betas in a row should be labelled incrementally;* alpha1 -> alpha2 -> alpha3 -> beta1 -> beta2 -> ...*/
#define VER_NUM "0.6"#define VER_QUAL "-git"
namespace Version{//! The short version string./*!* This version will generally match the last version tag. For instance,* if the last tag of Crawl before this build was '0.1.2', you'd see* '0.1.2'. This version number does not include some rather important* extra information useful for getting the exact revision (the Git commit* hash and the number of revisions since the tag). For that extra information,* use Version::Long() instead.** For extracting individual components of the version, you should use the* Major(), Minor(), Revision() and Build() functions.*/std::string Short();//! The long version string./*!* This string contains detailed version information about the CrissCross* build in use. The string will always start with the Git tag that this* build descended from. If this build is not an exact match for a given* tag, this string will also include the number of commits since the tag* and the Git commit id (the SHA-1 hash).*/std::string Long();
// Undefine for official releases.#define DISPLAY_BUILD_REVISION
//! The major version number./*!* This is the first number to appear in a version tag. For instance,* if the tag is '0.1.2.3', this function would return '0'.*/int Major();//! The minor version number./*!* This is the second number to appear in a version tag. For instance,* if the tag is '0.1.2.3', this function would return '1'.*/int Minor();
// last updated 07august2001 {mv}/* ************************************************************************ called from: chardump - command - newgame* *********************************************************************** */#define VERSION VER_NUM VER_QUAL " (crawl-ref)"
//! The revision number./*!* This is the third number to appear in a version tag. For instance,* if the tag is '0.1.2.3', this function would return '2'.*/int Revision();
// last updated 20feb2001 {GDL}/* ************************************************************************ called from: command* *********************************************************************** */#define VERSION_DETAIL __DATE__
//! The build number./*!* This is the fourth number to appear in a version tag. For instance,* if the tag is '0.1.2.3', this function would return '3'.*/int Build();
// Returns the largest SVN revision number that a source file has been updated// to. This is not perfectly accurate, but should be good enough for save// files, as breaking a save almost always involves changing a source file.int svn_revision();
typedef enum {DEV, /*!< In-development version (does not exactly match a tag). i.e. '0.1.2-3-g3af4131'. */ALPHA, /*!< An alpha release. i.e. '0.1.2-a3' */BETA, /*!< A beta release. i.e. '0.1.2-b3' */RC, /*!< A release candidate. i.e. '0.1.2-rc3' */FINAL /*!< A final release. i.e. '0.1.2' */} Class;
class check_revision{public:check_revision(const char *rev_string);static int max_rev;};
//! The release class./*!* Indicates the type of release. For instance, if you have a tag such* as '0.1.2-b1', the class is 'BETA'. Valid suffixes are '-a', '-b',* '-rc'. If the version string does not precisely match a tag, then it* is considered an in-development version.*/Class ReleaseType();
// This macro is meant to be used once per source file.// It can't be put in header files, as there's no way to generate a unique// object name across includes. Blame the lack of cross-platform __COUNTER__.#define REVISION(rev) static check_revision check_this_source_file_revision(rev)
//! The release ID./*!* If this is a special type of release (alpha, beta, rc), then this* will return the alpha/beta/rc number. Otherwise, this returns 0.*/int ReleaseID();}
int svn_revision(){#if BUILD_REVISIONreturn BUILD_REVISION;#elsereturn check_revision::max_rev;#endif
int Major(){return CRAWL_VERSION_MAJOR;}int Minor(){return CRAWL_VERSION_MINOR;}int Revision(){return CRAWL_VERSION_REVISION;}int Build(){return CRAWL_VERSION_BUILD;}Class ReleaseType(){return CRAWL_VERSION_PREREL_TYPE;}int ReleaseID(){return CRAWL_VERSION_PREREL_NUM;}
std::string result = "This is <w>" CRAWL " " VERSION "</w> (";#ifdef DISPLAY_BUILD_REVISIONresult += "r" + number_to_string(svn_revision()) + ", ";#endifresult += VERSION_DETAIL ").";
std::string result = "This is <w>" CRAWL " " + Version::Long() + "</w>";