>      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  provisionalIavor S. Diatchkithe (positive) error code "a text description of the problem 'Returns the message for an error code. -Catch an exception generated by the binding.    provisionalIavor S. Diatchki 5These are all 14 bit values. h Port types. iPort capabilities. j The different types of clients. m The type of client identifiers. nThe type of sequencer handles. o+Blocking behavior of the sequencer device. p&Throw exceptions instead of blocking. qOperations may block. rRead/,Write permissions for the sequencer device.   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~         &%$#"!  !"#$%&'+*)(()*+,-./01234-./0123456789:6789:;<=<=>?@AB?@ABCDEFGDEFGHIJKLMNIJKLMNOPQRSTPQRSTUVXWWXYZ[\Z[\]^_`a_`abcfeddefghijlkklmnoqppqrstuvwxyz{|}~       provisionalIavor S. Diatchki-Copy the content of one object into another. 9Copy the content of an object to a newly created object. 9Copy the content of an object to a newly created object. -Copy the content of one object into another. -Copy the content of one object into another. 1Allocate an uninitiazlied object. (Not exported) 1Allocate an uninitiazlied object. (Not exported) 9Copy the content of an object to a newly created object. -Copy the content of one object into another. 9Copy the content of an object to a newly created object. 1Allocate an uninitiazlied object. (Not exported) -Copy the content of one object into another. 1Allocate an uninitiazlied object. (Not exported) -Copy the content of one object into another. 9Copy the content of an object to a newly created object. 1Allocate an uninitiazlied object. (Not exported)  1Allocate an uninitiazlied object. (Not exported) 9Copy the content of an object to a newly created object. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs tu!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_``abbcddeffghhijjklmnopqrs tu DCreates a new handle and opens a connection to the kernel sequencer 4 interface. After a client is created successfully,  a * event is broadcast to the announce port.  May throw an exception.  See also:  open_lconf, ,  get_seq_type,  , ,  get_client_id. BClose the sequencer. Closes the sequencer client and releases its 4 resources. After a client is closed, an event with  is F broadcast to announce port. The connection between other clients are ; disconnected. Call this just before exiting your program. 8 NOTE: we could put this in a finalizer for the handle? &Get identifier of a sequencer handle. 4 It is the same identifier specified in the call to . .Change the blocking mode of the given client. E In block mode, the client falls into sleep when it fills the output G pool with events, or when it demands events from an empty input pool. @ memory pool with full events. Clients that are sleeping due to < loack of space in the output pool are woken when a certain - amount of free space becomes available (see set_output_room). +Return the byte size of the output buffer. Resize of the output buffer. - This function clears all output events (see  drop_output). &Return the byte size of input buffer. Resize the input buffer. , This function clears all input events (see  drop_input). Resize the output memory pool. @Specify how much space should become free before waking clients = that are blocked due to a lack of space in the output pool. Reset the output pool. Resize the input memory pool. Reset the input pool. Simple subscription (w/ o exclusive & time conversion). Simple subscription (w/ o exclusive & time conversion). Simple disconnection. Simple disconnection. /Parse the given string into sequencer address. J The client and port are separated by either colon or period, e.g. 128:1. ) The function also accepts client names. $vwxyz{|}~$vwxyz{|}~ +Instance for special casing null pointers. ;Given a bit pattern, yield all bit masks that it contains. I This does *not* attempt to compute a minimal set of bit masks that when G combined yield the bit pattern, instead all contained bit masks are  produced. Integral conversion Floating conversion Obtain C value from Haskell . Obtain Haskell  from C value. $Convert a C enumeration to Haskell. $Convert a Haskell enumeration to C. Q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ provisionalIavor S. DiatchkiDelete the specified queue. 3cdefg3gcfed  provisionalIavor S. Diatchki3Wait until all events of the client are processed. $Get an event from the input buffer. D If the input buffer is empty, then it is filled with data from the ? sequencer queue. If there is no data in the sequencer queue, H then the process is either put to sleep (if the sequencer is operating  in blocking mode), or we throw EAGAIN (if the sequence is operating  in non-blocking mode). We may also throw ENOSPC', which means that the sequencer queue D over-run and some events were lost (this clears the input buffer). 2Returns the number of events in the input buffer. @ If the input buffer is empty and the boolean argument is true, G then try to fill the input buffer with data from the sequencer queue.  See also: . 9Output an event and drain the buffer, if it became full.  Throws exceptions.  See also: , ,  , ,  ,  ,  remove_events -Output an event without draining the buffer.  Throws -EAGAIN if the buffer becomes full.  See also . JOutput an event directly to the sequencer, NOT through the output buffer. 1 If an error occurs, then we throw an exception.  See also . ?Return the size (in bytes) of pending events on output buffer.  See also . *Extract the first event in output buffer.  Throws an exception on error.  See also . )Remove the first event in output buffer.  Throws an exception on error.  See also . "Drain output buffer to sequencer. ? This function drains all pending events on the output buffer. J The function returns immediately after the events are sent to the queues 5 regardless whether the events are processed or not. 6 To get synchronization with the all event processes,  use  after calling this function.  Throws an exception on error.  See also: , .  6Remove events from both the user-space output buffer, ' and the kernel-space sequencer queue.  See also: ,  ,  remove_events.  1Remove events from the user-space output buffer.  See also:  .  5Remove events from both the user-space input buffer, ' and the kernel-space sequencer queue.  See also:  ,  remove_events.  0Remove events from the user-space input buffer.  See also:  .              provisionalIavor S. Diatchki   Create a port - simple version. 7Create a new port, as described by the info structure. Delete the port. @Create a new information area filled with data about a specific  port on our client. >Create a new information area filled with data about an given  port on a given client. 4Get information about the first port on our client. AGet information about the port with the next biggest identifier. D If a matching port is found, then its information is stored in the * given area, otherwise we throw an error. =Set the information for the sequencer port based on the data  in the given information area. )Get the address of the information area. Set the port address. Dbhiz{|}~ Dbz{|i}~h    provisionalIavor S. Diatchki-Get the client identifier for the sequencer.  A convinience function. 'Set the name for the sequencer client.  A convinience function. KCreate a new information area filled with data about the sequencer client. JCreate a new information area filled with data about an arbitrary client. CGet information about the client with the next biggest identifier. ?Set the information for the sequencer client based on the data  in the given information area. jklmvwxymyvwxjlk provisionalIavor S. Diatchki%The address of all subscribed ports. *This is the name that should be passed to  in most cases.  0Make a note whose unspecified fields contain 0. !9Used for volume control: means do not change the valume. "  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !nrstuoqp!YZ[\VXWUOPQRST,-./01234 '+*)(HIJKLMN &%$#"! CDEFG ^_`a ]>?@AB;<=56789: !/ Converts any $# into an . ? This produces better a error message than letting an uncaught  $# propagate to the top. 0'Returns the message for an error code. "#$%&'()*+,-./0#$%&'()*+,-./0""#$%&'$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Q~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRPONMLKJIHGFEDCBA@?>=<;:987654321123456789:;<=>?@ABCDEFGHIJKLMNOPQ1~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ECounts are in samples, not bytes. Multi-channel data is interleaved. 1This expects pad bytes that are needed in memory *in order to satisfy aligment constraints. 6This is only a problem for samples sizes like 24 bit. Same restrictions as for . +++                  ! " #  $ % & ' (  ) * + , - . / 0 1 2 3 4  5 6 7 8 9 9 : ; < = > ? @ A A B C D E F F G H H I J K L L M N O P P Q R S T U V V W X Y Z [ \ ] ^ ] _ ` a b c c d e f g h i j k l m n o p q r s t u v w x y z { | } ~              !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 0 &     [ b   f k l  m  q  r v                                                              ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L  M  N  O  P  Q  R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r st u v wxyz{|}|~||x      !"#$%&'()*+,-./01234565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5IJKJLJMJNJOJPJQJRJSJTUVUWUXUYUZU[\]\^\_\`\a\b\c\defegeheiejklkmknkokpkqkrstuvwxyz{|}~~~~~~~~xxxx~             alsa-0.3Sound.Alsa.SequencerSound.Alsa.Sequencer.PortSound.Alsa.Sequencer.QueueSound.Alsa.Sequencer.ClientSound.Alsa.Sequencer.EventSound.Alsa.ErrorSound.Alsa.Core Sound.AlsaSound.Alsa.Sequencer.ErrorsSound.Alsa.Sequencer.MarshalSound.Alsa.Sequencer.AreaSound.Alsa.Sequencer.SequencerSound.Alsa.C2HSghc-primGHC.BoolbaseSystem.IO.Error AlsaExceptionexception_codeexception_description alsa_catch EventDataEmptyEvConnEvAddrEvCtrlEvNoteEvPortUnsubscribedPortSubscribed PortChangePortExit PortStart ClientChange ClientExit ClientStartUnknownNoneSensingReset TuneRequestKeySignTimeSignQFrameSongSelSongPosRegParam NonRegParam Control14 PitchBend ChanPress PgmChange ControllerKeyPressNoteOffNoteOnANoteEventev_high_priorityev_tagev_queue ev_timestamp ev_sourceev_destev_dataVolume volume_volume volume_lr volume_fr volume_duClustercluster_clusterSample sample_std sample_bank sample_prgCtrl ctrl_channel ctrl_param ctrl_valueNote note_channel note_note note_velocitynote_off_velocity note_durationInstr instr_cluster instr_std instr_bank instr_prg InstrCluster TimeStampRealTimeTickTimeRTrt_secsrt_nanoConnectAddr addr_client addr_portPortQueueTimerType TimerMidiTickTimerMidiClock TimerAlsaQueuePortTypePortCap ClientType KernelClient UserClientClientSndSeq BlockModeNonblockBlockOpenMode open_output open_input open_duplex client_systemclient_subscribersclient_broadcastclient_unknownport_system_timerport_system_announce port_unknowncap_read cap_write cap_sync_readcap_sync_write cap_duplex cap_subs_readcap_subs_write cap_no_exportcaps type_specifictype_midi_generic type_midi_gm type_midi_gs type_midi_xgtype_midi_mt32 type_midi_gm2 type_synthtype_direct_sample type_sample type_hardware type_softwaretype_synthesizer type_porttype_applicationtypes queue_direct QueueTimer QueueTempo QueueStatus QueueInfoPortInfo ClientInfoclient_info_copyclient_info_cloneclient_info_get_nameclient_info_set_name client_info_get_broadcast_filter client_info_set_broadcast_filterclient_info_get_error_bounceclient_info_set_error_bounceclient_info_get_clientclient_info_set_clientclient_info_get_typeclient_info_get_num_portsclient_info_get_event_lostport_info_copyport_info_cloneport_info_get_nameport_info_set_nameport_info_get_port_specifiedport_info_set_port_specifiedport_info_get_timestampingport_info_set_timestampingport_info_get_timestamp_realport_info_set_timestamp_realport_info_get_portport_info_set_portport_info_get_clientport_info_set_clientport_info_get_capabilityport_info_set_capabilityport_info_get_midi_channelsport_info_set_midi_channelsport_info_get_midi_voicesport_info_set_midi_voicesport_info_get_synth_voicesport_info_set_synth_voicesport_info_get_timestamp_queueport_info_set_timestamp_queueport_info_get_read_useport_info_get_write_usequeue_info_copyqueue_info_clonequeue_info_get_namequeue_info_set_namequeue_info_get_lockedqueue_info_set_lockedqueue_info_get_ownerqueue_info_set_ownerqueue_info_get_flagsqueue_info_set_flagsqueue_info_get_queuequeue_status_copyqueue_status_clonequeue_tempo_copyqueue_tempo_clonequeue_tempo_get_queuequeue_tempo_get_tempoqueue_tempo_set_tempoqueue_tempo_get_ppqqueue_tempo_set_ppqqueue_tempo_get_skewqueue_tempo_set_skewqueue_tempo_get_skew_basequeue_tempo_set_skew_basequeue_timer_copyqueue_timer_clonequeue_timer_get_queuequeue_timer_get_typequeue_timer_set_typequeue_timer_get_resolutionqueue_timer_set_resolutionopenclose get_seq_name set_blockingget_output_buffer_sizeset_output_buffer_sizeget_input_buffer_sizeset_input_buffer_sizeset_pool_outputset_pool_output_roomreset_pool_outputset_pool_inputreset_pool_input connect_from connect_todisconnect_from disconnect_to parse_address alloc_queuealloc_named_queue free_queueget_queue_infoset_queue_infoget_queue_temposet_queue_tempoget_queue_statusget_queue_timerset_queue_timersync_output_queue event_inputevent_input_pending event_outputevent_output_bufferevent_output_directevent_output_pendingextract_output remove_output drain_output drop_outputdrop_output_buffer drop_inputdrop_input_buffercreate_simple_port create_port delete_port get_port_infoget_any_port_infoquery_first_portquery_next_port set_port_infoport_info_get_addrport_info_set_addr get_client_idset_client_nameget_client_infoget_any_client_infoquery_first_clientquery_next_clientset_client_infoaddr_subscribersdefault_seq_name simple_note volume_same snd_strerrorexception_location checkResult checkResult_ throwAlsa catchAlsacatchAlsaErrno catchXRunshowAlsaExceptionrethrowAlsaExceptionsstrerrorpcm_sw_params_current'_pcm_sw_params'_pcm_sw_params_free'_pcm_sw_params_malloc'_pcm_hw_params_free'_pcm_hw_params_malloc'_ pcm_writei'_ pcm_readi'_ pcm_sw_params_set_silence_size'_%pcm_sw_params_set_silence_threshold'_pcm_sw_params_set_xfer_align'_pcm_sw_params_set_avail_min'_#pcm_sw_params_set_start_threshold'_pcm_hw_params_get_buffer_time'_$pcm_hw_params_set_buffer_time_near'_pcm_hw_params_set_periods'_$pcm_hw_params_set_period_time_near'_pcm_hw_params_get_period_size'_pcm_hw_params_get_buffer_size'_pcm_hw_params_set_buffer_size'_pcm_hw_params_set_channels'_pcm_hw_params_set_rate'_pcm_hw_params_set_format'_pcm_hw_params_set_access'_pcm_hw_params_any'_pcm_hw_params'_ pcm_drain'_ pcm_drop'_ pcm_start'_ pcm_prepare'_ pcm_close'_ pcm_open'_ PcmFormatPcmFormatIec958SubframePcmFormatFloat64PcmFormatFloat PcmFormatU32 PcmFormatS32 PcmFormatU24 PcmFormatS24 PcmFormatU16 PcmFormatS16 PcmFormatLastPcmFormatU183bePcmFormatU183lePcmFormatS183bePcmFormatS183lePcmFormatU203bePcmFormatU203lePcmFormatS203bePcmFormatS203lePcmFormatU243bePcmFormatU243lePcmFormatS243bePcmFormatS243lePcmFormatSpecial PcmFormatGsm PcmFormatMpegPcmFormatImaAdpcm PcmFormatALawPcmFormatMuLawPcmFormatIec958SubframeBePcmFormatIec958SubframeLePcmFormatFloat64BePcmFormatFloat64LePcmFormatFloatBePcmFormatFloatLePcmFormatU32BePcmFormatU32LePcmFormatS32BePcmFormatS32LePcmFormatU24BePcmFormatU24LePcmFormatS24BePcmFormatS24LePcmFormatU16BePcmFormatU16LePcmFormatS16BePcmFormatS16Le PcmFormatU8 PcmFormatS8PcmFormatUnknown PcmAccess PcmAccessLastPcmAccessRwNoninterleavedPcmAccessRwInterleavedPcmAccessMmapComplexPcmAccessMmapNoninterleavedPcmAccessMmapInterleaved PcmStream PcmStreamLastPcmStreamCapturePcmStreamPlayback PcmSwParams PcmHwParamsPcmpcm_open pcm_close pcm_prepare pcm_startpcm_drop pcm_drain pcm_hw_paramspcm_hw_params_anypcm_hw_params_set_accesspcm_hw_params_set_formatpcm_hw_params_set_ratepcm_hw_params_set_channelspcm_hw_params_set_buffer_sizepcm_hw_params_get_buffer_sizepcm_hw_params_get_period_size"pcm_hw_params_set_period_time_nearpcm_hw_params_set_periods"pcm_hw_params_set_buffer_time_nearpcm_hw_params_get_buffer_time!pcm_sw_params_set_start_thresholdpcm_sw_params_set_avail_minpcm_sw_params_set_xfer_align#pcm_sw_params_set_silence_thresholdpcm_sw_params_set_silence_size pcm_readi pcm_writeipcm_hw_params_mallocpcm_hw_params_freepcm_sw_params_mallocpcm_sw_params_free pcm_sw_paramspcm_sw_params_current orderingToInt intToOrdering peekOrdering withOrdering SoundSink soundSinkFmt soundSinkOpensoundSinkClosesoundSinkWritesoundSinkStart soundSinkStop SoundSourcesoundSourceFmtsoundSourceOpensoundSourceClosesoundSourceStartsoundSourceStopsoundSourceReadSoundBufferTime bufferTime periodTimeTimeSoundFmt sampleFreq SampleFreq SampleFmtsampleFmtToPcmFormatwithSoundSourcewithSoundSourceRunning withSoundSinkwithSoundSinkRunning soundFmtMIMEaudioBytesPerSampleaudioBytesPerFramesoundSourceBytesPerFramesoundSinkBytesPerFrame copySoundalsaSoundSource alsaSoundSinkalsaSoundSourceTimealsaSoundSinkTimefileSoundSource fileSoundSink check_error check_error' check_error_ conn_source conn_dest unPortType unPortCapSndSeq_ exp_OpenMode exp_BlockMode exp_Client imp_Clientimp_ClientType imp_Queue exp_Queueexp_QueueTimerTypeimp_QueueTimerTypeexp_Portimp_Portexp_Addrpeek_timestamppoke_timestamp alloca_evpoke_event_datapeek_event_data exp_note_ev exp_ctrl_ev exp_empty_ev exp_addr_ev exp_conn_ev peek_note_ev peek_ctrl_ev peek_addr_ev peek_conn_ev peek_empty_ev"snd_seq_queue_timer_get_resolutionsnd_seq_queue_timer_get_queuesnd_seq_queue_timer_mallocsnd_seq_queue_tempo_get_skewsnd_seq_queue_tempo_get_ppqsnd_seq_queue_status_copysnd_seq_queue_info_get_locked!snd_seq_port_info_set_midi_voicessnd_seq_port_info_get_client$snd_seq_port_info_get_timestamp_realsnd_seq_port_info_get_name!snd_seq_client_info_get_num_portssnd_seq_client_info_get_namewith_queue_tempoqueue_tempo_malloc"snd_seq_queue_timer_set_resolutionsnd_seq_queue_timer_set_typesnd_seq_queue_timer_get_typesnd_seq_queue_timer_copysnd_seq_queue_timer_free!snd_seq_queue_tempo_set_skew_base!snd_seq_queue_tempo_get_skew_basesnd_seq_queue_tempo_set_skewsnd_seq_queue_tempo_set_ppqsnd_seq_queue_tempo_set_temposnd_seq_queue_tempo_get_temposnd_seq_queue_tempo_get_queuesnd_seq_queue_tempo_copysnd_seq_queue_tempo_freesnd_seq_queue_tempo_mallocsnd_seq_queue_status_freesnd_seq_queue_status_mallocsnd_seq_queue_info_get_queuesnd_seq_queue_info_set_flagssnd_seq_queue_info_get_flagssnd_seq_queue_info_set_ownersnd_seq_queue_info_get_ownersnd_seq_queue_info_set_lockedsnd_seq_queue_info_set_namesnd_seq_queue_info_get_namesnd_seq_queue_info_copysnd_seq_queue_info_freesnd_seq_queue_info_mallocsnd_seq_port_info_get_write_usesnd_seq_port_info_get_read_use%snd_seq_port_info_set_timestamp_queue%snd_seq_port_info_get_timestamp_queue"snd_seq_port_info_set_synth_voices"snd_seq_port_info_get_synth_voices!snd_seq_port_info_get_midi_voices#snd_seq_port_info_set_midi_channels#snd_seq_port_info_get_midi_channels snd_seq_port_info_set_capability snd_seq_port_info_get_capabilitysnd_seq_port_info_set_clientsnd_seq_port_info_set_portsnd_seq_port_info_get_port$snd_seq_port_info_set_timestamp_real"snd_seq_port_info_set_timestamping"snd_seq_port_info_get_timestamping$snd_seq_port_info_set_port_specified$snd_seq_port_info_get_port_specifiedsnd_seq_port_info_set_namesnd_seq_port_info_copysnd_seq_port_info_freesnd_seq_port_info_malloc"snd_seq_client_info_get_event_lostsnd_seq_client_info_get_typesnd_seq_client_info_set_clientsnd_seq_client_info_get_client$snd_seq_client_info_set_error_bounce$snd_seq_client_info_get_error_bounce(snd_seq_client_info_set_broadcast_filter(snd_seq_client_info_get_broadcast_filtersnd_seq_client_info_set_namesnd_seq_client_info_copysnd_seq_client_info_freesnd_seq_client_info_malloc QueueTimer_ QueueTempo_ QueueStatus_ QueueInfo_ PortInfo_ ClientInfo_with_client_infoclient_info_mallocwith_port_infoport_info_mallocwith_queue_infoqueue_info_mallocwith_queue_statusqueue_status_mallocwith_queue_timerqueue_timer_mallocsnd_seq_parse_addresssnd_seq_disconnect_tosnd_seq_disconnect_fromsnd_seq_connect_tosnd_seq_connect_fromsnd_seq_reset_pool_inputsnd_seq_set_client_pool_inputsnd_seq_reset_pool_output#snd_seq_set_client_pool_output_roomsnd_seq_set_client_pool_outputsnd_seq_set_input_buffer_sizesnd_seq_get_input_buffer_sizesnd_seq_set_output_buffer_sizesnd_seq_get_output_buffer_sizesnd_seq_nonblock snd_seq_name snd_seq_close snd_seq_open nothingIfNullextractBitMaskscIntConv cFloatConv cFromBoolBoolcToBoolcToEnum cFromEnum GHC.Stable newStablePtr GHC.TypesIntGHC.IntInt8Int16Int32Int64 StablePtrGHC.WordWord8Word16Word32Word64GHC.PtrPtrFunPtrGHC.ForeignPtr ForeignPtrForeign.Marshal.PoolpooledNewArray0pooledNewArray pooledNewpooledReallocArray0pooledReallocArraypooledMallocArray0pooledMallocArraypooledReallocBytes pooledReallocpooledMallocBytes pooledMallocwithPoolfreePoolnewPoolPoolForeign.C.ErrorerrnoToIOErrorthrowErrnoPathIfMinus1_throwErrnoPathIfMinus1throwErrnoPathIfNullthrowErrnoPathIf_throwErrnoPathIfthrowErrnoPaththrowErrnoIfNullRetryMayBlockthrowErrnoIfNullRetrythrowErrnoIfNull throwErrnoIfMinus1RetryMayBlock_throwErrnoIfMinus1RetryMayBlockthrowErrnoIfMinus1Retry_throwErrnoIfMinus1RetrythrowErrnoIfMinus1_throwErrnoIfMinus1throwErrnoIfRetryMayBlock_throwErrnoIfRetry_throwErrnoIfRetryMayBlockthrowErrnoIfRetry throwErrnoIf_ throwErrnoIf throwErrno resetErrnogetErrno isValidErrnoeXDEV eWOULDBLOCKeUSERSeTXTBSY eTOOMANYREFS eTIMEDOUTeTIMEeSTALEeSRMNTeSRCHeSPIPEeSOCKTNOSUPPORT eSHUTDOWNeRREMOTE eRPCMISMATCHeROFSeREMOTEeREMCHGeRANGE ePROTOTYPEePROTONOSUPPORTePROTO ePROGUNAVAIL ePROGMISMATCH ePROCUNAVAILePROCLIMePIPE ePFNOSUPPORTePERM eOPNOTSUPPeNXIOeNOTTYeNOTSOCK eNOTEMPTYeNOTDIReNOTCONNeNOTBLKeNOSYSeNOSTReNOSReNOSPC eNOPROTOOPTeNONETeNOMSGeNOMEMeNOLINKeNOLCKeNOEXECeNOENTeNODEVeNODATAeNOBUFSeNFILE eNETUNREACH eNETRESETeNETDOWN eNAMETOOLONG eMULTIHOPeMSGSIZEeMLINKeMFILEeLOOPeISDIReISCONNeIOeINVALeINTR eINPROGRESSeILSEQeIDRM eHOSTUNREACH eHOSTDOWNeFTYPEeFBIGeFAULTeEXISTeDQUOTeDOMeDIRTY eDESTADDRREQeDEADLK eCONNRESET eCONNREFUSED eCONNABORTEDeCOMMeCHILDeBUSYeBADRPCeBADMSGeBADFeALREADYeAGAIN eAFNOSUPPORTeADV eADDRNOTAVAIL eADDRINUSEeACCESe2BIGeOKErrnoForeign.C.StringwithCWStringLen withCWStringnewCWStringLen newCWStringpeekCWStringLen peekCWStringwithCAStringLen withCAStringnewCAStringLen newCAStringpeekCAStringLen peekCAStringcastCharToCCharcastCCharToCharcharIsRepresentablewithCStringLen withCString newCStringLen newCStringpeekCStringLen peekCStringCString CStringLenCWString CWStringLenForeign.Marshal.Array advancePtr lengthArray0 moveArray copyArray withArrayLen0 withArray0 withArrayLen withArray newArray0newArray pokeArray0 pokeArray peekArray0 peekArray reallocArray0 reallocArray allocaArray0 allocaArray mallocArray0 mallocArrayForeign.Marshal.Utils moveBytes copyByteswithMany maybePeek maybeWithmaybeNewtoBoolfromBoolwithnewForeign.Marshal.Errorvoid throwIfNull throwIfNeg_ throwIfNegthrowIf_throwIfForeign.Marshal.Allocfree reallocBytesrealloc allocaBytesalloca mallocBytesmalloc finalizerFreeForeign.ForeignPtrmallocForeignPtrArray0mallocForeignPtrArraynewForeignPtrEnvwithForeignPtr newForeignPtr Foreign.Ptr intPtrToPtr ptrToIntPtr wordPtrToPtr ptrToWordPtrWordPtrIntPtrfreeHaskellFunPtrfinalizeForeignPtrcastForeignPtrunsafeForeignPtrToPtrtouchForeignPtrnewForeignPtr_addForeignPtrFinalizerEnvaddForeignPtrFinalizermallocForeignPtrBytesmallocForeignPtr FinalizerPtrFinalizerEnvPtrForeign.Storablepokepeek pokeByteOff peekByteOff pokeElemOff peekElemOff alignmentsizeOfcastPtrToStablePtrcastStablePtrToPtrdeRefStablePtr freeStablePtrcastPtrToFunPtrcastFunPtrToPtr castFunPtr nullFunPtrminusPtralignPtrplusPtrcastPtrnullPtr GHC.IOBaseunsafePerformIOForeign.C.TypesCCharCSCharCUCharCShortCUShortCIntCUIntCLongCULongCLLongCULLongCFloatCDoubleCLDoubleCPtrdiffCSizeCWchar CSigAtomicCClockCTimeCFileCFposCJmpBufCIntPtrCUIntPtrCIntMaxCUIntMaxStorable Data.BitsrotateRrotateLshiftRshiftLisSignedbitSizetestBit complementBitclearBitsetBitbitrotateshift complementxor.|..&.BitswithCStringLenIntConvpeekCStringLenIntConv withIntConv withFloatConv peekIntConv peekFloatConvwithBoolpeekBoolwithEnumpeekEnum nothingIfcombineBitMaskscontainsBitMasksnd_seq_event_inputsnd_seq_event_outputIOErrorfileRead fileWrite