On 3/14/14, 3:02, Walter Bright wrote:
On 3/14/2014 12:34 AM, 1100110 wrote:
...And code duplication everywhere!
Actually, very little of that.
I don't know what you'd call this then...
Exact same bit of code, repeated multiple times for versions which could
be OR'd together.
version (X86)
{
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0x00000;
}
else version (X86_64)
{
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0x00000;
}
else version (MIPS32)
{
enum RTLD_LAZY = 0x0001;
enum RTLD_NOW = 0x0002;
enum RTLD_GLOBAL = 0x0004;
enum RTLD_LOCAL = 0;
}
else version (PPC)
{
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0;
}
else version (PPC64)
{
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0;
}
else version (ARM)
{
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0;
}
else version (AArch64)
{
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0;
}
Yeah there are a few differences, but it would be trivial to collapse
this down...
Just for funsies:
version (X86 || X86_64)
{
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0x00000;
}
else version (MIPS32)
{
enum RTLD_LAZY = 0x0001;
enum RTLD_NOW = 0x0002;
enum RTLD_GLOBAL = 0x0004;
enum RTLD_LOCAL = 0;
}
else version (PPC)
{
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0;
}
else version (PPC64 || ARM || AArch64)
{
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0;
}
Oh wait, isn't 0x00000 the same as 0? (I honestly don't know if that
matters, but assuming it doesn't...)
version (X86 || X86_64 || PPC || PPC64 || ARM || AArch64)
{
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0x00000;
}
else version (MIPS32)
{
enum RTLD_LAZY = 0x0001;
enum RTLD_NOW = 0x0002;
enum RTLD_GLOBAL = 0x0004;
enum RTLD_LOCAL = 0;
}
Huh, for not having any code duplication it sure is a hell of a lot
shorter when combined...