mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-03 20:42:48 -05:00
Turn Backend into a sensible classoid.
Nearly every part of the code that ever handles a full backend structure has historically done it using a pair of pointer variables, one pointing at a constant struct full of function pointers, and the other pointing to a 'void *' state object that's passed to each of those. While I'm modernising the rest of the code, this seems like a good time to turn that into the same more or less type-safe and less cumbersome system as I'm using for other parts of the code, such as Socket, Plug, BinaryPacketProtocol and so forth: the Backend structure contains a vtable pointer, and a system of macro wrappers handles dispatching through that vtable.
This commit is contained in:
@ -67,7 +67,7 @@ struct FontSpec *fontspec_new(const char *name);
|
||||
|
||||
typedef void *Context; /* FIXME: probably needs changing */
|
||||
|
||||
extern Backend pty_backend;
|
||||
extern const struct Backend_vtable pty_backend;
|
||||
|
||||
#define BROKEN_PIPE_ERROR_CODE EPIPE /* used in sshshare.c */
|
||||
|
||||
@ -178,6 +178,8 @@ void window_setup_error(const char *errmsg);
|
||||
GtkWidget *make_gtk_toplevel_window(void *frontend);
|
||||
#endif
|
||||
|
||||
const struct Backend_vtable *select_backend(Conf *conf);
|
||||
|
||||
/* Defined in gtkcomm.c */
|
||||
void gtkcomm_setup(void);
|
||||
|
||||
@ -324,9 +326,9 @@ void *sk_getxdmdata(Socket sock, int *lenp);
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* Exports from winser.c.
|
||||
* Exports from uxser.c.
|
||||
*/
|
||||
extern Backend serial_backend;
|
||||
extern const struct Backend_vtable serial_backend;
|
||||
|
||||
/*
|
||||
* uxpeer.c, wrapping getsockopt(SO_PEERCRED).
|
||||
|
Reference in New Issue
Block a user