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