C header file: tagged enumerations

Max Samukha via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Apr 27 11:04:17 PDT 2016


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





More information about the Digitalmars-d-learn mailing list