On 05/24/2013 05:49 PM, Heinz wrote:
If it really has single quotes then it is a multi-character literal,
value of which happens to be implementation-dependent. What is
actually in place of asdf there? May be we can guess the intent better.

Ali

Here're some examples:

#define    kPIHostBlendModeSignature    '8BIM'
#define PIPowerPCCarbonCodeProperty    'ppcb'
#define PIPowerPCMachOCodeProperty    'mach'
#define PICodeMacIntel32Property    'mi32'
#define PICodeMacIntel32Property    'mi64'

I'm porting the Photoshop SDK (CS6) to D. I already compiled a hybrid
plugin with DMC and DMD (it works) but now i want to make native D plugins.

I took liberty in renaming the last one of those macros. ;)

If the multi-character literals are evaluated big-endian as Luís Marques and I guess, then you can use the following code:

import std.stdio;

uint makeId(string s)
{
    uint result = 0;

    foreach (c; s) {
        result <<= 8;
        result += c;
    }

    return result;
}

enum kPIHostBlendModeSignature = makeId("8BIM");
enum PIPowerPCCarbonCodeProperty = makeId("ppcb");
enum PIPowerPCMachOCodeProperty = makeId("mach");
enum PICodeMacIntel32Property = makeId("mi32");
enum PICodeMacIntel64Property = makeId("mi64");

void main()
{
    writeln(kPIHostBlendModeSignature);
    writeln(PIPowerPCCarbonCodeProperty);
    writeln(PIPowerPCMachOCodeProperty);
    writeln(PICodeMacIntel32Property);
    writeln(PICodeMacIntel64Property);
}

It produces the same output as the following C++ program on my system:

#include <iostream>

using namespace std;

#define    kPIHostBlendModeSignature    '8BIM'
#define PIPowerPCCarbonCodeProperty    'ppcb'
#define PIPowerPCMachOCodeProperty    'mach'
#define PICodeMacIntel32Property    'mi32'
#define PICodeMacIntel64Property    'mi64'

int main()
{
    cout << kPIHostBlendModeSignature << '\n'
         << PIPowerPCCarbonCodeProperty << '\n'
         << PIPowerPCMachOCodeProperty << '\n'
         << PICodeMacIntel32Property << '\n'
         << PICodeMacIntel64Property << '\n';
}

Ali

Reply via email to