I'm building the new opengl binding for Racket, and keep running
into surprises.

Most of them are straightforward, but tedious, but I run into
something strange.  It's a piece of syntax in the original
(presumably) corrent, but obsolete, binding -- specifically,
 a strange type.

I thought I should ask before blundering through with it.

Here's the definition for glAreProgramsResidentNV as present in
the existing binding:


(define-gl glAreProgramsResidentNV 2 ((n : _int32) (programs : (_u32vector i)) 
(residences : (_vector o _bool n)) -> (result : _bool) -> (values result 
residences)) (->> exact-integer? u32vector? (values boolean? (vectorof 
boolean?))) check-gl-error)


Now normally the define-gl macro seems to take
    a number,
    a type of the function (containing names for the parameters
        in the style of typed Racket's lambda arguments), and
    another type to put in the documentation.

Now the type of the function here is
((n : _int32) (programs : (_u32vector i)) (residences : (_vector o _bool n)) -> 
(result : _bool) -> (values result residences))

An ordinary enough looking type except that -> occurs twice.

**: Is this a known Racket construct?

Or is it something peculiar to define-gl, which I'll just have
to figure out as I build the new opengl binding.  It's presumably
related to the fact that the 'residences' parameter is for output.

-- hendrik


In case anyone is interested, here are the relevant
machine-readable bits from the nes and the old Khronos API specifications


The xml specfile entry for this is:

        <command>
            <proto group="Boolean"><ptype>GLboolean</ptype> 
<name>glAreProgramsResidentNV</name></proto>
            <param><ptype>GLsizei</ptype> <name>n</name></param>
            <param len="n">const <ptype>GLuint</ptype> 
*<name>programs</name></param>
            <param group="Boolean" len="n"><ptype>GLboolean</ptype> 
*<name>residences</name></param>
            <glx type="vendor" opcode="1293"/>
        </command>


And here's the old specfile entry from the old Khronos opengl standard:

AreProgramsResidentNV(n, programs, residences)
        return          Boolean
        param           n               SizeI in value
        param           programs        UInt32 in array [n]
        param           residences      Boolean out array [n]
        category        NV_vertex_program
        dlflags         notlistable
        version         1.2
        extension       soft WINSOFT NV10
        glxflags        ignore
        glxvendorpriv   1293
        offset          578


-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/20200410140217.b4e5xizymwunvyu6%40topoi.pooq.com.

Reply via email to