Module: WinSock2 Synopsis: Hand-generated definitions to supplement the automatic translation. Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: Functional Objects Library Public License Version 1.0 Dual-license: GNU Lesser General Public License Warranty: Distributed WITHOUT WARRANTY OF ANY KIND define inline constant = ; // in C define inline constant = ; // Dylan representation define C-pointer-type => ; // From "winnt.h": define constant $MAXIMUM-WAIT-OBJECTS = 64; // From "winbase.h": define constant $WAIT-OBJECT-0 = 0; // hand-translated macros: define function FD-CLR(fd :: , set :: ) => (); let i :: = 0; block (quit) while ( i < set.fd-count-value ) if ( fd-array-array(set,i) = fd ) while( i < (set.fd-count-value - 1) ) fd-array-array(set,i) := fd-array-array(set,i + 1); i := i + 1; end while; let new-count :: = set.fd-count-value - 1; set.fd-count-value := new-count; quit(); end if; end while; end block; end FD-CLR; define function FD-SET(fd :: , set :: ) => (); let i :: = 0; block (quit) while ( i < set.fd-count-value ) if ( fd-array-array(set,i) = fd ) quit(); end if; end while; end block; if ( i = set.fd-count-value ) if ( set.fd-count-value < $FD-SETSIZE ) fd-array-array(set,i) := fd; let new-count :: = set.fd-count-value + 1; set.fd-count-value := new-count; end if; end if; end FD-SET; define inline-only function FD-ZERO (set :: ) => (); set.fd-count-value := 0; end FD-ZERO; define inline-only function timerisset(tvp :: ) => set? :: ; (~ zero?(tvp.tv-sec-value)) | (~ zero?(tvp.tv-usec-value)) end timerisset; define inline-only function timercmp(tvp :: , uvp :: , cmp :: ) => value :: ; cmp(tvp.tv-sec-value, uvp.tv-sec-value) | (tvp.tv-sec-value = uvp.tv-sec-value & cmp(tvp.tv-usec-value, uvp.tv-usec-value)) end timercmp; // utility functions for convenience define C-pointer-type => ; define C-pointer-type => ; define simple-C-mapped-subtype () export-map , export-function: identity; end; define inline-only C-function win32-recv-buffer parameter s :: ; parameter buf :: ; parameter len :: ; parameter flags :: ; result value :: ; c-name: "recv", c-modifiers: "__stdcall"; end; define inline-only C-function win32-send-buffer parameter s :: ; parameter buf :: ; parameter len :: ; parameter flags :: ; result value :: ; c-name: "send", c-modifiers: "__stdcall"; end; define inline-only C-function win32-recv-buffer-from parameter s :: ; parameter buf :: ; parameter len :: ; parameter flags :: ; parameter from :: ; parameter fromlen :: ; result value :: ; c-name: "recvfrom", c-modifiers: "__stdcall"; end; define inline-only C-function win32-send-buffer-to parameter s :: ; parameter buf :: ; parameter len :: ; parameter flags :: ; parameter to :: /* const */ ; parameter tolen :: ; result value :: ; c-name: "sendto", c-modifiers: "__stdcall"; end; // new things for mswsock.h define C-pointer-type => ;