Hi,

David MENTRE wrote:

> Yes, it is specific to ocamlrpcgen. It is used to tell the compiler to
> map the specified RPC int into an OCaml Int32. By default, I map all
> int to native 31-bits OCaml integers.

According to RFC 1014, section 3.1:

==
3.1 Integer

   An XDR signed integer is a 32-bit datum that encodes an integer in
   the range [-2147483648,2147483647].  The integer is represented in
   two's complement notation.  The most and least significant bytes are
   0 and 3, respectively.  Integers are declared as follows:

         int identifier;

           (MSB)                   (LSB)
         +-------+-------+-------+-------+
         |byte 0 |byte 1 |byte 2 |byte 3 |                      INTEGER
         +-------+-------+-------+-------+
         <------------32 bits------------>
==

So, a simple «int» should be 32-bits signed integer. If ocamlrpcgen
doesn't do that by default, then I suppose it's broken.

I don't have the source at hand, but if there are simple «int» in your
XDR file, then it means that they are limited to 31-bits, which is not
correct according to the RFC.

Just for the culture, what's the purpose of the remaining bit in native
OCaml integers ?

> I suppose you implementation maps int to int32 so you can safely
> ignore it with something like:
> #define _int32 /* nothing */

Yep, that's what I did for the moment, but I just wanted to make sure
that this wasn't going to create an incompatibility while communicating
with the server.

Thanks,

Thomas
-- 
Thomas Petazzoni
[EMAIL PROTECTED]



_______________________________________________
Demexp-dev mailing list
Demexp-dev@nongnu.org
http://lists.nongnu.org/mailman/listinfo/demexp-dev

Répondre à