source: EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-io/include/mruby/ext/io.h@ 439

Last change on this file since 439 was 439, checked in by coas-nagasima, 4 years ago

mrubyを2.1.1に更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 2.2 KB
Line 
1/*
2** io.h - IO class
3*/
4
5#ifndef MRUBY_IO_H
6#define MRUBY_IO_H
7
8#include <mruby.h>
9
10#ifdef MRB_DISABLE_STDIO
11# error IO and File conflicts 'MRB_DISABLE_STDIO' configuration in your 'build_config.rb'
12#endif
13
14#if defined(__cplusplus)
15extern "C" {
16#endif
17
18#if defined(MRB_WITHOUT_IO_PREAD_PWRITE)
19# undef MRB_WITH_IO_PREAD_PWRITE
20#elif !defined(MRB_WITH_IO_PREAD_PWRITE)
21# if defined(__unix__)
22# define MRB_WITH_IO_PREAD_PWRITE
23# endif
24#endif
25
26struct mrb_io {
27 int fd; /* file descriptor, or -1 */
28 int fd2; /* file descriptor to write if it's different from fd, or -1 */
29 int pid; /* child's pid (for pipes) */
30 unsigned int readable:1,
31 writable:1,
32 sync:1,
33 is_socket:1;
34};
35
36#define MRB_O_RDONLY 0x0000
37#define MRB_O_WRONLY 0x0001
38#define MRB_O_RDWR 0x0002
39#define MRB_O_ACCMODE (MRB_O_RDONLY | MRB_O_WRONLY | MRB_O_RDWR)
40#define MRB_O_NONBLOCK 0x0004
41#define MRB_O_APPEND 0x0008
42#define MRB_O_SYNC 0x0010
43#define MRB_O_NOFOLLOW 0x0020
44#define MRB_O_CREAT 0x0040
45#define MRB_O_TRUNC 0x0080
46#define MRB_O_EXCL 0x0100
47#define MRB_O_NOCTTY 0x0200
48#define MRB_O_DIRECT 0x0400
49#define MRB_O_BINARY 0x0800
50#define MRB_O_SHARE_DELETE 0x1000
51#define MRB_O_TMPFILE 0x2000
52#define MRB_O_NOATIME 0x4000
53#define MRB_O_DSYNC 0x00008000 /* Ignored with MRB_INT16 and MRB_WITHOUT_FLOAT */
54#define MRB_O_RSYNC 0x00010000 /* Ignored with MRB_INT16 and MRB_WITHOUT_FLOAT */
55
56#define MRB_O_RDONLY_P(f) ((mrb_bool)(((f) & MRB_O_ACCMODE) == MRB_O_RDONLY))
57#define MRB_O_WRONLY_P(f) ((mrb_bool)(((f) & MRB_O_ACCMODE) == MRB_O_WRONLY))
58#define MRB_O_RDWR_P(f) ((mrb_bool)(((f) & MRB_O_ACCMODE) == MRB_O_RDWR))
59#define MRB_O_READABLE_P(f) ((mrb_bool)((((f) & MRB_O_ACCMODE) | 2) == 2))
60#define MRB_O_WRITABLE_P(f) ((mrb_bool)(((((f) & MRB_O_ACCMODE) + 1) & 2) == 2))
61
62#define E_IO_ERROR (mrb_class_get(mrb, "IOError"))
63#define E_EOF_ERROR (mrb_class_get(mrb, "EOFError"))
64
65int mrb_io_fileno(mrb_state *mrb, mrb_value io);
66
67#if defined(__cplusplus)
68} /* extern "C" { */
69#endif
70#endif /* MRUBY_IO_H */
Note: See TracBrowser for help on using the repository browser.