OpenLexocad  27.0
Version.h
Go to the documentation of this file.
1 #include <memory>
2 
3 
4 namespace Core
5 {
6 class LibraryLoader;
7 class VersionP;
8 
17 class Version
18 {
19 public:
20  using PFN_LexocadVersion = void (*)(int*, int*, int*, int*);
21  using PFN_LexocadVersionPart = int (*)();
22  using PFN_LexocadVersionString = const char* (*)();
23 
24 
25  Version(const Version& other) = delete;
26  Version& operator=(const Version& other) = delete;
27 
28  static Version& instance();
29  /*
30  * NOTE! That the order of declaration of the class members IS very important!
31  * Do not screw with this unless you know how the class initialization goes.
32  * (ISO/IEC 14882:2003(E) section 12.6.2)
33  * On the other hand it will fail in runtime during dll loading... so you will
34  * know :)
35  * - forry
36  */
37 private:
38  Version();
39  std::unique_ptr<LibraryLoader> lxInfoDLL;
40 
41  //PFN_LexocadVersion getLexocadVersion;
42  PFN_LexocadVersionPart getLexocadVersionMajor;
43  PFN_LexocadVersionPart getLexocadVersionMinor;
44  PFN_LexocadVersionPart getLexocadVersionPatch;
45  PFN_LexocadVersionPart getLexocadVersionRevision;
46 
47  PFN_LexocadVersionString getLexocadBuildDateTime;
48  PFN_LexocadVersionString getLexocadDocumentVersion;
49  PFN_LexocadVersionString getLexocadProductVersionStr;
50 
51 public:
52  const unsigned major;
53  const unsigned minor;
54  const unsigned patch;
55  const unsigned revision;
56 
57  const char* buildDateTime;
58  const char* document;
59  const char* product;
60 
61 };
62 
63 extern LX_CORE_EXPORT Version& version; // = Version::instance();
64 }
const char * document
Definition: Version.h:58
const char * buildDateTime
Definition: Version.h:57
int(*)() PFN_LexocadVersionPart
Definition: Version.h:21
const char *(*)() PFN_LexocadVersionString
Definition: Version.h:22
void(*)(int *, int *, int *, int *) PFN_LexocadVersion
Definition: Version.h:20
A proxy class to conveniently get the automatically generated version of lexocad.
Definition: Version.h:17
const unsigned major
Definition: Version.h:52
LX_CORE_EXPORT Version & version
const unsigned revision
Definition: Version.h:55
const char * product
Definition: Version.h:59
Version & operator=(const Version &other)=delete
Definition: Base.h:19
static Version & instance()
const unsigned patch
Definition: Version.h:54
const unsigned minor
Definition: Version.h:53