On Tuesday, 26 April 2016 at 22:57:36 UTC, Jesse Phillips wrote:
typedef enum tagINSTALLMESSAGE { // 12 others ... INSTALLMESSAGE_INITIALIZE , INSTALLMESSAGE_TERMINATE , INSTALLMESSAGE_SHOWDIALOG , #if (_WIN32_MSI >= 500) INSTALLMESSAGE_PERFORMANCE , #endif // (_WIN32_MSI >= 500) #if (_WIN32_MSI >= 400) INSTALLMESSAGE_RMFILESINUSE , #endif // (_WIN32_MSI >= 400) #if (_WIN32_MSI >= 450) INSTALLMESSAGE_INSTALLSTART , INSTALLMESSAGE_INSTALLEND , #endif // (_WIN32_MSI >= 450) } INSTALLMESSAGE;
enum _WIN32_MSI = 450; mixin((int _WIN32_MSI = _WIN32_MSI) { string r ="enum INSTALLMESSAGE { INSTALLMESSAGE_INITIALIZE, INSTALLMESSAGE_TERMINATE, INSTALLMESSAGE_SHOWDIALOG,"; if (_WIN32_MSI >= 500) r ~= "INSTALLMESSAGE_PERFORMANCE ,"; if (_WIN32_MSI >= 400) r ~= "INSTALLMESSAGE_RMFILESINUSE ,"; if (_WIN32_MSI >= 450) { r ~= "INSTALLMESSAGE_INSTALLSTART , INSTALLMESSAGE_INSTALLEND ,"; } return r ~ "}"; }()); ))) // sardonic laugh, which is not part of the source