www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - plain C to D2 const etc:

reply BLS <nanali nospam.wanadoo.fr> writes:
Hi, what is the correct way to translate this snippet into _D2_ ?
//const and cast()

void rc2_decrypt( const unsigned short xkey[64],
                   unsigned char *plain,
                   const unsigned char *cipher )
         {
         unsigned x76, x54, x32, x10, i;

         x76 = (cipher[7] << 8) + cipher[6];
.........

many TIA, Bjoern
Dec 15 2008
parent reply "Denis Koroskin" <2korden gmail.com> writes:
On Mon, 15 Dec 2008 20:11:44 +0300, BLS <nanali nospam.wanadoo.fr> wrote:

 Hi, what is the correct way to translate this snippet into _D2_ ?
 //const and cast()

 void rc2_decrypt( const unsigned short xkey[64],
                    unsigned char *plain,
                    const unsigned char *cipher )
          {
          unsigned x76, x54, x32, x10, i;

          x76 = (cipher[7] << 8) + cipher[6];
 .........

 many TIA, Bjoern

Here you go: void rc2_decrypt( const(ushort)[64] xkey, ubyte* plain, const(ubyte)* cipher ) { uint x76, x54, x32, x10, i; x76 = (cipher[7] << 8) + cipher[6]; // ..... } You'd better pass cipher and plain as arrays rather than pointers if their sizes are known: void rc2_decrypt( const(ushort)[64] xkey, const(ubyte)[] plain, const(ubyte)[] cipher ) { uint x76, x54, x32, x10, i; x76 = (cipher[7] << 8) + cipher[6]; // ..... }
Dec 15 2008
parent BLS <nanali nospam.wanadoo.fr> writes:
Denis Koroskin schrieb:
 On Mon, 15 Dec 2008 20:11:44 +0300, BLS <nanali nospam.wanadoo.fr> wrote:
 
 Hi, what is the correct way to translate this snippet into _D2_ ?
 //const and cast()

 void rc2_decrypt( const unsigned short xkey[64],
                    unsigned char *plain,
                    const unsigned char *cipher )
          {
          unsigned x76, x54, x32, x10, i;

          x76 = (cipher[7] << 8) + cipher[6];
 .........

 many TIA, Bjoern

Here you go: void rc2_decrypt( const(ushort)[64] xkey, ubyte* plain, const(ubyte)* cipher ) { uint x76, x54, x32, x10, i; x76 = (cipher[7] << 8) + cipher[6]; // ..... } You'd better pass cipher and plain as arrays rather than pointers if their sizes are known: void rc2_decrypt( const(ushort)[64] xkey, const(ubyte)[] plain, const(ubyte)[] cipher ) { uint x76, x54, x32, x10, i; x76 = (cipher[7] << 8) + cipher[6]; // ..... }

I am afraid I am not able to use arrays 'cause I've to use the function as follows : export extern(Windows) void rc2_decrypt() in order to use it from my 4GL development-system. beside, any reason for const(ubyte)[] plain instead of ubyte[] plain ? Bjoern
Dec 15 2008