// D import file generated from '../../../../libphobos/libdruntime/core/sys/posix/termios.d'
module core.sys.posix.termios;
private import core.sys.posix.config;

public import core.sys.posix.sys.types;

version (Posix)
{
	extern (C) 
	{
		version (linux)
		{
			alias ubyte cc_t;
			alias uint speed_t;
			alias uint tcflag_t;
			enum NCCS = 32;
			struct termios
			{
				tcflag_t c_iflag;
				tcflag_t c_oflag;
				tcflag_t c_cflag;
				tcflag_t c_lflag;
				cc_t c_line;
				cc_t[NCCS] c_cc;
			}
			struct termios2
			{
				tcflag_t c_iflag;
				tcflag_t c_oflag;
				tcflag_t c_cflag;
				tcflag_t c_lflag;
				cc_t c_line;
				cc_t[NCCS] c_cc;
				speed_t c_ispeed;
				speed_t c_ospeed;
			}
			struct winsize
			{
				ushort ws_row;
				ushort ws_col;
				ushort ws_xpixel;
				ushort ws_ypixel;
			}
			enum NCC = 8;
			struct termio
			{
				ushort c_iflag;
				ushort c_oflag;
				ushort c_cflag;
				ushort c_lflag;
				ubyte c_line;
				ubyte[NCC] c_cc;
			}
			enum VEOF = 4;
			enum VEOL = 11;
			enum VERASE = 2;
			enum VINTR = 0;
			enum VKILL = 3;
			enum VMIN = 6;
			enum VQUIT = 1;
			enum VSTART = 8;
			enum VSTOP = 9;
			enum VSUSP = 10;
			enum VTIME = 5;
			enum BRKINT = 2;
			enum ICRNL = 256;
			enum IGNBRK = 1;
			enum IGNCR = 128;
			enum IGNPAR = 4;
			enum INLCR = 64;
			enum INPCK = 16;
			enum ISTRIP = 32;
			enum IXOFF = 4096;
			enum IXON = 1024;
			enum PARMRK = 8;
			enum OPOST = 1;
			enum B0 = 0;
			enum B50 = 1;
			enum B75 = 2;
			enum B110 = 3;
			enum B134 = 4;
			enum B150 = 5;
			enum B200 = 6;
			enum B300 = 7;
			enum B600 = 8;
			enum B1200 = 9;
			enum B1800 = 10;
			enum B2400 = 11;
			enum B4800 = 12;
			enum B9600 = 13;
			enum B19200 = 14;
			enum B38400 = 15;
			enum CSIZE = 48;
			enum CS5 = 0;
			enum CS6 = 16;
			enum CS7 = 32;
			enum CS8 = 48;
			enum CSTOPB = 64;
			enum CREAD = 128;
			enum PARENB = 256;
			enum PARODD = 512;
			enum HUPCL = 1024;
			enum CLOCAL = 2048;
			enum ECHO = 8;
			enum ECHOE = 16;
			enum ECHOK = 32;
			enum ECHONL = 64;
			enum ICANON = 2;
			enum IEXTEN = 32768;
			enum ISIG = 1;
			enum NOFLSH = 128;
			enum TOSTOP = 256;
			enum TCSANOW = 0;
			enum TCSADRAIN = 1;
			enum TCSAFLUSH = 2;
			enum TCIFLUSH = 0;
			enum TCOFLUSH = 1;
			enum TCIOFLUSH = 2;
			enum TCIOFF = 2;
			enum TCION = 3;
			enum TCOOFF = 0;
			enum TCOON = 1;
			speed_t cfgetispeed(in termios*);
			speed_t cfgetospeed(in termios*);
			int cfsetispeed(termios*, speed_t);
			int cfsetospeed(termios*, speed_t);
			int tcdrain(int);
			int tcflow(int, int);
			int tcflush(int, int);
			int tcgetattr(int, termios*);
			int tcsendbreak(int, int);
			int tcsetattr(int, int, in termios*);
		}
		else
		{
			version (OSX)
			{
				alias ubyte cc_t;
				alias c_ulong speed_t;
				alias c_ulong tcflag_t;
				enum NCCS = 20;
				struct termios
				{
					tcflag_t c_iflag;
					tcflag_t c_oflag;
					tcflag_t c_cflag;
					tcflag_t c_lflag;
					cc_t[NCCS] c_cc;
					speed_t c_ispeed;
					speed_t c_ospeed;
				}
				enum VEOF = 0;
				enum VEOL = 1;
				enum VERASE = 3;
				enum VINTR = 8;
				enum VKILL = 5;
				enum VMIN = 16;
				enum VQUIT = 9;
				enum VSTART = 12;
				enum VSTOP = 13;
				enum VSUSP = 10;
				enum VTIME = 17;
				enum BRKINT = 2;
				enum ICRNL = 256;
				enum IGNBRK = 1;
				enum IGNCR = 128;
				enum IGNPAR = 4;
				enum INLCR = 64;
				enum INPCK = 16;
				enum ISTRIP = 32;
				enum IXOFF = 1024;
				enum IXON = 512;
				enum PARMRK = 8;
				enum OPOST = 1;
				enum B0 = 0;
				enum B50 = 50;
				enum B75 = 75;
				enum B110 = 110;
				enum B134 = 134;
				enum B150 = 150;
				enum B200 = 200;
				enum B300 = 300;
				enum B600 = 600;
				enum B1200 = 1200;
				enum B1800 = 1800;
				enum B2400 = 2400;
				enum B4800 = 4800;
				enum B9600 = 9600;
				enum B19200 = 19200;
				enum B38400 = 38400;
				enum CSIZE = 768;
				enum CS5 = 0;
				enum CS6 = 256;
				enum CS7 = 512;
				enum CS8 = 768;
				enum CSTOPB = 1024;
				enum CREAD = 2048;
				enum PARENB = 4096;
				enum PARODD = 8192;
				enum HUPCL = 16384;
				enum CLOCAL = 32768;
				enum ECHO = 8;
				enum ECHOE = 2;
				enum ECHOK = 4;
				enum ECHONL = 16;
				enum ICANON = 256;
				enum IEXTEN = 1024;
				enum ISIG = 128;
				enum NOFLSH = 2147483648u;
				enum TOSTOP = 4194304;
				enum TCSANOW = 0;
				enum TCSADRAIN = 1;
				enum TCSAFLUSH = 2;
				enum TCIFLUSH = 1;
				enum TCOFLUSH = 2;
				enum TCIOFLUSH = 3;
				enum TCIOFF = 3;
				enum TCION = 4;
				enum TCOOFF = 1;
				enum TCOON = 2;
				speed_t cfgetispeed(in termios*);
				speed_t cfgetospeed(in termios*);
				int cfsetispeed(termios*, speed_t);
				int cfsetospeed(termios*, speed_t);
				int tcdrain(int);
				int tcflow(int, int);
				int tcflush(int, int);
				int tcgetattr(int, termios*);
				int tcsendbreak(int, int);
				int tcsetattr(int, int, in termios*);
			}
			else
			{
				version (FreeBSD)
				{
					alias ubyte cc_t;
					alias uint speed_t;
					alias uint tcflag_t;
					enum NCCS = 20;
					struct termios
					{
						tcflag_t c_iflag;
						tcflag_t c_oflag;
						tcflag_t c_cflag;
						tcflag_t c_lflag;
						cc_t[NCCS] c_cc;
						speed_t c_ispeed;
						speed_t c_ospeed;
					}
					enum VEOF = 0;
					enum VEOL = 1;
					enum VERASE = 3;
					enum VINTR = 8;
					enum VKILL = 5;
					enum VMIN = 16;
					enum VQUIT = 9;
					enum VSTART = 12;
					enum VSTOP = 13;
					enum VSUSP = 10;
					enum VTIME = 17;
					enum BRKINT = 2;
					enum ICRNL = 256;
					enum IGNBRK = 1;
					enum IGNCR = 128;
					enum IGNPAR = 4;
					enum INLCR = 64;
					enum INPCK = 16;
					enum ISTRIP = 32;
					enum IXOFF = 1024;
					enum IXON = 512;
					enum PARMRK = 8;
					enum OPOST = 1;
					enum B0 = 0;
					enum B50 = 50;
					enum B75 = 75;
					enum B110 = 110;
					enum B134 = 134;
					enum B150 = 150;
					enum B200 = 200;
					enum B300 = 300;
					enum B600 = 600;
					enum B1200 = 1200;
					enum B1800 = 1800;
					enum B2400 = 2400;
					enum B4800 = 4800;
					enum B9600 = 9600;
					enum B19200 = 19200;
					enum B38400 = 38400;
					enum CSIZE = 768;
					enum CS5 = 0;
					enum CS6 = 256;
					enum CS7 = 512;
					enum CS8 = 768;
					enum CSTOPB = 1024;
					enum CREAD = 2048;
					enum PARENB = 4096;
					enum PARODD = 8192;
					enum HUPCL = 16384;
					enum CLOCAL = 32768;
					enum ECHO = 8;
					enum ECHOE = 2;
					enum ECHOK = 4;
					enum ECHONL = 16;
					enum ICANON = 256;
					enum IEXTEN = 1024;
					enum ISIG = 128;
					enum NOFLSH = 2147483648u;
					enum TOSTOP = 4194304;
					enum TCSANOW = 0;
					enum TCSADRAIN = 1;
					enum TCSAFLUSH = 2;
					enum TCIFLUSH = 1;
					enum TCOFLUSH = 2;
					enum TCIOFLUSH = 3;
					enum TCIOFF = 3;
					enum TCION = 4;
					enum TCOOFF = 1;
					enum TCOON = 2;
					speed_t cfgetispeed(in termios*);
					speed_t cfgetospeed(in termios*);
					int cfsetispeed(termios*, speed_t);
					int cfsetospeed(termios*, speed_t);
					int tcdrain(int);
					int tcflow(int, int);
					int tcflush(int, int);
					int tcgetattr(int, termios*);
					int tcsendbreak(int, int);
					int tcsetattr(int, int, in termios*);
				}
			}
		}
		version (linux)
		{
			enum IXANY = 2048;
			enum ONLCR = 4;
			enum OCRNL = 8;
			enum ONOCR = 16;
			enum ONLRET = 32;
			enum OFILL = 64;
			enum NLDLY = 256;
			enum NL0 = 0;
			enum NL1 = 256;
			enum CRDLY = 1536;
			enum CR0 = 0;
			enum CR1 = 512;
			enum CR2 = 1024;
			enum CR3 = 1536;
			enum TABDLY = 6144;
			enum TAB0 = 0;
			enum TAB1 = 2048;
			enum TAB2 = 4096;
			enum TAB3 = 6144;
			enum BSDLY = 8192;
			enum BS0 = 0;
			enum BS1 = 8192;
			enum VTDLY = 16384;
			enum VT0 = 0;
			enum VT1 = 16384;
			enum FFDLY = 32768;
			enum FF0 = 0;
			enum FF1 = 32768;
			pid_t tcgetsid(int);
		}
		else
		{
			version (OSX)
			{
				enum IXANY = 2048;
				enum ONLCR = 2;
				enum OCRNL = 16;
				enum ONOCR = 32;
				enum ONLRET = 64;
				enum OFILL = 128;
				enum NLDLY = 768;
				enum NL0 = 0;
				enum NL1 = 256;
				enum CRDLY = 12288;
				enum CR0 = 0;
				enum CR1 = 4096;
				enum CR2 = 8192;
				enum CR3 = 12288;
				enum TABDLY = 3076;
				enum TAB0 = 0;
				enum TAB1 = 1024;
				enum TAB2 = 2048;
				enum TAB3 = 4;
				enum BSDLY = 32768;
				enum BS0 = 0;
				enum BS1 = 32768;
				enum VTDLY = 65536;
				enum VT0 = 0;
				enum VT1 = 65536;
				enum FFDLY = 16384;
				enum FF0 = 0;
				enum FF1 = 16384;
				pid_t tcgetsid(int);
			}
			else
			{
				version (FreeBSD)
				{
					enum IXANY = 2048;
					enum ONLCR = 2;
					enum OCRNL = 16;
					enum ONOCR = 32;
					enum ONLRET = 64;
					enum TABDLY = 4;
					enum TAB0 = 0;
					enum TAB3 = 4;
					pid_t tcgetsid(int);
				}
			}
		}
	}
}
