text: 
  #if defined(Q3CLIENT) || defined(Q3SERVER)
  struct sfx_s;
  struct server_static_s;
  struct server_s;
  struct usercmd_s;
  struct q3gamecode_s
  {
  	struct
  	{
  		void (*SendAuthPacket)(struct ftenet_connections_s *socket, netadr_t *gameserver);
  		void (*SendConnectPacket)(struct ftenet_connections_s *socket, netadr_t *to, int challenge, int qport, infobuf_t *userinfo);
  		void (*Established)(void);
  		void (*VARGS SendClientCommand)(const char *fmt, ...) LIKEPRINTF(1);
  		void (*SendCmd)(struct ftenet_connections_s *socket, struct usercmd_s *cmd, unsigned int movesequence, double gametime);
  		int (*ParseServerMessage) (sizebuf_t *msg);
  		void (*Disconnect) (struct ftenet_connections_s *socket);	//disconnects from the server, killing all connection+cgame state.
  	} cl;
  
  	struct
  	{
  		void			(*VideoRestarted)		(void);
  		int				(*Redraw)				(double time);
  		qboolean		(*ConsoleCommand)		(void);
  		qboolean		(*KeyPressed)			(int key, int unicode, int down);
  		unsigned int	(*GatherLoopingSounds)	(vec3_t *positions, unsigned int *entnums, struct sfx_s **sounds, unsigned int max);
  	} cg;
  
  	struct
  	{
  		qboolean (*IsRunning)(void);
  		qboolean (*ConsoleCommand)(void);
  		void (*Start) (void);
  		qboolean (*OpenMenu)(void);
  		void (*Reset)(void);
  	} ui;
  
  //server stuff
  	struct
  	{
  		void		(*ShutdownGame)				(qboolean restart);
  		qboolean	(*InitGame)					(struct server_static_s *server_state_static, struct server_s *server_state, qboolean restart);
  		qboolean	(*ConsoleCommand)			(void);
  		qboolean	(*PrefixedConsoleCommand)	(void);
  		qboolean	(*HandleClient)				(netadr_t *from, sizebuf_t *msg);
  		void		(*DirectConnect)			(netadr_t *from, sizebuf_t *msg);
  		void		(*NewMapConnects)			(void);
  		void		(*DropClient)				(struct client_s *cl);
  		void		(*RunFrame)					(void);
  		void		(*SendMessage)				(struct client_s  *client);
  		qboolean	(*RestartGamecode)			(void);
  		void		(*ServerinfoChanged)		(const char *key);
  	} sv;
  };
  
  extern struct q3gamecode_s *q3;
  #endif
  