module: nanomsg synopsis: generated bindings for the nanomsg library author: Bruce Mitchener, Jr. copyright: See LICENSE file in this distribution. define simple-C-mapped-subtype () export-map , export-function: identity; end; define interface #include { "sp/sp.h", "sp/fanin.h", "sp/inproc.h", "sp/pair.h", "sp/reqrep.h", "sp/survey.h", "sp/fanout.h", "sp/ipc.h", "sp/pubsub.h", "sp/tcp.h" }, exclude: { "SP_HAUSNUMERO", "SP_PAIR_ID", "SP_PUBSUB_ID", "SP_REQREP_ID", "SP_FANIN_ID", "SP_FANOUT_ID", "SP_SURVEY_ID" }, equate: {"char *" => }, rename: { "sp_recv" => %sp-recv, "sp_send" => %sp-send, "sp_setsockopt" => %sp-setsockopt }; function "sp_version", output-argument: 1, output-argument: 2, output-argument: 3; function "sp_send", map-argument: { 2 => }; function "sp_recv", map-argument: { 2 => }; end interface; // Function for adding the base address of the repeated slots of a // to an offset and returning the result as a . This is // necessary for passing contents across the FFI. define function buffer-offset (the-buffer :: , data-offset :: ) => (result-offset :: ) u%+(data-offset, primitive-wrap-machine-word (primitive-repeated-slot-as-raw (the-buffer, primitive-repeated-slot-offset(the-buffer)))) end function; define inline function sp-send (socket :: , data :: , flags :: ) => (res :: ) %sp-send(socket, buffer-offset(data, 0), data.size, flags) end; define inline function sp-recv (socket :: , data :: , flags :: ) => (res :: ) %sp-recv(socket, buffer-offset(data, 0), data.size, flags); end; define inline method sp-setsockopt (socket :: , level :: , option :: , value :: ) with-stack-structure (int :: ) pointer-value(int) := value; let setsockopt-result = %sp-setsockopt(socket, level, option, int, size-of()); if (setsockopt-result < 0) // Check error! end; setsockopt-result end; end; define inline method sp-setsockopt (socket :: , level :: , option :: , data :: ) let setsockopt-result = %sp-setsockopt(socket, level, option, as(, data), data.size); if (setsockopt-result < 0) // Check error! end; setsockopt-result end;