RADLib
RADical C++ application framework
RADLicenseGate.h
Go to the documentation of this file.
1 #ifndef RADLICENSEGATE_H
2 #define RADLICENSEGATE_H
3 
14 #pragma once
15 
16 #ifndef RADLIB_LICENSE_ACCEPTED
17 #error "RADLib requires defining RADLIB_LICENSE_ACCEPTED=1 after reviewing LICENSE.md."
18 #endif
19 
20 #if RADLIB_LICENSE_ACCEPTED != 1
21 #error "RADLIB_LICENSE_ACCEPTED must be defined as 1."
22 #endif
23 
24 #if !defined(RADLIB_LICENSE_TIER_COMMUNITY) && \
25  !defined(RADLIB_LICENSE_TIER_SMALL_BUSINESS) && \
26  !defined(RADLIB_LICENSE_TIER_COMMERCIAL) && \
27  !defined(RADLIB_LICENSE_TIER_PARTNER) && \
28  !defined(RADLIB_LICENSE_TIER_INTERNAL)
29 #error "Define one RADLib license tier macro: RADLIB_LICENSE_TIER_COMMUNITY, RADLIB_LICENSE_TIER_SMALL_BUSINESS, RADLIB_LICENSE_TIER_COMMERCIAL, RADLIB_LICENSE_TIER_PARTNER, or RADLIB_LICENSE_TIER_INTERNAL."
30 #endif
31 
32 #if defined(RADLIB_LICENSE_TIER_COMMUNITY)
33 #define RADLIB_LICENSE_TIER_TEXT "community"
34 #elif defined(RADLIB_LICENSE_TIER_SMALL_BUSINESS)
35 #define RADLIB_LICENSE_TIER_TEXT "small-business"
36 #elif defined(RADLIB_LICENSE_TIER_COMMERCIAL)
37 #define RADLIB_LICENSE_TIER_TEXT "commercial"
38 #elif defined(RADLIB_LICENSE_TIER_PARTNER)
39 #define RADLIB_LICENSE_TIER_TEXT "partner"
40 #elif defined(RADLIB_LICENSE_TIER_INTERNAL)
41 #define RADLIB_LICENSE_TIER_TEXT "internal"
42 #else
43 #define RADLIB_LICENSE_TIER_TEXT "unknown"
44 #endif
45 
46 #if defined(RADLIB_EDITION_PAID)
47 #define RADLIB_EDITION_TEXT "paid-edition"
48 #elif defined(RADLIB_EDITION_INTERNAL)
49 #define RADLIB_EDITION_TEXT "internal-edition"
50 #else
51 #define RADLIB_EDITION_COMMUNITY 1
52 #define RADLIB_EDITION_TEXT "community-edition"
53 #endif
54 
55 #ifndef RADLIB_EDITION_REQUIRES_LICENSE_KEY
56 #if defined(RADLIB_EDITION_PAID)
57 #define RADLIB_EDITION_REQUIRES_LICENSE_KEY 1
58 #else
59 #define RADLIB_EDITION_REQUIRES_LICENSE_KEY 0
60 #endif
61 #endif
62 
63 namespace RADLicense {
65  inline constexpr const char* compileTier() {
67  }
68 
70  inline constexpr const char* compileEdition() {
71  return RADLIB_EDITION_TEXT;
72  }
73 
75  inline constexpr bool compileRequiresRuntimeLicenseKey() {
77  }
78 
80  inline constexpr const char* compileAuditStamp() {
81  return "RADLIB_LICENSE_ACCEPTED=1;RADLIB_LICENSE_TIER=" RADLIB_LICENSE_TIER_TEXT
82  ";RADLIB_EDITION=" RADLIB_EDITION_TEXT;
83  }
84 
86  inline constexpr bool communityBuild() {
87  return
88 #if defined(RADLIB_LICENSE_TIER_COMMUNITY)
89  true;
90 #else
91  false;
92 #endif
93  }
94 
96  inline constexpr bool commercialBuild() {
97  return
98 #if defined(RADLIB_LICENSE_TIER_COMMERCIAL)
99  true;
100 #else
101  false;
102 #endif
103  }
104 
106  inline constexpr bool communityEdition() {
107  return
108 #if defined(RADLIB_EDITION_COMMUNITY)
109  true;
110 #else
111  false;
112 #endif
113  }
114 
116  inline constexpr bool paidEdition() {
117  return
118 #if defined(RADLIB_EDITION_PAID)
119  true;
120 #else
121  false;
122 #endif
123  }
124 }
125 
126 #endif
#define RADLIB_LICENSE_TIER_TEXT
Definition: RADLicenseGate.h:43
#define RADLIB_EDITION_REQUIRES_LICENSE_KEY
Definition: RADLicenseGate.h:59
#define RADLIB_EDITION_TEXT
Definition: RADLicenseGate.h:52
Definition: RADLicenseGate.h:63
constexpr const char * compileAuditStamp()
Returns a stable audit stamp suitable for logs and about dialogs.
Definition: RADLicenseGate.h:80
constexpr bool compileRequiresRuntimeLicenseKey()
Returns true when this compile target expects runtime paid-license verification.
Definition: RADLicenseGate.h:75
constexpr bool communityBuild()
Returns true when this translation unit was compiled as a community build.
Definition: RADLicenseGate.h:86
constexpr bool paidEdition()
Returns true when this translation unit was compiled against Paid Edition RADLib.
Definition: RADLicenseGate.h:116
constexpr const char * compileEdition()
Returns the RADLib product edition declared when this translation unit was compiled.
Definition: RADLicenseGate.h:70
constexpr bool commercialBuild()
Returns true when this translation unit was compiled as a commercial build.
Definition: RADLicenseGate.h:96
constexpr bool communityEdition()
Returns true when this translation unit was compiled against Community Edition RADLib.
Definition: RADLicenseGate.h:106
constexpr const char * compileTier()
Returns the license tier declared when this translation unit was compiled.
Definition: RADLicenseGate.h:65