#ifndef _MODULE_IO_Select_
#define _MODULE_IO_Select_

#include <__typemap.h>
#include <RT0.oh>
#include <Object.oh>
#include <IO.oh>
#include <IO/StdChannels.oh>
#include <RT0.oh>
#include <Object.oh>
#include <Exception.oh>
typedef struct IO_Select__SelectionKeyDesc *IO_Select__SelectionKey;
typedef struct IO_Select__SelectionKeyDesc {
  OOC_INT32 fd;
  OOC_UINT32 interestOps;
  Object__Object attachment;
  IO__Selector selector;
  IO__Channel channel;
  IO__SelectionKey nextKey;
  OOC_CHAR8 cancel;
} IO_Select__SelectionKeyDesc;
typedef struct IO_Select__SelectorDesc *IO_Select__Selector;
typedef struct IO_Select__SelectorDesc {
  IO__SelectionKey keys;
  OOC_CHAR8 cancel;
  OOC_CHAR8 __pad5;
  OOC_CHAR8 __pad6;
  OOC_CHAR8 __pad7;
  OOC_PTR sets;
  IO_Select__SelectionKey current;
} IO_Select__SelectorDesc;
extern void IO_Select__Init(IO_Select__Selector s);
extern IO_Select__Selector IO_Select__Open(void);
extern IO__SelectionKey IO_Select__SelectorDesc_AddSelectionKey(IO_Select__Selector s, OOC_INT32 fd, IO__Channel channel, OOC_UINT32 ops, Object__Object attachment);
#define _TBN_IO_Select__SelectorDesc_AddSelectionKey 3
typedef IO__SelectionKey (*_TBP_IO_Select__SelectorDesc_AddSelectionKey)(IO_Select__Selector s, OOC_INT32 fd, IO__Channel channel, OOC_UINT32 ops, Object__Object attachment);
extern void IO_Select__SelectorDesc_RemoveSelectionKey(IO_Select__Selector s, IO__SelectionKey k);
#define _TBN_IO_Select__SelectorDesc_RemoveSelectionKey 7
typedef void (*_TBP_IO_Select__SelectorDesc_RemoveSelectionKey)(IO_Select__Selector s, IO__SelectionKey k);
extern void IO_Select__SelectorDesc_Close(IO_Select__Selector s);
#define _TBN_IO_Select__SelectorDesc_Close 4
typedef void (*_TBP_IO_Select__SelectorDesc_Close)(IO_Select__Selector s);
extern OOC_INT32 IO_Select__SelectorDesc_Select(IO_Select__Selector s, OOC_INT32 sec, OOC_INT32 usec);
#define _TBN_IO_Select__SelectorDesc_Select 8
typedef OOC_INT32 (*_TBP_IO_Select__SelectorDesc_Select)(IO_Select__Selector s, OOC_INT32 sec, OOC_INT32 usec);
extern IO_Select__SelectionKey IO_Select__SelectorDesc_NextKey(IO_Select__Selector s);
#define _TBN_IO_Select__SelectorDesc_NextKey 5
typedef IO_Select__SelectionKey (*_TBP_IO_Select__SelectorDesc_NextKey)(IO_Select__Selector s);
extern void OOC_IO_Select_init(void);
extern void OOC_IO_Select_init0(void);

/* run-time meta data */
extern RT0__StructDesc _td_IO_Select__SelectionKey;
extern RT0__StructDesc _td_IO_Select__SelectionKeyDesc;
extern RT0__StructDesc _td_IO_Select__Selector;
extern RT0__StructDesc _td_IO_Select__SelectorDesc;
#endif /* _MODULE_IO_Select_ */

/* --- */
