diff options
author | 2016-09-03 16:11:58 -0400 | |
---|---|---|
committer | 2016-09-03 16:11:58 -0400 | |
commit | 4251194fe5b9f4d7551c362326e7ca20bc7da99b (patch) | |
tree | b82bba2120de1fbfd16631b91ba8b479e2ccf9fe | |
parent | be3c18302e117049c0f4c75f719afc3d3d69aa08 (diff) |
Worked around the OPTION_GUIDE_EXTERN issue by using a crazy trick involving namespaces
Caveats:
1. Because of how this trick works, it is no longer possible to declare an option guide as static, so I had to make a bunch of changes
2. I'm going to want the hardcore C++ guys (i.e. - Vas) to review this with a fine toothed comb
-rw-r--r-- | src/devices/imagedev/diablo.cpp | 2 | ||||
-rw-r--r-- | src/devices/imagedev/harddriv.cpp | 2 | ||||
-rw-r--r-- | src/emu/diimage.cpp | 2 | ||||
-rw-r--r-- | src/lib/formats/flopimg.cpp | 3 | ||||
-rw-r--r-- | src/lib/util/opresolv.h | 27 | ||||
-rw-r--r-- | src/mame/machine/psion_pack.cpp | 2 | ||||
-rw-r--r-- | src/tools/imgtool/imghd.cpp | 2 | ||||
-rw-r--r-- | src/tools/imgtool/modules/amiga.cpp | 2 | ||||
-rw-r--r-- | src/tools/imgtool/modules/bml3.cpp | 2 | ||||
-rw-r--r-- | src/tools/imgtool/modules/cybiko.cpp | 2 | ||||
-rw-r--r-- | src/tools/imgtool/modules/hp48.cpp | 2 | ||||
-rw-r--r-- | src/tools/imgtool/modules/pc_hard.cpp | 2 | ||||
-rw-r--r-- | src/tools/imgtool/modules/psion.cpp | 4 | ||||
-rw-r--r-- | src/tools/imgtool/modules/rsdos.cpp | 2 | ||||
-rw-r--r-- | src/tools/imgtool/modules/thomson.cpp | 4 | ||||
-rw-r--r-- | src/tools/imgtool/modules/ti99.cpp | 2 | ||||
-rw-r--r-- | src/tools/imgtool/modules/ti990hd.cpp | 2 | ||||
-rw-r--r-- | src/tools/imgtool/modules/vzdos.cpp | 2 |
18 files changed, 37 insertions, 29 deletions
diff --git a/src/devices/imagedev/diablo.cpp b/src/devices/imagedev/diablo.cpp index 5009c0fc872..238e0dd5a89 100644 --- a/src/devices/imagedev/diablo.cpp +++ b/src/devices/imagedev/diablo.cpp @@ -10,7 +10,7 @@ #include "diablo.h" -static OPTION_GUIDE_START(dsk_option_guide) +OPTION_GUIDE_START(dsk_option_guide) OPTION_INT('C', "cylinders", "Cylinders") OPTION_INT('H', "heads", "Heads") OPTION_INT('S', "sectors", "Sectors") diff --git a/src/devices/imagedev/harddriv.cpp b/src/devices/imagedev/harddriv.cpp index ffc17871050..8070a1d9afe 100644 --- a/src/devices/imagedev/harddriv.cpp +++ b/src/devices/imagedev/harddriv.cpp @@ -19,7 +19,7 @@ #include "harddriv.h" -static OPTION_GUIDE_START(hd_option_guide) +OPTION_GUIDE_START(hd_option_guide) OPTION_INT('C', "cylinders", "Cylinders") OPTION_INT('H', "heads", "Heads") OPTION_INT('S', "sectors", "Sectors") diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 59f1dc84125..5557abda36e 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -1227,7 +1227,7 @@ void device_image_interface::unload() // create_option_guide //------------------------------------------------- -static OPTION_GUIDE_START(null_option_guide) +OPTION_GUIDE_START(null_option_guide) OPTION_GUIDE_END const util::option_guide &device_image_interface::create_option_guide() const diff --git a/src/lib/formats/flopimg.cpp b/src/lib/formats/flopimg.cpp index e05bd54cf26..9fb487ba971 100644 --- a/src/lib/formats/flopimg.cpp +++ b/src/lib/formats/flopimg.cpp @@ -58,7 +58,7 @@ struct floppy_params static floperr_t floppy_track_unload(floppy_image_legacy *floppy); -OPTION_GUIDE_START(floppy_option_guide_actual) +OPTION_GUIDE_START(floppy_option_guide) OPTION_INT('H', "heads", "Heads") OPTION_INT('T', "tracks", "Tracks") OPTION_INT('S', "sectors", "Sectors") @@ -66,7 +66,6 @@ OPTION_GUIDE_START(floppy_option_guide_actual) OPTION_INT('I', "interleave", "Interleave") OPTION_INT('F', "firstsectorid", "First Sector") OPTION_GUIDE_END -const util::option_guide &floppy_option_guide = floppy_option_guide_actual; static void floppy_close_internal(floppy_image_legacy *floppy, int close_file); diff --git a/src/lib/util/opresolv.h b/src/lib/util/opresolv.h index 3d04f723840..3d919d26d59 100644 --- a/src/lib/util/opresolv.h +++ b/src/lib/util/opresolv.h @@ -50,19 +50,28 @@ // TYPE DEFINITIONS //************************************************************************** -#define OPTION_GUIDE_START(option_guide_) \ - const auto option_guide_ = util::make_option_guide(0 -#define OPTION_GUIDE_END \ - ); -#define OPTION_GUIDE_EXTERN(option_guide_) \ +#define OPTION_GUIDE_START(option_guide_) \ + namespace option_guide_impl_##option_guide_ \ + { \ + static const util::option_guide &get(); \ + }; \ + const util::option_guide &option_guide_ = option_guide_impl_##option_guide_::get(); \ + namespace option_guide_impl_##option_guide_ \ + { \ + static const auto actual = util::make_option_guide(0 +#define OPTION_GUIDE_END \ + ); \ + static const util::option_guide &get() { return actual; } \ + }; +#define OPTION_GUIDE_EXTERN(option_guide_) \ extern const util::option_guide &option_guide_ -#define OPTION_INT(option_char, identifier, display_name) \ +#define OPTION_INT(option_char, identifier, display_name) \ ,util::option_guide::entry(util::option_guide::entry::option_type::INT, (option_char), (identifier), (display_name)) -#define OPTION_STRING(option_char, identifier, display_name) \ +#define OPTION_STRING(option_char, identifier, display_name) \ ,util::option_guide::entry(util::option_guide::entry::option_type::STRING, (option_char), (identifier), (display_name)) -#define OPTION_ENUM_START(option_char, identifier, display_name) \ +#define OPTION_ENUM_START(option_char, identifier, display_name) \ ,util::option_guide::entry(util::option_guide::entry::option_type::ENUM_BEGIN, (option_char), (identifier), (display_name)) -#define OPTION_ENUM(value, identifier, display_name) \ +#define OPTION_ENUM(value, identifier, display_name) \ ,util::option_guide::entry(util::option_guide::entry::option_type::ENUM_VALUE, (value), (identifier), (display_name)) #define OPTION_ENUM_END diff --git a/src/mame/machine/psion_pack.cpp b/src/mame/machine/psion_pack.cpp index 52c0e9b9629..5f9550dde73 100644 --- a/src/mame/machine/psion_pack.cpp +++ b/src/mame/machine/psion_pack.cpp @@ -40,7 +40,7 @@ #define OPK_HEAD_SIZE 6 -static OPTION_GUIDE_START( datapack_option_guide ) +OPTION_GUIDE_START( datapack_option_guide ) OPTION_INT('S', "size", "Datapack size" ) OPTION_INT('R', "ram", "RAM/EPROM" ) OPTION_INT('P', "paged", "Paged" ) diff --git a/src/tools/imgtool/imghd.cpp b/src/tools/imgtool/imghd.cpp index 38f26bfaabb..89f543d8185 100644 --- a/src/tools/imgtool/imghd.cpp +++ b/src/tools/imgtool/imghd.cpp @@ -226,7 +226,7 @@ enum mess_hd_createopts_seclen = 'F' }; -static OPTION_GUIDE_START( mess_hd_create_optionguide ) +OPTION_GUIDE_START( mess_hd_create_optionguide ) OPTION_INT(mess_hd_createopts_blocksize, "blocksize", "Sectors Per Block" ) OPTION_INT(mess_hd_createopts_cylinders, "cylinders", "Cylinders" ) OPTION_INT(mess_hd_createopts_heads, "heads", "Heads" ) diff --git a/src/tools/imgtool/modules/amiga.cpp b/src/tools/imgtool/modules/amiga.cpp index d85e3698ec9..d506b97cf07 100644 --- a/src/tools/imgtool/modules/amiga.cpp +++ b/src/tools/imgtool/modules/amiga.cpp @@ -2342,7 +2342,7 @@ static imgtoolerr_t amiga_image_suggesttransfer(imgtool_partition *partition, co *****************************************************************************/ -static OPTION_GUIDE_START(amiga_createimage_optionguide) +OPTION_GUIDE_START(amiga_createimage_optionguide) OPTION_STRING( 'N', "name", "Volume name" ) OPTION_ENUM_START( 'S', "density", "Density" ) OPTION_ENUM( 0, "dd", "Double Density" ) diff --git a/src/tools/imgtool/modules/bml3.cpp b/src/tools/imgtool/modules/bml3.cpp index f5e88663928..80048fc340f 100644 --- a/src/tools/imgtool/modules/bml3.cpp +++ b/src/tools/imgtool/modules/bml3.cpp @@ -882,7 +882,7 @@ static imgtoolerr_t bml3_diskimage_suggesttransfer(imgtool_partition *partition, Imgtool module declaration *********************************************************************/ -static OPTION_GUIDE_START( bml3_writefile_optionguide ) +OPTION_GUIDE_START( bml3_writefile_optionguide ) OPTION_ENUM_START( BML3_OPTIONS_FTYPE, "ftype", "File type" ) OPTION_ENUM( 0, "basic", "Basic" ) OPTION_ENUM( 1, "data", "Data" ) diff --git a/src/tools/imgtool/modules/cybiko.cpp b/src/tools/imgtool/modules/cybiko.cpp index a822c904cde..a90f9daa745 100644 --- a/src/tools/imgtool/modules/cybiko.cpp +++ b/src/tools/imgtool/modules/cybiko.cpp @@ -531,7 +531,7 @@ static imgtoolerr_t cybiko_image_delete_file( imgtool_partition *partition, cons return IMGTOOLERR_SUCCESS; } -static OPTION_GUIDE_START( cybiko_image_createimage_optguide ) +OPTION_GUIDE_START( cybiko_image_createimage_optguide ) OPTION_ENUM_START( 'F', "flash", "Flash Type" ) OPTION_ENUM( 0, "AT45DB041", "AT45DB041 (528 KByte)" ) OPTION_ENUM( 1, "AT45DB081", "AT45DB081 (1056 KByte)" ) diff --git a/src/tools/imgtool/modules/hp48.cpp b/src/tools/imgtool/modules/hp48.cpp index 46d8674a41a..f73459c3bfd 100644 --- a/src/tools/imgtool/modules/hp48.cpp +++ b/src/tools/imgtool/modules/hp48.cpp @@ -136,7 +136,7 @@ static const char* hp48_prefix = "HPHP48-R"; -static OPTION_GUIDE_START( hp48_create_optionguide ) +OPTION_GUIDE_START( hp48_create_optionguide ) OPTION_INT('S', "size", "Size in KB" ) OPTION_GUIDE_END diff --git a/src/tools/imgtool/modules/pc_hard.cpp b/src/tools/imgtool/modules/pc_hard.cpp index 8244441aa65..57f1f5ad52d 100644 --- a/src/tools/imgtool/modules/pc_hard.cpp +++ b/src/tools/imgtool/modules/pc_hard.cpp @@ -55,7 +55,7 @@ #define FAT_SECLEN 512 -static OPTION_GUIDE_START( pc_chd_create_optionguide ) +OPTION_GUIDE_START( pc_chd_create_optionguide ) OPTION_INT('T', "cylinders", "Cylinders" ) OPTION_INT('H', "heads", "Heads" ) OPTION_INT('S', "sectors", "Sectors" ) diff --git a/src/tools/imgtool/modules/psion.cpp b/src/tools/imgtool/modules/psion.cpp index c0f35f57b2e..3fcd398d30e 100644 --- a/src/tools/imgtool/modules/psion.cpp +++ b/src/tools/imgtool/modules/psion.cpp @@ -626,7 +626,7 @@ static imgtoolerr_t datapack_delete_file( imgtool_partition *partition, const ch return IMGTOOLERR_FILENOTFOUND; } -static OPTION_GUIDE_START( psion_create_optguide ) +OPTION_GUIDE_START( psion_create_optguide ) OPTION_ENUM_START( 'S', "size", "datapack size" ) OPTION_ENUM( 1, "8k", "8 kbyte" ) OPTION_ENUM( 2, "16k", "16 kbyts" ) @@ -641,7 +641,7 @@ static OPTION_GUIDE_START( psion_create_optguide ) OPTION_INT('C', "copy", "copyable datapack" ) OPTION_GUIDE_END -static OPTION_GUIDE_START( psion_write_optguide ) +OPTION_GUIDE_START( psion_write_optguide ) OPTION_ENUM_START( 'T', "type", "file type" ) OPTION_ENUM( 1, "OB3", "OB3 files" ) OPTION_ENUM( 2, "OPL", "OPL files" ) diff --git a/src/tools/imgtool/modules/rsdos.cpp b/src/tools/imgtool/modules/rsdos.cpp index 79ccfd0c6da..823e3d98339 100644 --- a/src/tools/imgtool/modules/rsdos.cpp +++ b/src/tools/imgtool/modules/rsdos.cpp @@ -579,7 +579,7 @@ static imgtoolerr_t rsdos_diskimage_suggesttransfer(imgtool_partition *partition Imgtool module declaration *********************************************************************/ -static OPTION_GUIDE_START( coco_rsdos_writefile_optionguide ) +OPTION_GUIDE_START( coco_rsdos_writefile_optionguide ) OPTION_ENUM_START( RSDOS_OPTIONS_FTYPE, "ftype", "File type" ) OPTION_ENUM( 0, "basic", "Basic" ) OPTION_ENUM( 1, "data", "Data" ) diff --git a/src/tools/imgtool/modules/thomson.cpp b/src/tools/imgtool/modules/thomson.cpp index 9ae04b0de4e..ecd475add86 100644 --- a/src/tools/imgtool/modules/thomson.cpp +++ b/src/tools/imgtool/modules/thomson.cpp @@ -1519,7 +1519,7 @@ FILTER( thombas128, /************************* driver ***************************/ -static OPTION_GUIDE_START( thom_createimage_optguide ) +OPTION_GUIDE_START( thom_createimage_optguide ) OPTION_INT( 'H', "heads", "Heads" ) OPTION_INT( 'T', "tracks", "Tracks" ) OPTION_ENUM_START( 'D', "density", "Density" ) @@ -1529,7 +1529,7 @@ static OPTION_GUIDE_START( thom_createimage_optguide ) OPTION_STRING( 'N', "name", "Floppy name" ) OPTION_GUIDE_END -static OPTION_GUIDE_START( thom_writefile_optguide ) +OPTION_GUIDE_START( thom_writefile_optguide ) OPTION_ENUM_START( 'T', "ftype", "File type" ) OPTION_ENUM( 0, "auto", "Automatic (by extension)" ) OPTION_ENUM( 1, "B", "Program" ) diff --git a/src/tools/imgtool/modules/ti99.cpp b/src/tools/imgtool/modules/ti99.cpp index d1d18eb1acc..57b58ea75b1 100644 --- a/src/tools/imgtool/modules/ti99.cpp +++ b/src/tools/imgtool/modules/ti99.cpp @@ -3877,7 +3877,7 @@ enum dsk_createopts_density = 'F' }; -static OPTION_GUIDE_START( dsk_create_optionguide ) +OPTION_GUIDE_START( dsk_create_optionguide ) OPTION_STRING(dsk_createopts_volname, "label", "Volume name" ) OPTION_INT(dsk_createopts_sides, "sides", "Sides" ) OPTION_INT(dsk_createopts_tracks, "tracks", "Tracks" ) diff --git a/src/tools/imgtool/modules/ti990hd.cpp b/src/tools/imgtool/modules/ti990hd.cpp index 07987802cc5..195606e720a 100644 --- a/src/tools/imgtool/modules/ti990hd.cpp +++ b/src/tools/imgtool/modules/ti990hd.cpp @@ -409,7 +409,7 @@ enum ti990_createopts_sectorsize = 'E' }; -static OPTION_GUIDE_START( ti990_create_optionguide ) +OPTION_GUIDE_START( ti990_create_optionguide ) /*OPTION_STRING(ti990_createopts_volname, "label", "Volume name" )*/ OPTION_INT(ti990_createopts_cylinders, "cylinders", "Cylinders" ) OPTION_INT(ti990_createopts_heads, "heads", "Heads" ) diff --git a/src/tools/imgtool/modules/vzdos.cpp b/src/tools/imgtool/modules/vzdos.cpp index 7d06ffc552c..db0d056e10d 100644 --- a/src/tools/imgtool/modules/vzdos.cpp +++ b/src/tools/imgtool/modules/vzdos.cpp @@ -903,7 +903,7 @@ void filter_vzsnapshot_getinfo(UINT32 state, union filterinfo *info) Imgtool module declaration *********************************************************************/ -static OPTION_GUIDE_START(vzdos_writefile_optionguide) +OPTION_GUIDE_START(vzdos_writefile_optionguide) OPTION_ENUM_START( 'T', "ftype", "File type" ) OPTION_ENUM( 0, "basic", "Basic" ) OPTION_ENUM( 1, "binary", "Binary" ) |