Browse thread
Help interfacing with C
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2006-08-18 (21:00) |
From: | Nathaniel Gray <n8gray@g...> |
Subject: | Re: [Caml-list] Help interfacing with C |
On 8/16/06, malc <malc@pulsesoft.com> wrote: > On Wed, 16 Aug 2006, Nathaniel Gray wrote: > > > Hi folks, > > > > I'm having a heck of a time figuring out why this code *doesn't* work: > > > > /* fdlist is a list of (file_descr * 'a) pairs. Filter by FD_ISSET */ > > static value fdset_to_fdlist2(value fdlist, fd_set *fdset) > > { > > value l, p, newres; > > value res = Val_int(0); > > > > Begin_roots4(l, p, res, newres); /* I know, this is aggressive */ > > for (l = fdlist; l != Val_int(0); l = Field(l, 1)) { > > p = Field(l, 0); > > int fd = Int_val(Field(p, 0)); > > This here (expanded) does Int_val (Field (Field (l, 0), 0)) > > <snip> > > > int fd = Int_val(Field(l, 0)); > > <snip> > > I think the difference is self-evident. Indeed, it's the entire point of the exercise. In the first version l is a list of (fd, 'a) pairs, in the second it's a list of fds. Cheers, -n8 -- >>>-- Nathaniel Gray -- Caltech Computer Science ------> >>>-- Mojave Project -- http://mojave.cs.caltech.edu -->