Blame src/LYStructs.h

Packit f574b8
/*
Packit f574b8
 * $LynxId: LYStructs.h,v 1.31 2013/10/03 08:56:47 tom Exp $
Packit f574b8
 */
Packit f574b8
#ifndef LYSTRUCTS_H
Packit f574b8
#define LYSTRUCTS_H
Packit f574b8
Packit f574b8
#ifndef HTANCHOR_H
Packit f574b8
#include <HTAnchor.h>
Packit f574b8
#endif /* HTANCHOR_H */
Packit f574b8
Packit f574b8
#ifdef __cplusplus
Packit f574b8
extern "C" {
Packit f574b8
#endif
Packit f574b8
    typedef struct {
Packit f574b8
	char *hl_text;
Packit f574b8
	short hl_x;
Packit f574b8
    } HiliteInfo;
Packit f574b8
Packit f574b8
    typedef struct {
Packit f574b8
	HiliteInfo *hl_info;
Packit f574b8
	HiliteInfo hl_base;
Packit f574b8
	short hl_len;		/* number of strings in this struct */
Packit f574b8
    } HiliteList;
Packit f574b8
Packit f574b8
    typedef struct {
Packit f574b8
	char *lname;
Packit f574b8
	char *target;
Packit f574b8
	char *l_hightext;
Packit f574b8
	BOOL inUnderline;	/* TRUE when this link is in underlined context. */
Packit f574b8
	int lx;
Packit f574b8
	int ly;
Packit f574b8
	int type;		/* Type of link, Forms, WWW, etc. */
Packit f574b8
	int sgml_offset;	/* document offset used in reparsing */
Packit f574b8
	int anchor_number;	/* The anchor number within the HText structure.  */
Packit f574b8
	int anchor_line_num;	/* The anchor line number in the HText structure. */
Packit f574b8
	HiliteList list;
Packit f574b8
	struct _FormInfo *l_form;	/* Pointer to form info. */
Packit f574b8
    } LinkInfo;
Packit f574b8
    extern LinkInfo links[MAXLINKS];
Packit f574b8
    extern int nlinks;
Packit f574b8
Packit f574b8
    typedef struct {
Packit f574b8
	/* FIXME: see DocAddress */
Packit f574b8
	char *title;
Packit f574b8
	char *address;
Packit f574b8
	bstring *post_data;
Packit f574b8
	char *post_content_type;
Packit f574b8
	char *bookmark;
Packit f574b8
	BOOL isHEAD;
Packit f574b8
	BOOL safe;
Packit f574b8
Packit f574b8
	int link;
Packit f574b8
	int line;
Packit f574b8
	BOOL internal_link;	/* whether doc was reached via an internal
Packit f574b8
				   (fragment) link. - kw */
Packit f574b8
#ifdef USE_COLOR_STYLE
Packit f574b8
	char *style;
Packit f574b8
#endif
Packit f574b8
    } DocInfo;
Packit f574b8
Packit f574b8
    typedef struct {
Packit f574b8
	DocInfo hdoc;
Packit f574b8
	int intern_seq_start;	/* indicates which element on the history
Packit f574b8
				   is the start of this sequence of
Packit f574b8
				   "internal links", otherwise -1 */
Packit f574b8
    } HistInfo;
Packit f574b8
Packit f574b8
#define HDOC(n) history[n].hdoc
Packit f574b8
Packit f574b8
    extern int Visited_Links_As;
Packit f574b8
Packit f574b8
#define VISITED_LINKS_AS_FIRST_V 0
Packit f574b8
#define VISITED_LINKS_AS_TREE    1
Packit f574b8
#define VISITED_LINKS_AS_LATEST  2
Packit f574b8
#define VISITED_LINKS_REVERSE    4
Packit f574b8
Packit f574b8
    typedef struct _VisitedLink {
Packit f574b8
	char *title;
Packit f574b8
	char *address;
Packit f574b8
	int level;
Packit f574b8
	struct _VisitedLink *next_tree;
Packit f574b8
	struct _VisitedLink *prev_latest;
Packit f574b8
	struct _VisitedLink *next_latest;
Packit f574b8
	struct _VisitedLink *prev_first;
Packit f574b8
    } VisitedLink;
Packit f574b8
Packit f574b8
    extern HistInfo *history;
Packit f574b8
    extern int nhist;
Packit f574b8
    extern int size_history;
Packit f574b8
Packit f574b8
/******************************************************************************/
Packit f574b8
Packit f574b8
    typedef struct _lynx_list_item_type {
Packit f574b8
	struct _lynx_list_item_type *next;	/* the next item in the linked list */
Packit f574b8
	char *name;		/* a description of the item */
Packit f574b8
	char *menu_name;	/* menu-name for EXTERNAL / EXTERNAL_MENU */
Packit f574b8
	char *command;		/* the command to execute */
Packit f574b8
	BOOL always_enabled;	/* a constant to tell whether or
Packit f574b8
				 * not to disable the printer
Packit f574b8
				 * when the no_print option is on
Packit f574b8
				 */
Packit f574b8
	/* HTML lists: */
Packit f574b8
	BOOL override_action;	/* whether primary action will be
Packit f574b8
				 * overridden by this - e.g. this
Packit f574b8
				 * allows invoking user's MUA when
Packit f574b8
				 * mailto:  link is activated using
Packit f574b8
				 * normal "activate" command.  This
Packit f574b8
				 * field is only examined by code that
Packit f574b8
				 * handles EXTERNAL command.
Packit f574b8
				 */
Packit f574b8
	/* PRINTER lists: */
Packit f574b8
	int pagelen;		/* an integer to store the printer's
Packit f574b8
				 * page length
Packit f574b8
				 */
Packit f574b8
    } lynx_list_item_type;
Packit f574b8
Packit f574b8
    extern lynx_list_item_type *printers;
Packit f574b8
Packit f574b8
/* for download commands */
Packit f574b8
    extern lynx_list_item_type *downloaders;
Packit f574b8
Packit f574b8
/* for upload commands */
Packit f574b8
    extern lynx_list_item_type *uploaders;
Packit f574b8
Packit f574b8
#ifdef USE_EXTERNALS
Packit f574b8
/* for external commands */
Packit f574b8
    extern lynx_list_item_type *externals;
Packit f574b8
#endif
Packit f574b8
Packit f574b8
/******************************************************************************/
Packit f574b8
Packit f574b8
    typedef struct {
Packit f574b8
	const char *name;
Packit f574b8
	int value;
Packit f574b8
    } Config_Enum;
Packit f574b8
Packit f574b8
    typedef int (*ParseFunc) (char *);
Packit f574b8
Packit f574b8
#define ParseUnionMembers \
Packit f574b8
	lynx_list_item_type** add_value; \
Packit f574b8
	BOOLEAN * set_value; \
Packit f574b8
	int *     int_value; \
Packit f574b8
	char **   str_value; \
Packit f574b8
	ParseFunc fun_value; \
Packit f574b8
	long	  def_value; \
Packit f574b8
	HTList**  lst_value
Packit f574b8
Packit f574b8
    typedef union {
Packit f574b8
	ParseUnionMembers;
Packit f574b8
    } ParseUnion;
Packit f574b8
Packit f574b8
#define	PARSE_DEBUG 1
Packit f574b8
#ifdef	PARSE_DEBUG
Packit f574b8
Packit f574b8
#define ParseUnionPtr      Config_Type *
Packit f574b8
#define ParseUnionOf(tbl)  tbl
Packit f574b8
#define ParseData          ParseUnionMembers
Packit f574b8
Packit f574b8
#define UNION_ADD(v) &v,  0,  0,  0,  0,  0,  0
Packit f574b8
#define UNION_SET(v)  0, &v,  0,  0,  0,  0,  0
Packit f574b8
#define UNION_INT(v)  0,  0, &v,  0,  0,  0,  0
Packit f574b8
#define UNION_STR(v)  0,  0,  0, &v,  0,  0,  0
Packit f574b8
#define UNION_ENV(v)  0,  0,  0,  v,  0,  0,  0
Packit f574b8
#define UNION_FUN(v)  0,  0,  0,  0,  v,  0,  0
Packit f574b8
#define UNION_DEF(v)  0,  0,  0,  0,  0,  v,  0
Packit f574b8
#define UNION_LST(v)  0,  0,  0,  0,  0,  0, &v
Packit f574b8
Packit f574b8
#else
Packit f574b8
Packit f574b8
    typedef void *ParseType;
Packit f574b8
Packit f574b8
#define ParseUnionPtr      ParseUnion *
Packit f574b8
#define ParseUnionOf(tbl) (ParseUnionPtr)(&(tbl->value))
Packit f574b8
#define ParseData          ParseType value
Packit f574b8
Packit f574b8
#define UNION_ADD(v) (ParseType)&(v)
Packit f574b8
#define UNION_SET(v) (ParseType)&(v)
Packit f574b8
#define UNION_INT(v) (ParseType)&(v)
Packit f574b8
#define UNION_STR(v) (ParseType)&(v)
Packit f574b8
#define UNION_ENV(v) (ParseType) (v)
Packit f574b8
#define UNION_FUN(v) (ParseType) (v)
Packit f574b8
#define UNION_DEF(v) (ParseType) (v)
Packit f574b8
#define UNION_LST(v) (ParseType)&(v)
Packit f574b8
Packit f574b8
#endif
Packit f574b8
Packit f574b8
#ifdef __cplusplus
Packit f574b8
}
Packit f574b8
#endif
Packit f574b8
#endif				/* LYSTRUCTS_H */