shithub: irc.myr

ref: 8d6c1b01c6e17894cb1054d954d18272e71e5aae
dir: /types.myr/

View raw version
use std
use termdraw

pkg =
	type irc = struct
		srv	: server#[:]
		logdir	: byte[:]
		self	: chan#
		focus	: std.size
		term	: termdraw.term#
		user	: byte[:]
		nick	: byte[:]

		/*should probably be per-server, but.. eh. */
		onconn	: byte[:][:]

		/* input editing */
		off	: std.size
		cmd	: char[:]
		yank	: char[:]

		chandirty	: bool
		cmddirty	: bool
	;;

	type server = struct
		id	: std.size
		fd	: std.fd
		user	: byte[:]
		nick	: byte[:]
		ds	: byte[:]
		buf	: byte[512]
		nbuf	: std.size
		chan	: chan#[:]
		focus	: std.size
		death	: std.time
		ping	: std.time
	;;

	type chan = struct
		log	: std.fd
		hist	: (std.time, hist)[:]
		histoff	: std.size	/* scrolling */
		name	: byte[:]
		topic	: byte[:]
		users	: byte[:][:]
		stale	: bool
		flagged	: bool
		gutter	: int
		scroll	: int
	;;

	type hist = union
		`Msg	(byte[:], byte[:])
		`Act	(byte[:], byte[:])
		`Join	byte[:]
		`Part	byte[:]
		`Status	byte[:]
	;;
;;